{"version":3,"sources":["swiper.js"],"names":["addLibraryPlugin","lib","fn","swiper","params","firstInstance","this","each","s","Swiper","container","isH","direction","autoplay","autoplayTimeoutId","setTimeout","loop","fixLoop","_slideNext","isEnd","autoplayStopOnLast","stopAutoplay","_slideTo","findElementInEvent","e","selector","el","$","target","is","parents","nodeType","found","index","_el","undefined","length","initObserver","options","ObserverFunc","window","MutationObserver","WebkitMutationObserver","observer","mutations","forEach","mutation","onResize","emit","observe","attributes","childList","characterData","observers","push","handleKeyboard","originalEvent","kc","keyCode","charCode","allowSwipeToNext","allowSwipeToPrev","shiftKey","altKey","ctrlKey","metaKey","document","activeElement","nodeName","toLowerCase","inView","windowScroll","left","pageXOffset","top","pageYOffset","windowWidth","innerWidth","windowHeight","innerHeight","swiperOffset","offset","rtl","scrollLeft","swiperCoord","width","height","i","point","preventDefault","returnValue","slideNext","slidePrev","handleMousewheel","we","mousewheel","event","delta","detail","mousewheelForceToAxis","Math","abs","wheelDeltaX","wheelDeltaY","wheelDelta","deltaX","deltaY","mousewheelInvert","freeMode","position","getWrapperTranslate","maxTranslate","setWrapperTransition","setWrapperTranslate","updateProgress","updateActiveIndex","freeModeSticky","clearTimeout","timeout","slideReset","Date","getTime","lastScrollTime","mousewheelReleaseOnEdges","isBeginning","setParallaxTransform","progress","p","pX","pY","attr","indexOf","parseInt","transform","normalizeEventName","eventName","toUpperCase","substring","defaults","touchEventsTarget","initialSlide","speed","autoplayDisableOnInteraction","freeModeMomentum","freeModeMomentumRatio","freeModeMomentumBounce","freeModeMomentumBounceRatio","setWrapperSize","virtualTranslate","effect","coverflow","rotate","stretch","depth","modifier","slideShadows","cube","shadow","shadowOffset","shadowScale","fade","crossFade","parallax","scrollbar","scrollbarHide","keyboardControl","mousewheelControl","hashnav","spaceBetween","slidesPerView","slidesPerColumn","slidesPerColumnFill","slidesPerGroup","centeredSlides","touchRatio","touchAngle","simulateTouch","shortSwipes","longSwipes","longSwipesRatio","longSwipesMs","followFinger","onlyExternal","threshold","touchMoveStopPropagation","pagination","paginationClickable","paginationHide","paginationBulletRender","resistance","resistanceRatio","nextButton","prevButton","watchSlidesProgress","watchSlidesVisibility","grabCursor","preventClicks","preventClicksPropagation","slideToClickedSlide","lazyLoading","lazyLoadingInPrevNext","lazyLoadingOnTransitionStart","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlides","control","controlInverse","swipeHandler","noSwiping","noSwipingClass","slideClass","slideActiveClass","slideVisibleClass","slideDuplicateClass","slideNextClass","slidePrevClass","wrapperClass","bulletClass","bulletActiveClass","buttonDisabledClass","paginationHiddenClass","observeParents","a11y","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","runCallbacksOnInit","initialVirtualTranslate","def","deepDef","version","classNames","Dom7","Zepto","jQuery","data","support","flexbox","transforms3d","touch","wrapper","children","paginationContainer","addClass","dir","css","wrongRTL","device","android","join","translate","velocity","lockSwipeToNext","lockSwipeToPrev","lockSwipes","unlockSwipeToNext","unlockSwipeToPrev","unlockSwipes","style","cursor","imagesToLoad","imagesLoaded","loadImage","imgElement","src","checkForComplete","callback","onReady","image","complete","Image","onload","onerror","_onReady","update","find","currentSrc","getAttribute","autoplaying","autoplayPaused","startAutoplay","internal","pauseAutoplay","transitionEnd","minTranslate","snapGrid","updateContainerSize","clientWidth","clientHeight","size","updateSlidesSize","slides","slidesGrid","slidesSizesGrid","slidePosition","prevSlideSize","parseFloat","replace","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesNumberEvenToRows","floor","ceil","slideSize","slidesPerRow","numFullColumns","slide","eq","newSlideOrderIndex","column","row","-webkit-box-ordinal-group","-moz-box-ordinal-group","-ms-flex-order","-webkit-order","order","margin-top","outerWidth","outerHeight","swiperSlideSize","max","newSlidesGrid","updateSlidesOffset","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","getBoundingClientRect","removeClass","slideCenterOffset","slideProgress","slideBefore","slideAfter","isVisible","translatesDiff","newActiveIndex","snapIndex","activeIndex","previousIndex","updateClasses","activeSlide","next","prev","bullets","bulletIndex","disable","enable","updatePagination","bulletsHTML","numberOfBullets","html","updateTranslate","forceSetTranslate","newTranslate","min","set","translated","slideTo","forceUpdatePagination","desktopEvents","navigator","pointerEnabled","msPointerEnabled","touchEvents","start","move","end","initEvents","detach","actionDom","action","moveCapture","nested","browser","ie","onTouchStart","onTouchMove","onTouchEnd","ios","onClickNext","onEnterKey","onClickPrev","onClickIndex","attachEvents","detachEvents","allowClick","animating","stopPropagation","stopImmediatePropagation","updateClickedSlide","slideFound","clickedSlide","clickedIndex","realIndex","slideToIndex","duplicatedSlides","isTouched","isMoved","touchStartTime","isScrolling","currentTranslate","startTranslate","allowThresholdMove","clickTimeout","allowMomentumBounce","formElements","lastClickTime","now","velocities","touches","startX","startY","currentX","currentY","diff","isTouchEvent","startMoving","type","which","targetTouches","pageX","pageY","swipeDirection","blur","preventedByNestedSwiper","atan2","PI","ieTouch","trigger","disableParentSwiper","pow","time","touchEndTime","timeDiff","hasClass","toggleClass","currentPos","lastMoveEvent","pop","velocityEvent","distance","momentumDuration","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","nextSlide","j","onTransitionStart","onTransitionEnd","stopIndex","groupSize","ratio","slideIndex","runCallbacks","lazy","setHash","clientLeft","_slidePrev","duration","byController","transition","effects","setTransition","controller","x","y","z","setTranslate","getTranslate","axis","matrix","curTransform","curStyle","transformMatrix","getComputedStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","getPropertyValue","toString","split","m41","m42","initObservers","containerParents","disconnectObservers","disconnect","createLoop","remove","prependSlides","appendSlides","append","cloneNode","prepend","destroyLoop","removeAttr","newIndex","appendSlide","prependSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","tx","ty","slideOpacity","opacity","eventTriggered","triggerEvents","cubeShadow","wrapperRotate","slideAngle","round","tz","shadowBefore","shadowAfter","-webkit-transform-origin","-moz-transform-origin","-ms-transform-origin","transform-origin","shadowAngle","multiplier","sin","cos","scale1","scale2","zFactor","isSafari","isUiWebView","center","slideOffset","offsetMultiplier","rotateY","rotateX","translateZ","translateY","translateX","slideTransform","zIndex","ws","perspectiveOrigin","initialImageLoaded","loadImageInSlide","loadInDuplicate","img","add","_img","background","slideOriginalIndex","originalSlide","duplicatedSlide","load","prevSlide","sb","track","drag","trackSize","offsetWidth","offsetHeight","divider","moveDivider","dragSize","display","newPos","newSize","setControlledTranslate","c","controlledTranslate","controlled","isArray","setControlledTransition","init","initialized","hash","location","slideHash","disableKeyboardControl","off","enableKeyboardControl","on","onmousewheel","WheelEvent","disableMousewheelControl","enableMousewheelControl","parallaxDuration","_plugins","plugin","plugins","callPlugins","arguments","emitterEventListeners","handler","splice","once","_handler","makeFocusable","$el","tabIndex","addRole","role","addLabel","label","notify","lastSlideMsg","nextSlideMsg","firstSlideMsg","prevSlideMsg","liveRegion","message","notification","destroy","cleanupStyles","deleteInstance","prototype","ua","userAgent","test","arr","Object","apply","msMaxTouchPoints","maxTouchPoints","match","ipad","iphone","Modernizr","DocumentTouch","csstransforms3d","div","createElement","styles","_this","context","els","tempParent","trim","toCreate","innerHTML","childNodes","querySelectorAll","getElementById","className","classes","classList","contains","toggle","attrs","value","setAttribute","attrName","removeAttribute","key","dataKey","dom7ElementDataStorage","elStyle","webkitTransitionDuration","MsTransitionDuration","msTransitionDuration","MozTransitionDuration","OTransitionDuration","transitionDuration","targetSelector","listener","capture","handleLiveEvent","call","k","events","addEventListener","dom7LiveListeners","liveListener","removeEventListener","proxy","dom","eventData","evt","CustomEvent","bubbles","cancelable","createEvent","initEvent","dispatchEvent","fireCallBack","includeMargins","box","body","clientTop","scrollTop","props","prop","compareWith","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","child","previousSibling","returnIndex","newChild","tempDiv","firstChild","appendChild","insertBefore","before","parentNode","insertAfter","after","nextSibling","nextElementSibling","nextAll","nextEls","previousElementSibling","prevAll","prevEls","parent","unique","foundElements","removeChild","toAdd","swiperDomPlugins","domLib","module","exports","define","amd"],"mappings":"CAcA,WACI,YA2oHA,SAASA,GAAiBC,GACtBA,EAAIC,GAAGC,OAAS,SAAUC,GACtB,GAAIC,EAKJ,OAJAJ,GAAIK,MAAMC,KAAK,WACX,GAAIC,GAAI,GAAIC,GAAOH,KAAMF,EACpBC,KAAeA,EAAgBG,KAEjCH,GA9oHf,GAAII,GAAS,SAAUC,EAAWN,GA6R9B,QAASO,KACL,MAA8B,eAAvBH,EAAEJ,OAAOQ,UAgHpB,QAASC,KACLL,EAAEM,kBAAoBC,WAAW,WACzBP,EAAEJ,OAAOY,MACTR,EAAES,UACFT,EAAEU,cAGGV,EAAEW,MAIEf,EAAOgB,mBAIRZ,EAAEa,eAHFb,EAAEc,SAAS,GAJfd,EAAEU,cAWXV,EAAEJ,OAAOS,UA6kBhB,QAASU,GAAmBC,EAAGC,GAC3B,GAAIC,GAAKC,EAAEH,EAAEI,OACb,KAAKF,EAAGG,GAAGJ,GACP,GAAwB,gBAAbA,GACPC,EAAKA,EAAGI,QAAQL,OAEf,IAAIA,EAASM,SAAU,CACxB,GAAIC,EAIJ,OAHAN,GAAGI,UAAUvB,KAAK,SAAU0B,EAAOC,GAC3BA,IAAQT,IAAUO,EAAQP,KAE7BO,EACOP,EADOU,OAI3B,MAAkB,KAAdT,EAAGU,OACID,OAEJT,EAAG,GA+uBd,QAASW,GAAaT,EAAQU,GAC1BA,EAAUA,KAEV,IAAIC,GAAeC,OAAOC,kBAAoBD,OAAOE,uBACjDC,EAAW,GAAIJ,GAAa,SAAUK,GACtCA,EAAUC,QAAQ,SAAUC,GACxBtC,EAAEuC,UAAS,GACXvC,EAAEwC,KAAK,mBAAoBxC,EAAGsC,MAItCH,GAASM,QAAQrB,GACbsB,WAA0C,mBAAvBZ,GAAQY,YAA6B,EAAOZ,EAAQY,WACvEC,UAAwC,mBAAtBb,GAAQa,WAA4B,EAAOb,EAAQa,UACrEC,cAAgD,mBAA1Bd,GAAQc,eAAgC,EAAOd,EAAQc,gBAGjF5C,EAAE6C,UAAUC,KAAKX,GAopBrB,QAASY,GAAe/B,GAChBA,EAAEgC,gBAAehC,EAAIA,EAAEgC,cAC3B,IAAIC,GAAKjC,EAAEkC,SAAWlC,EAAEmC,QAExB,KAAKnD,EAAEJ,OAAOwD,mBAAqBjD,KAAgB,KAAP8C,IAAc9C,KAAgB,KAAP8C,GAC/D,OAAO,CAEX,KAAKjD,EAAEJ,OAAOyD,mBAAqBlD,KAAgB,KAAP8C,IAAc9C,KAAgB,KAAP8C,GAC/D,OAAO,CAEX,MAAIjC,EAAEsC,UAAYtC,EAAEuC,QAAUvC,EAAEwC,SAAWxC,EAAEyC,SAGzCC,SAASC,eAAiBD,SAASC,cAAcC,WAA+D,UAAlDF,SAASC,cAAcC,SAASC,eAA+E,aAAlDH,SAASC,cAAcC,SAASC,gBAA/J,CAGA,GAAW,KAAPZ,GAAoB,KAAPA,GAAoB,KAAPA,GAAoB,KAAPA,EAAW,CAClD,GAAIa,IAAS,CAEb,IAAI9D,EAAEE,UAAUoB,QAAQ,iBAAiBM,OAAS,GAA4D,IAAvD5B,EAAEE,UAAUoB,QAAQ,wBAAwBM,OAC/F,MAEJ,IAAImC,IACAC,KAAMhC,OAAOiC,YACbC,IAAKlC,OAAOmC,aAEZC,EAAcpC,OAAOqC,WACrBC,EAAetC,OAAOuC,YACtBC,EAAexE,EAAEE,UAAUuE,QAC3BzE,GAAE0E,MAAKF,EAAaR,KAAOQ,EAAaR,KAAOhE,EAAEE,UAAU,GAAGyE,WAOlE,KAAK,GANDC,KACCJ,EAAaR,KAAMQ,EAAaN,MAChCM,EAAaR,KAAOhE,EAAE6E,MAAOL,EAAaN,MAC1CM,EAAaR,KAAMQ,EAAaN,IAAMlE,EAAE8E,SACxCN,EAAaR,KAAOhE,EAAE6E,MAAOL,EAAaN,IAAMlE,EAAE8E,SAE9CC,EAAI,EAAGA,EAAIH,EAAYhD,OAAQmD,IAAK,CACzC,GAAIC,GAAQJ,EAAYG,EAEpBC,GAAM,IAAMjB,EAAaC,MAAQgB,EAAM,IAAMjB,EAAaC,KAAOI,GACjEY,EAAM,IAAMjB,EAAaG,KAAOc,EAAM,IAAMjB,EAAaG,IAAMI,IAE/DR,GAAS,GAIjB,IAAKA,EAAQ,OAEb3D,MACW,KAAP8C,GAAoB,KAAPA,KACTjC,EAAEiE,eAAgBjE,EAAEiE,iBACnBjE,EAAEkE,aAAc,IAEb,KAAPjC,IAAcjD,EAAE0E,KAAgB,KAAPzB,GAAajD,EAAE0E,MAAM1E,EAAEmF,aACzC,KAAPlC,IAAcjD,EAAE0E,KAAgB,KAAPzB,GAAajD,EAAE0E,MAAM1E,EAAEoF,eAG1C,KAAPnC,GAAoB,KAAPA,KACTjC,EAAEiE,eAAgBjE,EAAEiE,iBACnBjE,EAAEkE,aAAc,GAEd,KAAPjC,GAAWjD,EAAEmF,YACN,KAAPlC,GAAWjD,EAAEoF,cAgCzB,QAASC,GAAiBrE,GAClBA,EAAEgC,gBAAehC,EAAIA,EAAEgC,cAC3B,IAAIsC,GAAKtF,EAAEuF,WAAWC,MAClBC,EAAQ,CAEZ,IAAIzE,EAAE0E,OAAQD,GAASzE,EAAE0E,WAEpB,IAAW,eAAPJ,EACL,GAAItF,EAAEJ,OAAO+F,sBACT,GAAIxF,IAAO,CACP,KAAIyF,KAAKC,IAAI7E,EAAE8E,aAAeF,KAAKC,IAAI7E,EAAE+E,cACpC,MADkDN,GAAQzE,EAAE8E,gBAGhE,CACD,KAAIF,KAAKC,IAAI7E,EAAE+E,aAAeH,KAAKC,IAAI7E,EAAE8E,cACpC,MADkDL,GAAQzE,EAAE+E,gBAKrEN,GAAQzE,EAAEgF,eAIb,IAAW,mBAAPV,EAAyBG,GAASzE,EAAE0E,WAExC,IAAW,UAAPJ,EACL,GAAItF,EAAEJ,OAAO+F,sBACT,GAAIxF,IAAO,CACP,KAAIyF,KAAKC,IAAI7E,EAAEiF,QAAUL,KAAKC,IAAI7E,EAAEkF,SAC/B,MADwCT,IAASzE,EAAEiF,WAGvD,CACD,KAAIL,KAAKC,IAAI7E,EAAEkF,QAAUN,KAAKC,IAAI7E,EAAEiF,SAC/B,MADwCR,IAASzE,EAAEkF,WAK5DT,GAAQG,KAAKC,IAAI7E,EAAEiF,QAAUL,KAAKC,IAAI7E,EAAEkF,SAAYlF,EAAEiF,QAAWjF,EAAEkF,MAM3E,IAFIlG,EAAEJ,OAAOuG,mBAAkBV,GAASA,GAEnCzF,EAAEJ,OAAOwG,SAcT,CAGD,GAAIC,GAAWrG,EAAEsG,sBAAwBb,CAkBzC,IAhBIY,EAAW,IAAGA,EAAW,GACzBA,EAAWrG,EAAEuG,iBAAgBF,EAAWrG,EAAEuG,gBAE9CvG,EAAEwG,qBAAqB,GACvBxG,EAAEyG,oBAAoBJ,GACtBrG,EAAE0G,iBACF1G,EAAE2G,oBAEE3G,EAAEJ,OAAOgH,iBACTC,aAAa7G,EAAEuF,WAAWuB,SAC1B9G,EAAEuF,WAAWuB,QAAUvG,WAAW,WAC9BP,EAAE+G,cACH,MAIU,IAAbV,GAAkBA,IAAarG,EAAEuG,eAAgB,WAnCjC,CACpB,IAAI,GAAKvE,QAAOgF,MAAQC,UAAYjH,EAAEuF,WAAW2B,eAAiB,GAC9D,GAAY,EAARzB,EACA,GAAKzF,EAAEW,OACF,GAAIX,EAAEJ,OAAOuH,yBAA0B,OAAO,MADrCnH,GAAEmF,gBAIhB,IAAKnF,EAAEoH,aACF,GAAIpH,EAAEJ,OAAOuH,yBAA0B,OAAO,MAD/BnH,GAAEoF,WAI9BpF,GAAEuF,WAAW2B,gBAAiB,GAAKlF,QAAOgF,MAAQC,UA8BtD,MAJIjH,GAAEJ,OAAOS,UAAUL,EAAEa,eAErBG,EAAEiE,eAAgBjE,EAAEiE,iBACnBjE,EAAEkE,aAAc,GACd,EAiBX,QAASmC,GAAqBnG,EAAIoG,GAC9BpG,EAAKC,EAAED,EACP,IAAIqG,GAAGC,EAAIC,CAEXF,GAAIrG,EAAGwG,KAAK,yBAA2B,IACvCF,EAAKtG,EAAGwG,KAAK,0BACbD,EAAKvG,EAAGwG,KAAK,0BACTF,GAAMC,GACND,EAAKA,GAAM,IACXC,EAAKA,GAAM,KAGPtH,KACAqH,EAAKD,EACLE,EAAK,MAGLA,EAAKF,EACLC,EAAK,KAITA,EADA,EAAKG,QAAQ,MAAQ,EAChBC,SAASJ,EAAI,IAAMF,EAAW,IAG9BE,EAAKF,EAAW,KAGrBG,EADA,EAAKE,QAAQ,MAAQ,EAChBC,SAASH,EAAI,IAAMH,EAAW,IAG9BG,EAAKH,EAAW,KAEzBpG,EAAG2G,UAAU,eAAiBL,EAAK,KAAOC,EAAK,SAgDnD,QAASK,GAAoBC,GASzB,MARgC,KAA5BA,EAAUJ,QAAQ,QAEdI,EADAA,EAAU,KAAOA,EAAU,GAAGC,cAClB,KAAOD,EAAU,GAAGC,cAAgBD,EAAUE,UAAU,GAGxD,KAAOF,GAGpBA,EAhrFX,KAAMjI,eAAgBG,IAAS,MAAO,IAAIA,GAAOC,EAAWN,EAE5D,IAAIsI,IACA9H,UAAW,aACX+H,kBAAmB,YACnBC,aAAc,EACdC,MAAO,IAEPhI,UAAU,EACViI,8BAA8B,EAE9BlC,UAAU,EACVmC,kBAAkB,EAClBC,sBAAuB,EACvBC,wBAAwB,EACxBC,4BAA6B,EAC7B9B,gBAAgB,EAEhB+B,gBAAgB,EAEhBC,kBAAkB,EAElBC,OAAQ,QACRC,WACIC,OAAQ,GACRC,QAAS,EACTC,MAAO,IACPC,SAAU,EACVC,cAAe,GAEnBC,MACID,cAAc,EACdE,QAAQ,EACRC,aAAc,GACdC,YAAa,KAEjBC,MACIC,WAAW,GAGfC,UAAU,EAEVC,UAAW,KACXC,eAAe,EAEfC,iBAAiB,EACjBC,mBAAmB,EACnB3C,0BAA0B,EAC1BhB,kBAAkB,EAClBR,uBAAuB,EAEvBoE,SAAS,EAETC,aAAc,EACdC,cAAe,EACfC,gBAAiB,EACjBC,oBAAqB,SACrBC,eAAgB,EAChBC,gBAAgB,EAEhBC,WAAY,EACZC,WAAY,GACZC,eAAe,EACfC,aAAa,EACbC,YAAY,EACZC,gBAAiB,GACjBC,aAAc,IACdC,cAAc,EACdC,cAAc,EACdC,UAAW,EACXC,0BAA0B,EAE1BC,WAAY,KACZC,qBAAqB,EACrBC,gBAAgB,EAChBC,uBAAwB,KAExBC,YAAY,EACZC,gBAAiB,IAEjBC,WAAY,KACZC,WAAY,KAEZC,qBAAqB,EACrBC,uBAAuB,EAEvBC,YAAY,EAEZC,eAAe,EACfC,0BAA0B,EAC1BC,qBAAqB,EAErBC,aAAa,EACbC,uBAAuB,EACvBC,8BAA8B,EAE9BC,eAAe,EACfC,qBAAqB,EAErB3L,MAAM,EACN4L,qBAAsB,EACtBC,aAAc,KAEdC,QAAS3K,OACT4K,gBAAgB,EAEhBlJ,kBAAkB,EAClBD,kBAAkB,EAClBoJ,aAAc,KACdC,WAAW,EACXC,eAAgB,oBAEhBC,WAAY,eACZC,iBAAkB,sBAClBC,kBAAmB,uBACnBC,oBAAqB,yBACrBC,eAAgB,oBAChBC,eAAgB,oBAChBC,aAAc,iBACdC,YAAa,2BACbC,kBAAmB,kCACnBC,oBAAqB,yBACrBC,sBAAuB,2BAEvBlL,UAAU,EACVmL,gBAAgB,EAEhBC,MAAM,EACNC,iBAAkB,iBAClBC,iBAAkB,aAClBC,kBAAmB,0BACnBC,iBAAkB,yBAElBC,oBAAoB,GA8BpBC,EAA0BjO,GAAUA,EAAOgJ,gBAE/ChJ,GAASA,KACT,KAAK,GAAIkO,KAAO5F,GACZ,GAA2B,mBAAhBtI,GAAOkO,GACdlO,EAAOkO,GAAO5F,EAAS4F,OAEtB,IAA2B,gBAAhBlO,GAAOkO,GACnB,IAAK,GAAIC,KAAW7F,GAAS4F,GACW,mBAAzBlO,GAAOkO,GAAKC,KACnBnO,EAAOkO,GAAKC,GAAW7F,EAAS4F,GAAKC,GAOrD,IAAI/N,GAAIF,IAGRE,GAAEgO,QAAU,QAGZhO,EAAEJ,OAASA,EAGXI,EAAEiO,aAIF,IAAI9M,EAOJ,IALIA,EADgB,mBAAT+M,GACHlM,OAAOkM,MAAQlM,OAAOmM,OAASnM,OAAOoM,OAGtCF,EAEH/M,IAGLnB,EAAEmB,EAAIA,EAINnB,EAAEE,UAAYiB,EAAEjB,GACW,IAAvBF,EAAEE,UAAU0B,QAAhB,CACA,GAAI5B,EAAEE,UAAU0B,OAAS,EAIrB,WAHA5B,GAAEE,UAAUH,KAAK,WACb,GAAIE,GAAOH,KAAMF,IAMzBI,GAAEE,UAAU,GAAGP,OAASK,EACxBA,EAAEE,UAAUmO,KAAK,SAAUrO,GAE3BA,EAAEiO,WAAWnL,KAAK,oBAAsB9C,EAAEJ,OAAOQ,WAE7CJ,EAAEJ,OAAOwG,UACTpG,EAAEiO,WAAWnL,KAAK,8BAEjB9C,EAAEsO,QAAQC,UACXvO,EAAEiO,WAAWnL,KAAK,+BAClB9C,EAAEJ,OAAOsK,gBAAkB,IAG3BlK,EAAEJ,OAAO8J,UAAY1J,EAAEJ,OAAO8L,yBAC9B1L,EAAEJ,OAAO6L,qBAAsB,IAG9B,OAAQ,aAAa9D,QAAQ3H,EAAEJ,OAAOiJ,SAAW,IAC9C7I,EAAEsO,QAAQE,cACVxO,EAAEJ,OAAO6L,qBAAsB,EAC/BzL,EAAEiO,WAAWnL,KAAK,wBAGlB9C,EAAEJ,OAAOiJ,OAAS,SAGF,UAApB7I,EAAEJ,OAAOiJ,QACT7I,EAAEiO,WAAWnL,KAAK,oBAAsB9C,EAAEJ,OAAOiJ,QAE7B,SAApB7I,EAAEJ,OAAOiJ,SACT7I,EAAEJ,OAAO0L,gBAAkB,EAC3BtL,EAAEJ,OAAOqK,cAAgB,EACzBjK,EAAEJ,OAAOsK,gBAAkB,EAC3BlK,EAAEJ,OAAOwK,eAAiB,EAC1BpK,EAAEJ,OAAOyK,gBAAiB,EAC1BrK,EAAEJ,OAAOoK,aAAe,EACxBhK,EAAEJ,OAAOgJ,kBAAmB,EAC5B5I,EAAEJ,OAAO+I,gBAAiB,GAEN,SAApB3I,EAAEJ,OAAOiJ,SACT7I,EAAEJ,OAAOqK,cAAgB,EACzBjK,EAAEJ,OAAOsK,gBAAkB,EAC3BlK,EAAEJ,OAAOwK,eAAiB,EAC1BpK,EAAEJ,OAAO6L,qBAAsB,EAC/BzL,EAAEJ,OAAOoK,aAAe,EACe,mBAA5B6D,KACP7N,EAAEJ,OAAOgJ,kBAAmB,IAKhC5I,EAAEJ,OAAO+L,YAAc3L,EAAEsO,QAAQG,QACjCzO,EAAEJ,OAAO+L,YAAa,GAI1B3L,EAAE0O,QAAU1O,EAAEE,UAAUyO,SAAS,IAAM3O,EAAEJ,OAAOqN,cAG5CjN,EAAEJ,OAAOqL,aACTjL,EAAE4O,oBAAsBzN,EAAEnB,EAAEJ,OAAOqL,YAC/BjL,EAAEJ,OAAOsL,qBACTlL,EAAE4O,oBAAoBC,SAAS,gCAUvC7O,EAAE0E,IAAMvE,MAA+C,QAArCH,EAAEE,UAAU,GAAG4O,IAAIjL,eAA4D,QAAjC7D,EAAEE,UAAU6O,IAAI,cAC5E/O,EAAE0E,KACF1E,EAAEiO,WAAWnL,KAAK,wBAIlB9C,EAAE0E,MACF1E,EAAEgP,SAAwC,gBAA7BhP,EAAE0O,QAAQK,IAAI,YAI3B/O,EAAEJ,OAAOsK,gBAAkB,GAC3BlK,EAAEiO,WAAWnL,KAAK,6BAIlB9C,EAAEiP,OAAOC,SACTlP,EAAEiO,WAAWnL,KAAK,4BAItB9C,EAAEE,UAAU2O,SAAS7O,EAAEiO,WAAWkB,KAAK,MAGvCnP,EAAEoP,UAAY,EAGdpP,EAAEsH,SAAW,EAGbtH,EAAEqP,SAAW,EAGbrP,EAAEsP,gBAAkB,WAChBtP,EAAEJ,OAAOwD,kBAAmB,GAEhCpD,EAAEuP,gBAAkB,WAChBvP,EAAEJ,OAAOyD,kBAAmB,GAEhCrD,EAAEwP,WAAa,WACXxP,EAAEJ,OAAOwD,iBAAmBpD,EAAEJ,OAAOyD,kBAAmB,GAE5DrD,EAAEyP,kBAAoB,WAClBzP,EAAEJ,OAAOwD,kBAAmB,GAEhCpD,EAAE0P,kBAAoB,WAClB1P,EAAEJ,OAAOyD,kBAAmB,GAEhCrD,EAAE2P,aAAe,WACb3P,EAAEJ,OAAOwD,iBAAmBpD,EAAEJ,OAAOyD,kBAAmB,GAOxDrD,EAAEJ,OAAO+L,aACT3L,EAAEE,UAAU,GAAG0P,MAAMC,OAAS,OAC9B7P,EAAEE,UAAU,GAAG0P,MAAMC,OAAS,eAC9B7P,EAAEE,UAAU,GAAG0P,MAAMC,OAAS,YAC9B7P,EAAEE,UAAU,GAAG0P,MAAMC,OAAS,QAKlC7P,EAAE8P,gBACF9P,EAAE+P,aAAe,EAEjB/P,EAAEgQ,UAAY,SAAUC,EAAYC,EAAKC,EAAkBC,GAEvD,QAASC,KACDD,GAAUA,IAFlB,GAAIE,EAICL,GAAWM,UAAaJ,EAWzBE,IAVIH,GACAI,EAAQ,GAAItO,QAAOwO,MACnBF,EAAMG,OAASJ,EACfC,EAAMI,QAAUL,EAChBC,EAAMJ,IAAMA,GAEZG,KAOZrQ,EAAEkM,cAAgB,WAEd,QAASyE,KACY,mBAAN3Q,IAA2B,OAANA,IACT2B,SAAnB3B,EAAE+P,cAA4B/P,EAAE+P,eAChC/P,EAAE+P,eAAiB/P,EAAE8P,aAAalO,SAC9B5B,EAAEJ,OAAOuM,qBAAqBnM,EAAE4Q,SACpC5Q,EAAEwC,KAAK,gBAAiBxC,KANhCA,EAAE8P,aAAe9P,EAAEE,UAAU2Q,KAAK,MASlC,KAAK,GAAI9L,GAAI,EAAGA,EAAI/E,EAAE8P,aAAalO,OAAQmD,IACvC/E,EAAEgQ,UAAUhQ,EAAE8P,aAAa/K,GAAK/E,EAAE8P,aAAa/K,GAAG+L,YAAc9Q,EAAE8P,aAAa/K,GAAGgM,aAAa,QAAS,EAAMJ,IAOtH3Q,EAAEM,kBAAoBqB,OACtB3B,EAAEgR,aAAc,EAChBhR,EAAEiR,gBAAiB,EAsBnBjR,EAAEkR,cAAgB,WACd,MAAmC,mBAAxBlR,GAAEM,mBAA0C,EAClDN,EAAEJ,OAAOS,SACVL,EAAEgR,aAAoB,GAC1BhR,EAAEgR,aAAc,EAChBhR,EAAEwC,KAAK,kBAAmBxC,OAC1BK,OAJ+B,GAMnCL,EAAEa,aAAe,SAAUsQ,GAClBnR,EAAEM,oBACHN,EAAEM,mBAAmBuG,aAAa7G,EAAEM,mBACxCN,EAAEgR,aAAc,EAChBhR,EAAEM,kBAAoBqB,OACtB3B,EAAEwC,KAAK,iBAAkBxC,KAE7BA,EAAEoR,cAAgB,SAAU/I,GACpBrI,EAAEiR,iBACFjR,EAAEM,mBAAmBuG,aAAa7G,EAAEM,mBACxCN,EAAEiR,gBAAiB,EACL,IAAV5I,GACArI,EAAEiR,gBAAiB,EACnB5Q,KAGAL,EAAE0O,QAAQ2C,cAAc,WACfrR,IACLA,EAAEiR,gBAAiB,EACdjR,EAAEgR,YAIH3Q,IAHAL,EAAEa,oBAWlBb,EAAEsR,aAAe,WACb,OAAStR,EAAEuR,SAAS,IAExBvR,EAAEuG,aAAe,WACb,OAASvG,EAAEuR,SAASvR,EAAEuR,SAAS3P,OAAS,IAK5C5B,EAAEwR,oBAAsB,WACpB,GAAI3M,GAAOC,CAEPD,GAD0B,mBAAnB7E,GAAEJ,OAAOiF,MACR7E,EAAEJ,OAAOiF,MAGT7E,EAAEE,UAAU,GAAGuR,YAGvB3M,EAD2B,mBAApB9E,GAAEJ,OAAOkF,OACP9E,EAAEJ,OAAOkF,OAGT9E,EAAEE,UAAU,GAAGwR,aAEd,IAAV7M,GAAe1E,KAAoB,IAAX2E,IAAiB3E,MAG7CH,EAAE6E,MAAQA,EACV7E,EAAE8E,OAASA,EACX9E,EAAE2R,KAAOxR,IAAQH,EAAE6E,MAAQ7E,EAAE8E,SAGjC9E,EAAE4R,iBAAmB,WACjB5R,EAAE6R,OAAS7R,EAAE0O,QAAQC,SAAS,IAAM3O,EAAEJ,OAAO+M,YAC7C3M,EAAEuR,YACFvR,EAAE8R,cACF9R,EAAE+R,kBAEF,IAEIhN,GAFAiF,EAAehK,EAAEJ,OAAOoK,aACxBgI,EAAgB,EAEhBC,EAAgB,EAChBxQ,EAAQ,CACgB,iBAAjBuI,IAA6BA,EAAarC,QAAQ,MAAQ,IACjEqC,EAAekI,WAAWlI,EAAamI,QAAQ,IAAK,KAAO,IAAMnS,EAAE2R,MAGvE3R,EAAEoS,aAAepI,EAENhK,EAAE6R,OAAO9C,IAAhB/O,EAAE0E,KAAmB2N,WAAY,GAAIC,UAAW,KACjCC,YAAa,GAAIC,aAAc,IAElD,IAAIC,EACAzS,GAAEJ,OAAOsK,gBAAkB,IAEvBuI,EADA7M,KAAK8M,MAAM1S,EAAE6R,OAAOjQ,OAAS5B,EAAEJ,OAAOsK,mBAAqBlK,EAAE6R,OAAOjQ,OAAS5B,EAAEJ,OAAOsK,gBAC7DlK,EAAE6R,OAAOjQ,OAGTgE,KAAK+M,KAAK3S,EAAE6R,OAAOjQ,OAAS5B,EAAEJ,OAAOsK,iBAAmBlK,EAAEJ,OAAOsK,gBAKlG,IAAI0I,GACA1I,EAAkBlK,EAAEJ,OAAOsK,gBAC3B2I,EAAeJ,EAAyBvI,EACxC4I,EAAiBD,GAAgB7S,EAAEJ,OAAOsK,gBAAkB2I,EAAe7S,EAAE6R,OAAOjQ,OACxF,KAAKmD,EAAI,EAAGA,EAAI/E,EAAE6R,OAAOjQ,OAAQmD,IAAK,CAClC6N,EAAY,CACZ,IAAIG,GAAQ/S,EAAE6R,OAAOmB,GAAGjO,EACxB,IAAI/E,EAAEJ,OAAOsK,gBAAkB,EAAG,CAE9B,GAAI+I,GACAC,EAAQC,CACyB,YAAjCnT,EAAEJ,OAAOuK,qBACT+I,EAAStN,KAAK8M,MAAM3N,EAAImF,GACxBiJ,EAAMpO,EAAImO,EAAShJ,GACfgJ,EAASJ,GAAmBI,IAAWJ,GAAkBK,IAAQjJ,EAAgB,MAC3EiJ,GAAOjJ,IACTiJ,EAAM,EACND,KAGRD,EAAqBC,EAASC,EAAMV,EAAyBvI,EAC7D6I,EACKhE,KACGqE,4BAA6BH,EAC7BI,yBAA0BJ,EAC1BK,iBAAkBL,EAClBM,gBAAiBN,EACjBO,MAASP,MAIjBE,EAAMvN,KAAK8M,MAAM3N,EAAI8N,GACrBK,EAASnO,EAAIoO,EAAMN,GAEvBE,EACKhE,KACG0E,aAAuB,IAARN,GAAanT,EAAEJ,OAAOoK,cAAkBhK,EAAEJ,OAAOoK,aAAe,OAElFtC,KAAK,qBAAsBwL,GAC3BxL,KAAK,kBAAmByL,GAGJ,SAAzBJ,EAAMhE,IAAI,aACiB,SAA3B/O,EAAEJ,OAAOqK,cACT2I,EAAYzS,IAAQ4S,EAAMW,YAAW,GAAQX,EAAMY,aAAY,IAG/Df,GAAa5S,EAAE2R,MAAQ3R,EAAEJ,OAAOqK,cAAgB,GAAKD,GAAgBhK,EAAEJ,OAAOqK,cAC1E9J,IACAH,EAAE6R,OAAO9M,GAAG6K,MAAM/K,MAAQ+N,EAAY,KAGtC5S,EAAE6R,OAAO9M,GAAG6K,MAAM9K,OAAS8N,EAAY,MAG/C5S,EAAE6R,OAAO9M,GAAG6O,gBAAkBhB,EAC9B5S,EAAE+R,gBAAgBjP,KAAK8P,GAGnB5S,EAAEJ,OAAOyK,gBACT2H,EAAgBA,EAAgBY,EAAY,EAAIX,EAAgB,EAAIjI,EAC1D,IAANjF,IAASiN,EAAgBA,EAAgBhS,EAAE2R,KAAO,EAAI3H,GACtDpE,KAAKC,IAAImM,GAAiB,OAAUA,EAAgB,GACpD,EAAUhS,EAAEJ,OAAOwK,iBAAmB,GAAGpK,EAAEuR,SAASzO,KAAKkP,GAC7DhS,EAAE8R,WAAWhP,KAAKkP,KAGd,EAAUhS,EAAEJ,OAAOwK,iBAAmB,GAAGpK,EAAEuR,SAASzO,KAAKkP,GAC7DhS,EAAE8R,WAAWhP,KAAKkP,GAClBA,EAAgBA,EAAgBY,EAAY5I,GAGhDhK,EAAEoS,aAAeQ,EAAY5I,EAE7BiI,EAAgBW,EAEhBnR,KAEJzB,EAAEoS,YAAcxM,KAAKiO,IAAI7T,EAAEoS,YAAapS,EAAE2R,KAE1C,IAAImC,EAWJ,IARI9T,EAAE0E,KAAO1E,EAAEgP,WAAiC,UAApBhP,EAAEJ,OAAOiJ,QAA0C,cAApB7I,EAAEJ,OAAOiJ,SAChE7I,EAAE0O,QAAQK,KAAKlK,MAAO7E,EAAEoS,YAAcpS,EAAEJ,OAAOoK,aAAe,SAE7DhK,EAAEsO,QAAQC,SAAWvO,EAAEJ,OAAO+I,iBACpB3I,EAAE0O,QAAQK,IAAjB5O,KAAsB0E,MAAO7E,EAAEoS,YAAcpS,EAAEJ,OAAOoK,aAAe,OACrDlF,OAAQ9E,EAAEoS,YAAcpS,EAAEJ,OAAOoK,aAAe,OAGpEhK,EAAEJ,OAAOsK,gBAAkB,IAC3BlK,EAAEoS,aAAeQ,EAAY5S,EAAEJ,OAAOoK,cAAgByI,EACtDzS,EAAEoS,YAAcxM,KAAK+M,KAAK3S,EAAEoS,YAAcpS,EAAEJ,OAAOsK,iBAAmBlK,EAAEJ,OAAOoK,aAC/EhK,EAAE0O,QAAQK,KAAKlK,MAAO7E,EAAEoS,YAAcpS,EAAEJ,OAAOoK,aAAe,OAC1DhK,EAAEJ,OAAOyK,gBAAgB,CAEzB,IADAyJ,KACK/O,EAAI,EAAGA,EAAI/E,EAAEuR,SAAS3P,OAAQmD,IAC3B/E,EAAEuR,SAASxM,GAAK/E,EAAEoS,YAAcpS,EAAEuR,SAAS,IAAIuC,EAAchR,KAAK9C,EAAEuR,SAASxM,GAErF/E,GAAEuR,SAAWuC,EAKrB,IAAK9T,EAAEJ,OAAOyK,eAAgB,CAE1B,IADAyJ,KACK/O,EAAI,EAAGA,EAAI/E,EAAEuR,SAAS3P,OAAQmD,IAC3B/E,EAAEuR,SAASxM,IAAM/E,EAAEoS,YAAcpS,EAAE2R,MACnCmC,EAAchR,KAAK9C,EAAEuR,SAASxM,GAGtC/E,GAAEuR,SAAWuC,EACTlO,KAAK8M,MAAM1S,EAAEoS,YAAcpS,EAAE2R,MAAQ/L,KAAK8M,MAAM1S,EAAEuR,SAASvR,EAAEuR,SAAS3P,OAAS,KAC/E5B,EAAEuR,SAASzO,KAAK9C,EAAEoS,YAAcpS,EAAE2R,MAGhB,IAAtB3R,EAAEuR,SAAS3P,SAAc5B,EAAEuR,UAAY,IAEb,IAA1BvR,EAAEJ,OAAOoK,cAEMhK,EAAE6R,OAAO9C,IADpB5O,IACIH,EAAE0E,KAAmB2N,WAAYrI,EAAe,OACjCuI,YAAavI,EAAe,OAEhCwI,aAAcxI,EAAe,OAEhDhK,EAAEJ,OAAO6L,qBACTzL,EAAE+T,sBAGV/T,EAAE+T,mBAAqB,WACnB,IAAK,GAAIhP,GAAI,EAAGA,EAAI/E,EAAE6R,OAAOjQ,OAAQmD,IACjC/E,EAAE6R,OAAO9M,GAAGiP,kBAAoB7T,IAAQH,EAAE6R,OAAO9M,GAAGkP,WAAajU,EAAE6R,OAAO9M,GAAGmP,WAOrFlU,EAAEmU,qBAAuB,SAAU/E,GAI/B,GAHyB,mBAAdA,KACPA,EAAYpP,EAAEoP,WAAa,GAEP,IAApBpP,EAAE6R,OAAOjQ,OAAb,CAC6C,mBAAlC5B,GAAE6R,OAAO,GAAGmC,mBAAmChU,EAAE+T,oBAE5D,IAAIK,GAAepU,EAAEJ,OAAOyK,gBAAkB+E,EAAYpP,EAAE2R,KAAO,GAAKvC,CACpEpP,GAAE0E,MAAK0P,EAAepU,EAAEJ,OAAOyK,eAAiB+E,EAAYpP,EAAE2R,KAAO,EAAIvC,EAG7E,EAAmBpP,EAAEE,UAAU,GAAGmU,wBACjBlU,IAAQ,OAAS,MAClBA,IAAQ,QAAU,SAClCH,EAAE6R,OAAOyC,YAAYtU,EAAEJ,OAAOiN,kBAC9B,KAAK,GAAI9H,GAAI,EAAGA,EAAI/E,EAAE6R,OAAOjQ,OAAQmD,IAAK,CACtC,GAAIgO,GAAQ/S,EAAE6R,OAAO9M,GACjBwP,EAAqBvU,EAAEJ,OAAOyK,kBAAmB,EAAQ0I,EAAMa,gBAAkB,EAAI,EACrFY,GAAiBJ,EAAerB,EAAMiB,kBAAoBO,IAAsBxB,EAAMa,gBAAkB5T,EAAEJ,OAAOoK,aACrH,IAAIhK,EAAEJ,OAAO8L,sBAAuB,CAChC,GAAI+I,KAAgBL,EAAerB,EAAMiB,kBAAoBO,GACzDG,EAAaD,EAAczU,EAAE+R,gBAAgBhN,GAC7C4P,EACCF,GAAe,GAAKA,EAAczU,EAAE2R,MACpC+C,EAAa,GAAKA,GAAc1U,EAAE2R,MACnB,GAAf8C,GAAoBC,GAAc1U,EAAE2R,IACrCgD,IACA3U,EAAE6R,OAAOmB,GAAGjO,GAAG8J,SAAS7O,EAAEJ,OAAOiN,mBAGzCkG,EAAMzL,SAAWtH,EAAE0E,KAAO8P,EAAgBA,KAGlDxU,EAAE0G,eAAiB,SAAU0I,GACA,mBAAdA,KACPA,EAAYpP,EAAEoP,WAAa,EAE/B,IAAIwF,GAAiB5U,EAAEuG,eAAiBvG,EAAEsR,cACnB,KAAnBsD,GACA5U,EAAEsH,SAAW,EACbtH,EAAEoH,YAAcpH,EAAEW,OAAQ,IAG1BX,EAAEsH,UAAY8H,EAAYpP,EAAEsR,gBAAkB,EAC9CtR,EAAEoH,YAAcpH,EAAEsH,UAAY,EAC9BtH,EAAEW,MAAQX,EAAEsH,UAAY,GAExBtH,EAAEoH,aAAapH,EAAEwC,KAAK,mBAAoBxC,GAC1CA,EAAEW,OAAOX,EAAEwC,KAAK,aAAcxC,GAE9BA,EAAEJ,OAAO6L,qBAAqBzL,EAAEmU,qBAAqB/E,GACzDpP,EAAEwC,KAAK,aAAcxC,EAAGA,EAAEsH,WAE9BtH,EAAE2G,kBAAoB,WAClB,GACIkO,GAAgB9P,EAAG+P,EADnB1F,EAAYpP,EAAE0E,IAAM1E,EAAEoP,WAAapP,EAAEoP,SAEzC,KAAKrK,EAAI,EAAGA,EAAI/E,EAAE8R,WAAWlQ,OAAQmD,IACE,mBAAxB/E,GAAE8R,WAAW/M,EAAI,GACpBqK,GAAapP,EAAE8R,WAAW/M,IAAMqK,EAAYpP,EAAE8R,WAAW/M,EAAI,IAAM/E,EAAE8R,WAAW/M,EAAI,GAAK/E,EAAE8R,WAAW/M,IAAM,EAC5G8P,EAAiB9P,EAEZqK,GAAapP,EAAE8R,WAAW/M,IAAMqK,EAAYpP,EAAE8R,WAAW/M,EAAI,KAClE8P,EAAiB9P,EAAI,GAIrBqK,GAAapP,EAAE8R,WAAW/M,KAC1B8P,EAAiB9P,IAKR,EAAjB8P,GAAgD,mBAAnBA,MAAgCA,EAAiB,GAMlFC,EAAYlP,KAAK8M,MAAMmC,EAAiB7U,EAAEJ,OAAOwK,gBAC7C0K,GAAa9U,EAAEuR,SAAS3P,SAAQkT,EAAY9U,EAAEuR,SAAS3P,OAAS,GAEhEiT,IAAmB7U,EAAE+U,cAGzB/U,EAAE8U,UAAYA,EACd9U,EAAEgV,cAAgBhV,EAAE+U,YACpB/U,EAAE+U,YAAcF,EAChB7U,EAAEiV,kBAMNjV,EAAEiV,cAAgB,WACdjV,EAAE6R,OAAOyC,YAAYtU,EAAEJ,OAAOgN,iBAAmB,IAAM5M,EAAEJ,OAAOmN,eAAiB,IAAM/M,EAAEJ,OAAOoN,eAChG,IAAIkI,GAAclV,EAAE6R,OAAOmB,GAAGhT,EAAE+U,YAOhC,IALAG,EAAYrG,SAAS7O,EAAEJ,OAAOgN,kBAC9BsI,EAAYC,KAAK,IAAMnV,EAAEJ,OAAO+M,YAAYkC,SAAS7O,EAAEJ,OAAOmN,gBAC9DmI,EAAYE,KAAK,IAAMpV,EAAEJ,OAAO+M,YAAYkC,SAAS7O,EAAEJ,OAAOoN,gBAG1DhN,EAAEqV,SAAWrV,EAAEqV,QAAQzT,OAAS,EAAG,CACnC5B,EAAEqV,QAAQf,YAAYtU,EAAEJ,OAAOuN,kBAC/B,IAAImI,EACAtV,GAAEJ,OAAOY,MACT8U,EAAc1P,KAAK+M,KAAK3S,EAAE+U,YAAc/U,EAAEqM,cAAcrM,EAAEJ,OAAOwK,eAC7DkL,EAActV,EAAE6R,OAAOjQ,OAAS,EAAqB,EAAjB5B,EAAEqM,eACtCiJ,GAA6BtV,EAAE6R,OAAOjQ,OAA0B,EAAjB5B,EAAEqM,cAEjDiJ,EAActV,EAAEqV,QAAQzT,OAAS,IAAG0T,GAA4BtV,EAAEqV,QAAQzT,SAI1E0T,EADuB,mBAAhBtV,GAAE8U,UACK9U,EAAE8U,UAGF9U,EAAE+U,aAAe,EAGnC/U,EAAE4O,oBAAoBhN,OAAS,EAC/B5B,EAAEqV,QAAQtV,KAAK,WACPoB,EAAErB,MAAM2B,UAAY6T,GAAanU,EAAErB,MAAM+O,SAAS7O,EAAEJ,OAAOuN,qBAInEnN,EAAEqV,QAAQrC,GAAGsC,GAAazG,SAAS7O,EAAEJ,OAAOuN,mBAK/CnN,EAAEJ,OAAOY,OACNR,EAAEJ,OAAO4L,aACLxL,EAAEoH,aACFjG,EAAEnB,EAAEJ,OAAO4L,YAAYqD,SAAS7O,EAAEJ,OAAOwN,qBACrCpN,EAAEJ,OAAO2N,MAAQvN,EAAEuN,MAAMvN,EAAEuN,KAAKgI,QAAQpU,EAAEnB,EAAEJ,OAAO4L,eAGvDrK,EAAEnB,EAAEJ,OAAO4L,YAAY8I,YAAYtU,EAAEJ,OAAOwN,qBACxCpN,EAAEJ,OAAO2N,MAAQvN,EAAEuN,MAAMvN,EAAEuN,KAAKiI,OAAOrU,EAAEnB,EAAEJ,OAAO4L,eAG1DxL,EAAEJ,OAAO2L,aACLvL,EAAEW,OACFQ,EAAEnB,EAAEJ,OAAO2L,YAAYsD,SAAS7O,EAAEJ,OAAOwN,qBACrCpN,EAAEJ,OAAO2N,MAAQvN,EAAEuN,MAAMvN,EAAEuN,KAAKgI,QAAQpU,EAAEnB,EAAEJ,OAAO2L,eAGvDpK,EAAEnB,EAAEJ,OAAO2L,YAAY+I,YAAYtU,EAAEJ,OAAOwN,qBACxCpN,EAAEJ,OAAO2N,MAAQvN,EAAEuN,MAAMvN,EAAEuN,KAAKiI,OAAOrU,EAAEnB,EAAEJ,OAAO2L,iBAStEvL,EAAEyV,iBAAmB,WACjB,GAAKzV,EAAEJ,OAAOqL,YACVjL,EAAE4O,qBAAuB5O,EAAE4O,oBAAoBhN,OAAS,EAAG,CAG3D,IAAK,GAFD8T,GAAc,GACdC,EAAkB3V,EAAEJ,OAAOY,KAAOoF,KAAK+M,MAAM3S,EAAE6R,OAAOjQ,OAA0B,EAAjB5B,EAAEqM,cAAoBrM,EAAEJ,OAAOwK,gBAAkBpK,EAAEuR,SAAS3P,OACtHmD,EAAI,EAAO4Q,EAAJ5Q,EAAqBA,IAE7B2Q,GADA1V,EAAEJ,OAAOwL,uBACMpL,EAAEJ,OAAOwL,uBAAuBrG,EAAG/E,EAAEJ,OAAOsN,aAG5C,gBAAkBlN,EAAEJ,OAAOsN,YAAc,WAGhElN,GAAE4O,oBAAoBgH,KAAKF,GAC3B1V,EAAEqV,QAAUrV,EAAE4O,oBAAoBiC,KAAK,IAAM7Q,EAAEJ,OAAOsN,eAM9DlN,EAAE4Q,OAAS,SAAUiF,GASjB,QAASC,KACLC,EAAenQ,KAAKoQ,IAAIpQ,KAAKiO,IAAI7T,EAAEoP,UAAWpP,EAAEuG,gBAAiBvG,EAAEsR,gBACnEtR,EAAEyG,oBAAoBsP,GACtB/V,EAAE2G,oBACF3G,EAAEiV,gBAEN,GAdAjV,EAAEwR,sBACFxR,EAAE4R,mBACF5R,EAAE0G,iBACF1G,EAAEyV,mBACFzV,EAAEiV,gBACEjV,EAAEJ,OAAO+J,WAAa3J,EAAE2J,WACxB3J,EAAE2J,UAAUsM,MAQZJ,EAAiB,CACjB,GAAIK,GAAYH,CACZ/V,GAAEJ,OAAOwG,SACT0P,KAIII,EAD2B,SAA3BlW,EAAEJ,OAAOqK,eAA4BjK,EAAEW,QAAUX,EAAEJ,OAAOyK,eAC7CrK,EAAEmW,QAAQnW,EAAE6R,OAAOjQ,OAAS,EAAG,GAAG,GAAO,GAGzC5B,EAAEmW,QAAQnW,EAAE+U,YAAa,GAAG,GAAO,GAE/CmB,GACDJ,OAUhB9V,EAAEuC,SAAW,SAAU6T,GAQnB,GAPApW,EAAEwR,sBACFxR,EAAE4R,mBACF5R,EAAE0G,kBAC6B,SAA3B1G,EAAEJ,OAAOqK,eAA4BjK,EAAEJ,OAAOwG,UAAYgQ,IAAuBpW,EAAEyV,mBACnFzV,EAAEJ,OAAO+J,WAAa3J,EAAE2J,WACxB3J,EAAE2J,UAAUsM,MAEZjW,EAAEJ,OAAOwG,SAAU,CACnB,GAAI2P,GAAenQ,KAAKoQ,IAAIpQ,KAAKiO,IAAI7T,EAAEoP,UAAWpP,EAAEuG,gBAAiBvG,EAAEsR,eACvEtR,GAAEyG,oBAAoBsP,GACtB/V,EAAE2G,oBACF3G,EAAEiV,oBAGFjV,GAAEiV,gBAC6B,SAA3BjV,EAAEJ,OAAOqK,eAA4BjK,EAAEW,QAAUX,EAAEJ,OAAOyK,eAC1DrK,EAAEmW,QAAQnW,EAAE6R,OAAOjQ,OAAS,EAAG,GAAG,GAAO,GAGzC5B,EAAEmW,QAAQnW,EAAE+U,YAAa,GAAG,GAAO,GAW/C,IAAIsB,IAAiB,YAAa,YAAa,UAC3CrU,QAAOsU,UAAUC,eAAgBF,GAAiB,cAAe,cAAe,aAC3ErU,OAAOsU,UAAUE,mBAAkBH,GAAiB,gBAAiB,gBAAiB,gBAC/FrW,EAAEyW,aACEC,MAAQ1W,EAAEsO,QAAQG,QAAUzO,EAAEJ,OAAO4K,cAAiB,aAAe6L,EAAc,GACnFM,KAAO3W,EAAEsO,QAAQG,QAAUzO,EAAEJ,OAAO4K,cAAgB,YAAc6L,EAAc,GAChFO,IAAM5W,EAAEsO,QAAQG,QAAUzO,EAAEJ,OAAO4K,cAAgB,WAAa6L,EAAc,KAK9ErU,OAAOsU,UAAUC,gBAAkBvU,OAAOsU,UAAUE,oBACpB,cAA/BxW,EAAEJ,OAAOuI,kBAAoCnI,EAAEE,UAAYF,EAAE0O,SAASG,SAAS,cAAgB7O,EAAEJ,OAAOQ,WAI7GJ,EAAE6W,WAAa,SAAUC,GACrB,GAAIC,GAAYD,EAAS,MAAQ,KAC7BE,EAASF,EAAS,sBAAwB,mBAC1C3O,EAAmD,cAA/BnI,EAAEJ,OAAOuI,kBAAoCnI,EAAEE,UAAU,GAAKF,EAAE0O,QAAQ,GAC5FtN,EAASpB,EAAEsO,QAAQG,MAAQtG,EAAoBzE,SAE/CuT,EAAcjX,EAAEJ,OAAOsX,QAAS,GAAO,CAGvClX,GAAEmX,QAAQC,IACVjP,EAAkB6O,GAAQhX,EAAEyW,YAAYC,MAAO1W,EAAEqX,cAAc,GAC/DjW,EAAO4V,GAAQhX,EAAEyW,YAAYE,KAAM3W,EAAEsX,YAAaL,GAClD7V,EAAO4V,GAAQhX,EAAEyW,YAAYG,IAAK5W,EAAEuX,YAAY,KAG5CvX,EAAEsO,QAAQG,QACVtG,EAAkB6O,GAAQhX,EAAEyW,YAAYC,MAAO1W,EAAEqX,cAAc,GAC/DlP,EAAkB6O,GAAQhX,EAAEyW,YAAYE,KAAM3W,EAAEsX,YAAaL,GAC7D9O,EAAkB6O,GAAQhX,EAAEyW,YAAYG,IAAK5W,EAAEuX,YAAY,KAE3D3X,EAAO4K,eAAkBxK,EAAEiP,OAAOuI,KAAQxX,EAAEiP,OAAOC,UACnD/G,EAAkB6O,GAAQ,YAAahX,EAAEqX,cAAc,GACvD3T,SAASsT,GAAQ,YAAahX,EAAEsX,YAAaL,GAC7CvT,SAASsT,GAAQ,UAAWhX,EAAEuX,YAAY,KAGlDvV,OAAOgV,GAAQ,SAAUhX,EAAEuC,UAGvBvC,EAAEJ,OAAO2L,aACTpK,EAAEnB,EAAEJ,OAAO2L,YAAYwL,GAAW,QAAS/W,EAAEyX,aACzCzX,EAAEJ,OAAO2N,MAAQvN,EAAEuN,MAAMpM,EAAEnB,EAAEJ,OAAO2L,YAAYwL,GAAW,UAAW/W,EAAEuN,KAAKmK,aAEjF1X,EAAEJ,OAAO4L,aACTrK,EAAEnB,EAAEJ,OAAO4L,YAAYuL,GAAW,QAAS/W,EAAE2X,aACzC3X,EAAEJ,OAAO2N,MAAQvN,EAAEuN,MAAMpM,EAAEnB,EAAEJ,OAAO4L,YAAYuL,GAAW,UAAW/W,EAAEuN,KAAKmK,aAEjF1X,EAAEJ,OAAOqL,YAAcjL,EAAEJ,OAAOsL,qBAChC/J,EAAEnB,EAAE4O,qBAAqBmI,GAAW,QAAS,IAAM/W,EAAEJ,OAAOsN,YAAalN,EAAE4X,eAI3E5X,EAAEJ,OAAOgM,eAAiB5L,EAAEJ,OAAOiM,2BAA0B1D,EAAkB6O,GAAQ,QAAShX,EAAE4L,eAAe,IAEzH5L,EAAE6X,aAAe,SAAUf,GACvB9W,EAAE6W,cAEN7W,EAAE8X,aAAe,WACb9X,EAAE6W,YAAW,IAOjB7W,EAAE+X,YAAa,EACf/X,EAAE4L,cAAgB,SAAU5K,GACnBhB,EAAE+X,aACC/X,EAAEJ,OAAOgM,eAAe5K,EAAEiE,iBAC1BjF,EAAEJ,OAAOiM,0BAA4B7L,EAAEgY,YACvChX,EAAEiX,kBACFjX,EAAEkX,8BAKdlY,EAAEyX,YAAc,SAAUzW,GACtBA,EAAEiE,iBACFjF,EAAEmF,aAENnF,EAAE2X,YAAc,SAAU3W,GACtBA,EAAEiE,iBACFjF,EAAEoF,aAENpF,EAAE4X,aAAe,SAAU5W,GACvBA,EAAEiE,gBACF,IAAIxD,GAAQN,EAAErB,MAAM2B,QAAUzB,EAAEJ,OAAOwK,cACnCpK,GAAEJ,OAAOY,OAAMiB,GAAgBzB,EAAEqM,cACrCrM,EAAEmW,QAAQ1U,IA0BdzB,EAAEmY,mBAAqB,SAAUnX,GAC7B,GAAI+R,GAAQhS,EAAmBC,EAAG,IAAMhB,EAAEJ,OAAO+M,YAC7CyL,GAAa,CACjB,IAAIrF,EACA,IAAK,GAAIhO,GAAI,EAAGA,EAAI/E,EAAE6R,OAAOjQ,OAAQmD,IAC7B/E,EAAE6R,OAAO9M,KAAOgO,IAAOqF,GAAa,EAIhD,KAAIrF,IAASqF,EAOT,MAFApY,GAAEqY,aAAe1W,YACjB3B,EAAEsY,aAAe3W,OAGrB,IARI3B,EAAEqY,aAAetF,EACjB/S,EAAEsY,aAAenX,EAAE4R,GAAOtR,QAO1BzB,EAAEJ,OAAOkM,qBAA0CnK,SAAnB3B,EAAEsY,cAA8BtY,EAAEsY,eAAiBtY,EAAE+U,YAAa,CAClG,GACIwD,GADAC,EAAexY,EAAEsY,YAErB,IAAItY,EAAEJ,OAAOY,KAET,GADA+X,EAAYpX,EAAEnB,EAAEqY,cAAc3Q,KAAK,2BAC/B8Q,EAAexY,EAAE6R,OAAOjQ,OAAS5B,EAAEJ,OAAOqK,cAC1CjK,EAAES,UACF+X,EAAexY,EAAE0O,QAAQC,SAAS,IAAM3O,EAAEJ,OAAO+M,WAAa,6BAA+B4L,EAAY,MAAMvF,GAAG,GAAGvR,QACrHlB,WAAW,WACPP,EAAEmW,QAAQqC,IACX,OAEF,IAAIA,EAAexY,EAAEJ,OAAOqK,cAAgB,EAAG,CAChDjK,EAAES,SACF,IAAIgY,GAAmBzY,EAAE0O,QAAQC,SAAS,IAAM3O,EAAEJ,OAAO+M,WAAa,6BAA+B4L,EAAY,KACjHC,GAAeC,EAAiBzF,GAAGyF,EAAiB7W,OAAS,GAAGH,QAChElB,WAAW,WACPP,EAAEmW,QAAQqC,IACX,OAGHxY,GAAEmW,QAAQqC,OAIdxY,GAAEmW,QAAQqC,IAKtB,IAAIE,GACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAI4BC,EAG5BC,EALAC,EAAe,kCAEfC,EAAgBpS,KAAKqS,MAErBC,IAIJtZ,GAAEgY,WAAY,EAGdhY,EAAEuZ,SACEC,OAAQ,EACRC,OAAQ,EACRC,SAAU,EACVC,SAAU,EACVC,KAAM,EAIV,IAAIC,GAAcC,CAs5ClB,IAr5CA9Z,EAAEqX,aAAe,SAAUrW,GAGvB,GAFIA,EAAEgC,gBAAehC,EAAIA,EAAEgC,eAC3B6W,EAA0B,eAAX7Y,EAAE+Y,KACZF,KAAgB,SAAW7Y,KAAiB,IAAZA,EAAEgZ,MAAvC,CACA,GAAIha,EAAEJ,OAAO6M,WAAa1L,EAAmBC,EAAG,IAAMhB,EAAEJ,OAAO8M,gBAE3D,YADA1M,EAAE+X,YAAa,EAGnB,KAAI/X,EAAEJ,OAAO4M,cACJzL,EAAmBC,EAAGhB,EAAEJ,OAAO4M,cADxC,CAcA,GAXAkM,GAAY,EACZC,GAAU,EACVE,EAAclX,OACdmY,EAAcnY,OACd3B,EAAEuZ,QAAQC,OAASxZ,EAAEuZ,QAAQG,SAAsB,eAAX1Y,EAAE+Y,KAAwB/Y,EAAEiZ,cAAc,GAAGC,MAAQlZ,EAAEkZ,MAC/Fla,EAAEuZ,QAAQE,OAASzZ,EAAEuZ,QAAQI,SAAsB,eAAX3Y,EAAE+Y,KAAwB/Y,EAAEiZ,cAAc,GAAGE,MAAQnZ,EAAEmZ,MAC/FvB,EAAiB5R,KAAKqS,MACtBrZ,EAAE+X,YAAa,EACf/X,EAAEwR,sBACFxR,EAAEoa,eAAiBzY,OACf3B,EAAEJ,OAAOmL,UAAY,IAAGiO,GAAqB,GAClC,eAAXhY,EAAE+Y,KAAuB,CACzB,GAAI9U,IAAiB,CACjB9D,GAAEH,EAAEI,QAAQC,GAAG8X,KAAelU,GAAiB,GAC/CvB,SAASC,eAAiBxC,EAAEuC,SAASC,eAAetC,GAAG8X,IACvDzV,SAASC,cAAc0W,OAEvBpV,GACAjE,EAAEiE,iBAGVjF,EAAEwC,KAAK,eAAgBxC,EAAGgB,MAG9BhB,EAAEsX,YAAc,SAAUtW,GAEtB,GADIA,EAAEgC,gBAAehC,EAAIA,EAAEgC,iBACvB6W,GAA2B,cAAX7Y,EAAE+Y,MAClB/Y,EAAEsZ,yBAAN,CACA,GAAIta,EAAEJ,OAAOkL,aAGT,MAFA6N,IAAU,OACV3Y,EAAE+X,YAAa,EAGnB,IAAI8B,GAAgBnW,SAASC,eACrB3C,EAAEI,SAAWsC,SAASC,eAAiBxC,EAAEH,EAAEI,QAAQC,GAAG8X,GAGtD,MAFAR,IAAU,OACV3Y,EAAE+X,YAAa,EAOvB,IAFA/X,EAAEwC,KAAK,cAAexC,EAAGgB,KAErBA,EAAEiZ,eAAiBjZ,EAAEiZ,cAAcrY,OAAS,GAAhD,CAKA,GAHA5B,EAAEuZ,QAAQG,SAAsB,cAAX1Y,EAAE+Y,KAAuB/Y,EAAEiZ,cAAc,GAAGC,MAAQlZ,EAAEkZ,MAC3Ela,EAAEuZ,QAAQI,SAAsB,cAAX3Y,EAAE+Y,KAAuB/Y,EAAEiZ,cAAc,GAAGE,MAAQnZ,EAAEmZ,MAEhD,mBAAhBtB,GAA6B,CACpC,GAAItO,GAA4H,IAA/G3E,KAAK2U,MAAM3U,KAAKC,IAAI7F,EAAEuZ,QAAQI,SAAW3Z,EAAEuZ,QAAQE,QAAS7T,KAAKC,IAAI7F,EAAEuZ,QAAQG,SAAW1Z,EAAEuZ,QAAQC,SAAiB5T,KAAK4U,EAC3I3B,GAAc1Y,IAAQoK,EAAavK,EAAEJ,OAAO2K,WAAc,GAAKA,EAAavK,EAAEJ,OAAO2K,WAUzF,GARIsO,GACA7Y,EAAEwC,KAAK,sBAAuBxC,EAAGgB,GAEV,mBAAhB8Y,IAA+B9Z,EAAEmX,QAAQsD,UAC5Cza,EAAEuZ,QAAQG,WAAa1Z,EAAEuZ,QAAQC,QAAUxZ,EAAEuZ,QAAQI,WAAa3Z,EAAEuZ,QAAQE,UAC5EK,GAAc,GAGjBpB,EAAL,CACA,GAAIG,EAEA,YADAH,GAAY,EAGhB,IAAKoB,IAAe9Z,EAAEmX,QAAQsD,QAA9B,CAGAza,EAAE+X,YAAa,EACf/X,EAAEwC,KAAK,eAAgBxC,EAAGgB,GAC1BA,EAAEiE,iBACEjF,EAAEJ,OAAOoL,2BAA6BhL,EAAEJ,OAAOsX,QAC/ClW,EAAEiX,kBAGDU,IACG/Y,EAAOY,MACPR,EAAES,UAENsY,EAAiB/Y,EAAEsG,sBACnBtG,EAAEwG,qBAAqB,GACnBxG,EAAEgY,WACFhY,EAAE0O,QAAQgM,QAAQ,oFAElB1a,EAAEJ,OAAOS,UAAYL,EAAEgR,cACnBhR,EAAEJ,OAAO0I,6BACTtI,EAAEa,eAGFb,EAAEoR,iBAGV8H,GAAsB,EAElBlZ,EAAEJ,OAAO+L,aACT3L,EAAEE,UAAU,GAAG0P,MAAMC,OAAS,OAC9B7P,EAAEE,UAAU,GAAG0P,MAAMC,OAAS,mBAC9B7P,EAAEE,UAAU,GAAG0P,MAAMC,OAAS,eAC9B7P,EAAEE,UAAU,GAAG0P,MAAMC,OAAS,aAGtC8I,GAAU,CAEV,IAAIiB,GAAO5Z,EAAEuZ,QAAQK,KAAOzZ,IAAQH,EAAEuZ,QAAQG,SAAW1Z,EAAEuZ,QAAQC,OAASxZ,EAAEuZ,QAAQI,SAAW3Z,EAAEuZ,QAAQE,MAE3GG,IAAc5Z,EAAEJ,OAAO0K,WACnBtK,EAAE0E,MAAKkV,GAAQA,GAEnB5Z,EAAEoa,eAAiBR,EAAO,EAAI,OAAS,OACvCd,EAAmBc,EAAOb,CAE1B,IAAI4B,IAAsB,CAsB1B,IArBKf,EAAO,GAAKd,EAAmB9Y,EAAEsR,gBAClCqJ,GAAsB,EAClB3a,EAAEJ,OAAOyL,aAAYyN,EAAmB9Y,EAAEsR,eAAiB,EAAI1L,KAAKgV,KAAK5a,EAAEsR,eAAiByH,EAAiBa,EAAM5Z,EAAEJ,OAAO0L,mBAEpH,EAAPsO,GAAYd,EAAmB9Y,EAAEuG,iBACtCoU,GAAsB,EAClB3a,EAAEJ,OAAOyL,aAAYyN,EAAmB9Y,EAAEuG,eAAiB,EAAIX,KAAKgV,IAAI5a,EAAEuG,eAAiBwS,EAAiBa,EAAM5Z,EAAEJ,OAAO0L,mBAG/HqP,IACA3Z,EAAEsZ,yBAA0B,IAI3Bta,EAAEJ,OAAOwD,kBAAyC,SAArBpD,EAAEoa,gBAAgDrB,EAAnBD,IAC7DA,EAAmBC,IAElB/Y,EAAEJ,OAAOyD,kBAAyC,SAArBrD,EAAEoa,gBAA6BtB,EAAmBC,IAChFD,EAAmBC,GAGlB/Y,EAAEJ,OAAOiL,aAAd,CAGA,GAAI7K,EAAEJ,OAAOmL,UAAY,EAAG,CACxB,KAAInF,KAAKC,IAAI+T,GAAQ5Z,EAAEJ,OAAOmL,WAAaiO,GAYvC,YADAF,EAAmBC,EAVnB,KAAKC,EAMD,MALAA,IAAqB,EACrBhZ,EAAEuZ,QAAQC,OAASxZ,EAAEuZ,QAAQG,SAC7B1Z,EAAEuZ,QAAQE,OAASzZ,EAAEuZ,QAAQI,SAC7Bb,EAAmBC,OACnB/Y,EAAEuZ,QAAQK,KAAOzZ,IAAQH,EAAEuZ,QAAQG,SAAW1Z,EAAEuZ,QAAQC,OAASxZ,EAAEuZ,QAAQI,SAAW3Z,EAAEuZ,QAAQE,SAUxGzZ,EAAEJ,OAAOwG,UAAYpG,EAAEJ,OAAO6L,sBAC9BzL,EAAE2G,oBAEF3G,EAAEJ,OAAOwG,WAEiB,IAAtBkT,EAAW1X,QACX0X,EAAWxW,MACPuD,SAAUrG,EAAEuZ,QAAQpZ,IAAQ,SAAW,UACvC0a,KAAMjC,IAGdU,EAAWxW,MACPuD,SAAUrG,EAAEuZ,QAAQpZ,IAAQ,WAAa,YACzC0a,MAAM,GAAK7Y,QAAOgF,MAAQC,aAIlCjH,EAAE0G,eAAeoS,GAEjB9Y,EAAEyG,oBAAoBqS,SAE1B9Y,EAAEuX,WAAa,SAAUvW,GAGrB,GAFIA,EAAEgC,gBAAehC,EAAIA,EAAEgC,eAC3BhD,EAAEwC,KAAK,aAAcxC,EAAGgB,GACnB0X,EAAL,CAEI1Y,EAAEJ,OAAO+L,YAAcgN,GAAWD,IAClC1Y,EAAEE,UAAU,GAAG0P,MAAMC,OAAS,OAC9B7P,EAAEE,UAAU,GAAG0P,MAAMC,OAAS,eAC9B7P,EAAEE,UAAU,GAAG0P,MAAMC,OAAS,YAC9B7P,EAAEE,UAAU,GAAG0P,MAAMC,OAAS,OAIlC,IAAIiL,GAAe9T,KAAKqS,MACpB0B,EAAWD,EAAelC,CA4B9B,IAzBI5Y,EAAE+X,aACF/X,EAAEmY,mBAAmBnX,GACrBhB,EAAEwC,KAAK,QAASxC,EAAGgB,GACJ,IAAX+Z,GAAmBD,EAAe1B,EAAiB,MAC/CH,GAAcpS,aAAaoS,GAC/BA,EAAe1Y,WAAW,WACjBP,IACDA,EAAEJ,OAAOuL,gBAAkBnL,EAAE4O,oBAAoBhN,OAAS,IAAMT,EAAEH,EAAEI,QAAQ4Z,SAAShb,EAAEJ,OAAOsN,cAC9FlN,EAAE4O,oBAAoBqM,YAAYjb,EAAEJ,OAAOyN,uBAE/CrN,EAAEwC,KAAK,UAAWxC,EAAGgB,KACtB,MAGQ,IAAX+Z,GAAmD,IAAhCD,EAAe1B,IAC9BH,GAAcpS,aAAaoS,GAC/BjZ,EAAEwC,KAAK,cAAexC,EAAGgB,KAIjCoY,EAAgBpS,KAAKqS,MACrB9Y,WAAW,WACHP,IAAGA,EAAE+X,YAAa,IACvB,IAEEW,IAAcC,IAAY3Y,EAAEoa,gBAAqC,IAAnBpa,EAAEuZ,QAAQK,MAAcd,IAAqBC,EAE5F,YADAL,EAAYC,GAAU,EAG1BD,GAAYC,GAAU,CAEtB,IAAIuC,EAOJ,IALIA,EADAlb,EAAEJ,OAAOiL,aACI7K,EAAE0E,IAAM1E,EAAEoP,WAAapP,EAAEoP,WAGxB0J,EAEd9Y,EAAEJ,OAAOwG,SAAU,CACnB,GAAI8U,GAAclb,EAAEsR,eAEhB,WADAtR,GAAEmW,QAAQnW,EAAE+U,YAGX,IAAImG,GAAclb,EAAEuG,eAOrB,WALIvG,GAAEmW,QADFnW,EAAE6R,OAAOjQ,OAAS5B,EAAEuR,SAAS3P,OACnB5B,EAAEuR,SAAS3P,OAAS,EAGpB5B,EAAE6R,OAAOjQ,OAAS,EAKpC,IAAI5B,EAAEJ,OAAO2I,iBAAkB,CAC3B,GAAI+Q,EAAW1X,OAAS,EAAG,CACvB,GAAIuZ,GAAgB7B,EAAW8B,MAAOC,EAAgB/B,EAAW8B,MAE7DE,EAAWH,EAAc9U,SAAWgV,EAAchV,SAClDwU,EAAOM,EAAcN,KAAOQ,EAAcR,IAC9C7a,GAAEqP,SAAWiM,EAAWT,EACxB7a,EAAEqP,SAAWrP,EAAEqP,SAAW,EACtBzJ,KAAKC,IAAI7F,EAAEqP,UAAY,MACvBrP,EAAEqP,SAAW,IAIbwL,EAAO,MAAQ,GAAI7Y,QAAOgF,MAAOC,UAAYkU,EAAcN,KAAQ,OACnE7a,EAAEqP,SAAW,OAGjBrP,GAAEqP,SAAW,CAGjBiK,GAAW1X,OAAS,CACpB,IAAI2Z,GAAmB,IAAOvb,EAAEJ,OAAO4I,sBACnCgT,EAAmBxb,EAAEqP,SAAWkM,EAEhCE,EAAczb,EAAEoP,UAAYoM,CAC5Bxb,GAAE0E,MAAK+W,GAAgBA,EAC3B,IACIC,GADAC,GAAW,EAEXC,EAAsC,GAAvBhW,KAAKC,IAAI7F,EAAEqP,UAAiBrP,EAAEJ,OAAO8I,2BACxD,IAAI+S,EAAczb,EAAEuG,eACZvG,EAAEJ,OAAO6I,wBACLgT,EAAczb,EAAEuG,gBAAkBqV,IAClCH,EAAczb,EAAEuG,eAAiBqV,GAErCF,EAAsB1b,EAAEuG,eACxBoV,GAAW,EACXzC,GAAsB,GAGtBuC,EAAczb,EAAEuG,mBAGnB,IAAIkV,EAAczb,EAAEsR,eACjBtR,EAAEJ,OAAO6I,wBACLgT,EAAczb,EAAEsR,eAAiBsK,IACjCH,EAAczb,EAAEsR,eAAiBsK,GAErCF,EAAsB1b,EAAEsR,eACxBqK,GAAW,EACXzC,GAAsB,GAGtBuC,EAAczb,EAAEsR,mBAGnB,IAAItR,EAAEJ,OAAOgH,eAAgB,CAC9B,GACIiV,GADAC,EAAI,CAER,KAAKA,EAAI,EAAGA,EAAI9b,EAAEuR,SAAS3P,OAAQka,GAAK,EACpC,GAAI9b,EAAEuR,SAASuK,IAAML,EAAa,CAC9BI,EAAYC,CACZ,OAKJL,EADA7V,KAAKC,IAAI7F,EAAEuR,SAASsK,GAAaJ,GAAe7V,KAAKC,IAAI7F,EAAEuR,SAASsK,EAAY,GAAKJ,IAAqC,SAArBzb,EAAEoa,eACzFpa,EAAEuR,SAASsK,GAEX7b,EAAEuR,SAASsK,EAAY,GAEpC7b,EAAE0E,MAAK+W,GAAgBA,GAGhC,GAAmB,IAAfzb,EAAEqP,SAEEkM,EAAmB3V,KAAKC,IADxB7F,EAAE0E,MAC4B+W,EAAczb,EAAEoP,WAAapP,EAAEqP,UAGhCoM,EAAczb,EAAEoP,WAAapP,EAAEqP,cAG/D,IAAIrP,EAAEJ,OAAOgH,eAEd,WADA5G,GAAE+G,YAIF/G,GAAEJ,OAAO6I,wBAA0BkT,GACnC3b,EAAE0G,eAAegV,GACjB1b,EAAEwG,qBAAqB+U,GACvBvb,EAAEyG,oBAAoBgV,GACtBzb,EAAE+b,oBACF/b,EAAEgY,WAAY,EACdhY,EAAE0O,QAAQ2C,cAAc,WACfrR,GAAMkZ,IACXlZ,EAAEwC,KAAK,mBAAoBxC,GAE3BA,EAAEwG,qBAAqBxG,EAAEJ,OAAOyI,OAChCrI,EAAEyG,oBAAoBiV,GACtB1b,EAAE0O,QAAQ2C,cAAc,WACfrR,GACLA,EAAEgc,wBAGHhc,EAAEqP,UACTrP,EAAE0G,eAAe+U,GACjBzb,EAAEwG,qBAAqB+U,GACvBvb,EAAEyG,oBAAoBgV,GACtBzb,EAAE+b,oBACG/b,EAAEgY,YACHhY,EAAEgY,WAAY,EACdhY,EAAE0O,QAAQ2C,cAAc,WACfrR,GACLA,EAAEgc,sBAKVhc,EAAE0G,eAAe+U,GAGrBzb,EAAE2G,oBAMN,cAJK3G,EAAEJ,OAAO2I,kBAAoBwS,GAAY/a,EAAEJ,OAAOgL,gBACnD5K,EAAE0G,iBACF1G,EAAE2G,sBAMV,GAAI5B,GAAGkX,EAAY,EAAGC,EAAYlc,EAAE+R,gBAAgB,EACpD,KAAKhN,EAAI,EAAGA,EAAI/E,EAAE8R,WAAWlQ,OAAQmD,GAAK/E,EAAEJ,OAAOwK,eACU,mBAA9CpK,GAAE8R,WAAW/M,EAAI/E,EAAEJ,OAAOwK,gBAC7B8Q,GAAclb,EAAE8R,WAAW/M,IAAMmW,EAAalb,EAAE8R,WAAW/M,EAAI/E,EAAEJ,OAAOwK,kBACxE6R,EAAYlX,EACZmX,EAAYlc,EAAE8R,WAAW/M,EAAI/E,EAAEJ,OAAOwK,gBAAkBpK,EAAE8R,WAAW/M,IAIrEmW,GAAclb,EAAE8R,WAAW/M,KAC3BkX,EAAYlX,EACZmX,EAAYlc,EAAE8R,WAAW9R,EAAE8R,WAAWlQ,OAAS,GAAK5B,EAAE8R,WAAW9R,EAAE8R,WAAWlQ,OAAS,GAMnG,IAAIua,IAASjB,EAAalb,EAAE8R,WAAWmK,IAAcC,CAErD,IAAInB,EAAW/a,EAAEJ,OAAOgL,aAAc,CAElC,IAAK5K,EAAEJ,OAAO8K,WAEV,WADA1K,GAAEmW,QAAQnW,EAAE+U,YAGS,UAArB/U,EAAEoa,gBACqCpa,EAAEmW,QAArCgG,GAASnc,EAAEJ,OAAO+K,gBAA2BsR,EAAYjc,EAAEJ,OAAOwK,eACvD6R,GAGM,SAArBjc,EAAEoa,gBAC0Cpa,EAAEmW,QAA1CgG,EAAS,EAAInc,EAAEJ,OAAO+K,gBAA4BsR,EAAYjc,EAAEJ,OAAOwK,eAC5D6R,OAGlB,CAED,IAAKjc,EAAEJ,OAAO6K,YAEV,WADAzK,GAAEmW,QAAQnW,EAAE+U,YAGS,UAArB/U,EAAEoa,gBACFpa,EAAEmW,QAAQ8F,EAAYjc,EAAEJ,OAAOwK,gBAGV,SAArBpK,EAAEoa,gBACFpa,EAAEmW,QAAQ8F,MAOtBjc,EAAEc,SAAW,SAAUsb,EAAY/T,GAC/B,MAAOrI,GAAEmW,QAAQiG,EAAY/T,GAAO,GAAM,IAE9CrI,EAAEmW,QAAU,SAAUiG,EAAY/T,EAAOgU,EAAclL,GACvB,mBAAjBkL,KAA8BA,GAAe,GAC9B,mBAAfD,KAA4BA,EAAa,GACnC,EAAbA,IAAgBA,EAAa,GACjCpc,EAAE8U,UAAYlP,KAAK8M,MAAM0J,EAAapc,EAAEJ,OAAOwK,gBAC3CpK,EAAE8U,WAAa9U,EAAEuR,SAAS3P,SAAQ5B,EAAE8U,UAAY9U,EAAEuR,SAAS3P,OAAS,EAExE,IAAIwN,IAAcpP,EAAEuR,SAASvR,EAAE8U,UAG/B,KAAK9U,EAAEJ,OAAOwD,kBAAoBgM,EAAYpP,EAAEoP,WAAaA,EAAYpP,EAAEsR,eACvE,OAAO,CAEX,KAAKtR,EAAEJ,OAAOyD,kBAAoB+L,EAAYpP,EAAEoP,WAAaA,EAAYpP,EAAEuG,eACvE,OAAO,CAIPvG,GAAEJ,OAAOS,UAAYL,EAAEgR,cACnBG,IAAanR,EAAEJ,OAAO0I,6BACtBtI,EAAEoR,cAAc/I,GAGhBrI,EAAEa,gBAIVb,EAAE0G,eAAe0I,EAGjB,KAAK,GAAIrK,GAAI,EAAGA,EAAI/E,EAAE8R,WAAWlQ,OAAQmD,KAC/BqK,GAAapP,EAAE8R,WAAW/M,KAC5BqX,EAAarX,EAQrB,IAJqB,mBAAVsD,KAAuBA,EAAQrI,EAAEJ,OAAOyI,OACnDrI,EAAEgV,cAAgBhV,EAAE+U,aAAe,EACnC/U,EAAE+U,YAAcqH,EAEZhN,IAAcpP,EAAEoP,UAEhB,MADApP,GAAEiV,iBACK,CAEXjV,GAAEiV,gBACFjV,EAAE+b,kBAAkBM,EACHlc,KAAQiP,EAAY,EAAgBjP,IAAQ,EAAIiP,CAmBjE,OAlBc,KAAV/G,GACArI,EAAEwG,qBAAqB,GACvBxG,EAAEyG,oBAAoB2I,GACtBpP,EAAEgc,gBAAgBK,KAGlBrc,EAAEwG,qBAAqB6B,GACvBrI,EAAEyG,oBAAoB2I,GACjBpP,EAAEgY,YACHhY,EAAEgY,WAAY,EACdhY,EAAE0O,QAAQ2C,cAAc,WACfrR,GACLA,EAAEgc,gBAAgBK,QAMvB,GAGXrc,EAAE+b,kBAAoB,SAAUM,GACA,mBAAjBA,KAA8BA,GAAe,GACpDrc,EAAEsc,MAAMtc,EAAEsc,KAAKP,oBACfM,IACArc,EAAEwC,KAAK,oBAAqBxC,GACxBA,EAAE+U,cAAgB/U,EAAEgV,eACpBhV,EAAEwC,KAAK,qBAAsBxC,KAIzCA,EAAEgc,gBAAkB,SAAUK,GAC1Brc,EAAEgY,WAAY,EACdhY,EAAEwG,qBAAqB,GACK,mBAAjB6V,KAA8BA,GAAe,GACpDrc,EAAEsc,MAAMtc,EAAEsc,KAAKN,kBACfK,IACArc,EAAEwC,KAAK,kBAAmBxC,GACtBA,EAAE+U,cAAgB/U,EAAEgV,eACpBhV,EAAEwC,KAAK,mBAAoBxC,IAG/BA,EAAEJ,OAAOmK,SAAW/J,EAAE+J,SACtB/J,EAAE+J,QAAQwS,WAIlBvc,EAAEmF,UAAY,SAAUkX,EAAchU,EAAO8I,GACzC,GAAInR,EAAEJ,OAAOY,KAAM,CACf,GAAIR,EAAEgY,UAAW,OAAO,CACxBhY,GAAES,SACF,EAAiBT,EAAEE,UAAU,GAAGsc,WAChC,MAAOxc,GAAEmW,QAAQnW,EAAE+U,YAAc/U,EAAEJ,OAAOwK,eAAgB/B,EAAOgU,EAAclL,GAE9E,MAAOnR,GAAEmW,QAAQnW,EAAE+U,YAAc/U,EAAEJ,OAAOwK,eAAgB/B,EAAOgU,EAAclL,IAExFnR,EAAEU,WAAa,SAAU2H,GACrB,MAAOrI,GAAEmF,WAAU,EAAMkD,GAAO,IAEpCrI,EAAEoF,UAAY,SAAUiX,EAAchU,EAAO8I,GACzC,GAAInR,EAAEJ,OAAOY,KAAM,CACf,GAAIR,EAAEgY,UAAW,OAAO,CACxBhY,GAAES,SACF,EAAiBT,EAAEE,UAAU,GAAGsc,WAChC,MAAOxc,GAAEmW,QAAQnW,EAAE+U,YAAc,EAAG1M,EAAOgU,EAAclL,GAExD,MAAOnR,GAAEmW,QAAQnW,EAAE+U,YAAc,EAAG1M,EAAOgU,EAAclL,IAElEnR,EAAEyc,WAAa,SAAUpU,GACrB,MAAOrI,GAAEoF,WAAU,EAAMiD,GAAO,IAEpCrI,EAAE+G,WAAa,SAAUsV,EAAchU,EAAO8I,GAC1C,MAAOnR,GAAEmW,QAAQnW,EAAE+U,YAAa1M,EAAOgU,IAM3Crc,EAAEwG,qBAAuB,SAAUkW,EAAUC,GACzC3c,EAAE0O,QAAQkO,WAAWF,GACG,UAApB1c,EAAEJ,OAAOiJ,QAAsB7I,EAAE6c,QAAQ7c,EAAEJ,OAAOiJ,SAClD7I,EAAE6c,QAAQ7c,EAAEJ,OAAOiJ,QAAQiU,cAAcJ,GAEzC1c,EAAEJ,OAAO8J,UAAY1J,EAAE0J,UACvB1J,EAAE0J,SAASoT,cAAcJ,GAEzB1c,EAAEJ,OAAO+J,WAAa3J,EAAE2J,WACxB3J,EAAE2J,UAAUmT,cAAcJ,GAE1B1c,EAAEJ,OAAO0M,SAAWtM,EAAE+c,YACtB/c,EAAE+c,WAAWD,cAAcJ,EAAUC,GAEzC3c,EAAEwC,KAAK,kBAAmBxC,EAAG0c,IAEjC1c,EAAEyG,oBAAsB,SAAU2I,EAAWzI,EAAmBgW,GAC5D,GAAIK,GAAI,EAAGC,EAAI,EAAGC,EAAI,CAClB/c,KACA6c,EAAIhd,EAAE0E,KAAO0K,EAAYA,EAGzB6N,EAAI7N,EAEHpP,EAAEJ,OAAOgJ,kBACkB5I,EAAE0O,QAAQ7G,UAAlC7H,EAAEsO,QAAQE,aAAkC,eAAiBwO,EAAI,OAASC,EAAI,OAASC,EAAI,MACtE,aAAeF,EAAI,OAASC,EAAI;AAG7Djd,EAAEoP,UAAYjP,IAAQ6c,EAAIC,EAEtBtW,GAAmB3G,EAAE2G,oBACD,UAApB3G,EAAEJ,OAAOiJ,QAAsB7I,EAAE6c,QAAQ7c,EAAEJ,OAAOiJ,SAClD7I,EAAE6c,QAAQ7c,EAAEJ,OAAOiJ,QAAQsU,aAAand,EAAEoP,WAE1CpP,EAAEJ,OAAO8J,UAAY1J,EAAE0J,UACvB1J,EAAE0J,SAASyT,aAAand,EAAEoP,WAE1BpP,EAAEJ,OAAO+J,WAAa3J,EAAE2J,WACxB3J,EAAE2J,UAAUwT,aAAand,EAAEoP,WAE3BpP,EAAEJ,OAAO0M,SAAWtM,EAAE+c,YACtB/c,EAAE+c,WAAWI,aAAand,EAAEoP,UAAWuN,GAE3C3c,EAAEwC,KAAK,iBAAkBxC,EAAGA,EAAEoP,YAGlCpP,EAAEod,aAAe,SAAUlc,EAAImc,GAC3B,GAAIC,GAAQC,EAAcC,EAAUC,CAOpC,OAJoB,mBAATJ,KACPA,EAAO,KAGPrd,EAAEJ,OAAOgJ,iBACF5I,EAAE0E,KAAO1E,EAAEoP,UAAYpP,EAAEoP,WAGpCoO,EAAWxb,OAAO0b,iBAAiBxc,EAAI,MACnCc,OAAO2b,gBAGPF,EAAkB,GAAIzb,QAAO2b,gBAA6C,SAA7BH,EAASI,gBAA6B,GAAKJ,EAASI,kBAGjGH,EAAkBD,EAASK,cAAgBL,EAASM,YAAcN,EAASO,aAAeP,EAASQ,aAAgBR,EAAS3V,WAAa2V,EAASS,iBAAiB,aAAa9L,QAAQ,aAAc,sBACtMmL,EAASG,EAAgBS,WAAWC,MAAM,MAGjC,MAATd,IAGIE,EADAvb,OAAO2b,gBACQF,EAAgBW,IAGhBlM,WADQ,KAAlBoL,EAAO1b,OACc0b,EAAO,IAGPA,EAAO,KAE5B,MAATD,IAGIE,EADAvb,OAAO2b,gBACQF,EAAgBY,IAGhBnM,WADQ,KAAlBoL,EAAO1b,OACc0b,EAAO,IAGPA,EAAO,KAErCtd,EAAE0E,KAAO6Y,IAAcA,GAAgBA,GACpCA,GAAgB,IAE3Bvd,EAAEsG,oBAAsB,SAAU+W,GAI9B,MAHoB,mBAATA,KACPA,EAAOld,IAAQ,IAAM,KAElBH,EAAEod,aAAapd,EAAE0O,QAAQ,GAAI2O,IAMxCrd,EAAE6C,aAoBF7C,EAAEse,cAAgB,WACd,GAAIte,EAAEJ,OAAO0N,eAET,IAAK,GADDiR,GAAmBve,EAAEE,UAAUoB,UAC1ByD,EAAI,EAAGA,EAAIwZ,EAAiB3c,OAAQmD,IACzClD,EAAa0c,EAAiBxZ,GAKtClD,GAAa7B,EAAEE,UAAU,IAAKyC,WAAW,IAGzCd,EAAa7B,EAAE0O,QAAQ,IAAKhM,YAAY,KAE5C1C,EAAEwe,oBAAsB,WACpB,IAAK,GAAIzZ,GAAI,EAAGA,EAAI/E,EAAE6C,UAAUjB,OAAQmD,IACpC/E,EAAE6C,UAAUkC,GAAG0Z,YAEnBze,GAAE6C,cAMN7C,EAAE0e,WAAa,WAEX1e,EAAE0O,QAAQC,SAAS,IAAM3O,EAAEJ,OAAO+M,WAAa,IAAM3M,EAAEJ,OAAOkN,qBAAqB6R,QAEnF,IAAI9M,GAAS7R,EAAE0O,QAAQC,SAAS,IAAM3O,EAAEJ,OAAO+M,WAC/C3M,GAAEqM,aAAezE,SAAS5H,EAAEJ,OAAOyM,cAAgBrM,EAAEJ,OAAOqK,cAAe,IAC3EjK,EAAEqM,aAAerM,EAAEqM,aAAerM,EAAEJ,OAAOwM,qBACvCpM,EAAEqM,aAAewF,EAAOjQ,SACxB5B,EAAEqM,aAAewF,EAAOjQ,OAG5B,IAA2CmD,GAAvC6Z,KAAoBC,IAOxB,KANAhN,EAAO9R,KAAK,SAAU0B,EAAOP,GACzB,GAAI6R,GAAQ5R,EAAErB,KACV2B,GAAQzB,EAAEqM,cAAcwS,EAAa/b,KAAK5B,GAC1CO,EAAQoQ,EAAOjQ,QAAUH,GAASoQ,EAAOjQ,OAAS5B,EAAEqM,cAAcuS,EAAc9b,KAAK5B,GACzF6R,EAAMrL,KAAK,0BAA2BjG,KAErCsD,EAAI,EAAGA,EAAI8Z,EAAajd,OAAQmD,IACjC/E,EAAE0O,QAAQoQ,OAAO3d,EAAE0d,EAAa9Z,GAAGga,WAAU,IAAOlQ,SAAS7O,EAAEJ,OAAOkN,qBAE1E,KAAK/H,EAAI6Z,EAAchd,OAAS,EAAGmD,GAAK,EAAGA,IACvC/E,EAAE0O,QAAQsQ,QAAQ7d,EAAEyd,EAAc7Z,GAAGga,WAAU,IAAOlQ,SAAS7O,EAAEJ,OAAOkN,uBAGhF9M,EAAEif,YAAc,WACZjf,EAAE0O,QAAQC,SAAS,IAAM3O,EAAEJ,OAAO+M,WAAa,IAAM3M,EAAEJ,OAAOkN,qBAAqB6R,SACnF3e,EAAE6R,OAAOqN,WAAW,4BAExBlf,EAAES,QAAU,WACR,GAAI0e,EAEAnf,GAAE+U,YAAc/U,EAAEqM,cAClB8S,EAAWnf,EAAE6R,OAAOjQ,OAA0B,EAAjB5B,EAAEqM,aAAmBrM,EAAE+U,YACpDoK,GAAsBnf,EAAEqM,aACxBrM,EAAEmW,QAAQgJ,EAAU,GAAG,GAAO,KAGG,SAA3Bnf,EAAEJ,OAAOqK,eAA4BjK,EAAE+U,aAAgC,EAAjB/U,EAAEqM,cAAsBrM,EAAE+U,YAAc/U,EAAE6R,OAAOjQ,OAAkC,EAAzB5B,EAAEJ,OAAOqK,iBAC/HkV,GAAYnf,EAAE6R,OAAOjQ,OAAS5B,EAAE+U,YAAc/U,EAAEqM,aAChD8S,GAAsBnf,EAAEqM,aACxBrM,EAAEmW,QAAQgJ,EAAU,GAAG,GAAO,KAMtCnf,EAAEof,YAAc,SAAUvN,GAItB,GAHI7R,EAAEJ,OAAOY,MACTR,EAAEif,cAEgB,gBAAXpN,IAAuBA,EAAOjQ,OACrC,IAAK,GAAImD,GAAI,EAAGA,EAAI8M,EAAOjQ,OAAQmD,IAC3B8M,EAAO9M,IAAI/E,EAAE0O,QAAQoQ,OAAOjN,EAAO9M,QAI3C/E,GAAE0O,QAAQoQ,OAAOjN,EAEjB7R,GAAEJ,OAAOY,MACTR,EAAE0e,aAEA1e,EAAEJ,OAAOuC,UAAYnC,EAAEsO,QAAQnM,UACjCnC,EAAE4Q,QAAO,IAGjB5Q,EAAEqf,aAAe,SAAUxN,GACnB7R,EAAEJ,OAAOY,MACTR,EAAEif,aAEN,IAAIpK,GAAiB7U,EAAE+U,YAAc,CACrC,IAAsB,gBAAXlD,IAAuBA,EAAOjQ,OAAQ,CAC7C,IAAK,GAAImD,GAAI,EAAGA,EAAI8M,EAAOjQ,OAAQmD,IAC3B8M,EAAO9M,IAAI/E,EAAE0O,QAAQsQ,QAAQnN,EAAO9M,GAE5C8P,GAAiB7U,EAAE+U,YAAclD,EAAOjQ,WAGxC5B,GAAE0O,QAAQsQ,QAAQnN,EAElB7R,GAAEJ,OAAOY,MACTR,EAAE0e,aAEA1e,EAAEJ,OAAOuC,UAAYnC,EAAEsO,QAAQnM,UACjCnC,EAAE4Q,QAAO,GAEb5Q,EAAEmW,QAAQtB,EAAgB,GAAG,IAEjC7U,EAAEsf,YAAc,SAAUC,GAClBvf,EAAEJ,OAAOY,OACTR,EAAEif,cACFjf,EAAE6R,OAAS7R,EAAE0O,QAAQC,SAAS,IAAM3O,EAAEJ,OAAO+M,YAEjD,IACI6S,GADA3K,EAAiB7U,EAAE+U,WAEvB,IAA6B,gBAAlBwK,IAA8BA,EAAc3d,OAAQ,CAC3D,IAAK,GAAImD,GAAI,EAAGA,EAAIwa,EAAc3d,OAAQmD,IACtCya,EAAgBD,EAAcxa,GAC1B/E,EAAE6R,OAAO2N,IAAgBxf,EAAE6R,OAAOmB,GAAGwM,GAAeb,SACpC9J,EAAhB2K,GAAgC3K,GAExCA,GAAiBjP,KAAKiO,IAAIgB,EAAgB,OAG1C2K,GAAgBD,EACZvf,EAAE6R,OAAO2N,IAAgBxf,EAAE6R,OAAOmB,GAAGwM,GAAeb,SACpC9J,EAAhB2K,GAAgC3K,IACpCA,EAAiBjP,KAAKiO,IAAIgB,EAAgB,EAG1C7U,GAAEJ,OAAOY,MACTR,EAAE0e,aAGA1e,EAAEJ,OAAOuC,UAAYnC,EAAEsO,QAAQnM,UACjCnC,EAAE4Q,QAAO,GAET5Q,EAAEJ,OAAOY,KACTR,EAAEmW,QAAQtB,EAAiB7U,EAAEqM,aAAc,GAAG,GAG9CrM,EAAEmW,QAAQtB,EAAgB,GAAG,IAIrC7U,EAAEyf,gBAAkB,WAEhB,IAAK,GADDF,MACKxa,EAAI,EAAGA,EAAI/E,EAAE6R,OAAOjQ,OAAQmD,IACjCwa,EAAczc,KAAKiC,EAEvB/E,GAAEsf,YAAYC,IAOlBvf,EAAE6c,SACErT,MACI2T,aAAc,WACV,IAAK,GAAIpY,GAAI,EAAGA,EAAI/E,EAAE6R,OAAOjQ,OAAQmD,IAAK,CACtC,GAAIgO,GAAQ/S,EAAE6R,OAAOmB,GAAGjO,GACpBN,EAASsO,EAAM,GAAGiB,kBAClB0L,GAAMjb,CACLzE,GAAEJ,OAAOgJ,mBAAkB8W,GAAU1f,EAAEoP,UAC5C,IAAIuQ,GAAK,CACJxf,OACDwf,EAAKD,EACLA,EAAK,EAET,IAAIE,GAAe5f,EAAEJ,OAAO4J,KAAKC,UACzB7D,KAAKiO,IAAI,EAAIjO,KAAKC,IAAIkN,EAAM,GAAGzL,UAAW,GAC1C,EAAI1B,KAAKoQ,IAAIpQ,KAAKiO,IAAId,EAAM,GAAGzL,SAAU,IAAK,EACtDyL,GACKhE,KACG8Q,QAASD,IAEZ/X,UAAU,eAAiB6X,EAAK,OAASC,EAAK,cAK3D7C,cAAe,SAAUJ,GAErB,GADA1c,EAAE6R,OAAO+K,WAAWF,GAChB1c,EAAEJ,OAAOgJ,kBAAiC,IAAb8T,EAAgB,CAC7C,GAAIoD,IAAiB,CACrB9f,GAAE6R,OAAOR,cAAc,WACnB,IAAIyO,GACC9f,EAAL,CACA8f,GAAiB,EACjB9f,EAAEgY,WAAY,CAEd,KAAK,GADD+H,IAAiB,sBAAuB,gBAAiB,iBAAkB,kBAAmB,mBACzFhb,EAAI,EAAGA,EAAIgb,EAAcne,OAAQmD,IACtC/E,EAAE0O,QAAQgM,QAAQqF,EAAchb,UAMpDqE,MACI+T,aAAc,WACV,GAAuB6C,GAAnBC,EAAgB,CAChBjgB,GAAEJ,OAAOwJ,KAAKC,SACVlJ,KACA6f,EAAahgB,EAAE0O,QAAQmC,KAAK,uBACF,IAAtBmP,EAAWpe,SACXoe,EAAa7e,EAAE,0CACfnB,EAAE0O,QAAQoQ,OAAOkB,IAErBA,EAAWjR,KAAKjK,OAAQ9E,EAAE6E,MAAQ,SAGlCmb,EAAahgB,EAAEE,UAAU2Q,KAAK,uBACJ,IAAtBmP,EAAWpe,SACXoe,EAAa7e,EAAE,0CACfnB,EAAEE,UAAU4e,OAAOkB,KAI/B,KAAK,GAAIjb,GAAI,EAAGA,EAAI/E,EAAE6R,OAAOjQ,OAAQmD,IAAK,CACtC,GAAIgO,GAAQ/S,EAAE6R,OAAOmB,GAAGjO,GACpBmb,EAAiB,GAAJnb,EACbob,EAAQva,KAAK8M,MAAMwN,EAAa,IAChClgB,GAAE0E,MACFwb,GAAcA,EACdC,EAAQva,KAAK8M,OAAOwN,EAAa,KAErC,IAAI5Y,GAAW1B,KAAKiO,IAAIjO,KAAKoQ,IAAIjD,EAAM,GAAGzL,SAAU,GAAI,IACpDoY,EAAK,EAAGC,EAAK,EAAGS,EAAK,CACrBrb,GAAI,IAAM,GACV2a,EAAe,GAARS,EAAYngB,EAAE2R,KACrByO,EAAK,IAECrb,EAAI,GAAK,IAAM,GACrB2a,EAAK,EACLU,EAAe,GAARD,EAAYngB,EAAE2R,OAEf5M,EAAI,GAAK,IAAM,GACrB2a,EAAK1f,EAAE2R,KAAe,EAARwO,EAAYngB,EAAE2R,KAC5ByO,EAAKpgB,EAAE2R,OAED5M,EAAI,GAAK,IAAM,IACrB2a,GAAO1f,EAAE2R,KACTyO,EAAK,EAAIpgB,EAAE2R,KAAgB,EAAT3R,EAAE2R,KAAWwO,GAE/BngB,EAAE0E,MACFgb,GAAMA,GAGLvf,MACDwf,EAAKD,EACLA,EAAK,EAGT,IAAI7X,GAAY,YAAc1H,IAAQ,GAAK+f,GAAc,iBAAmB/f,IAAQ+f,EAAa,GAAK,oBAAsBR,EAAK,OAASC,EAAK,OAASS,EAAK,KAM7J,IALgB,GAAZ9Y,GAAiBA,EAAW,KAC5B2Y,EAAoB,GAAJlb,EAAoB,GAAXuC,EACrBtH,EAAE0E,MAAKub,EAAqB,IAAJlb,EAAoB,GAAXuC,IAEzCyL,EAAMlL,UAAUA,GACZ7H,EAAEJ,OAAOwJ,KAAKD,aAAc,CAE5B,GAAIkX,GAAuBtN,EAAMlC,KAAd1Q,IAAmB,4BAA0C,4BAC5EmgB,EAAsBvN,EAAMlC,KAAd1Q,IAAmB,6BAA2C,8BACpD,KAAxBkgB,EAAaze,SACbye,EAAelf,EAAE,oCAAsChB,IAAQ,OAAS,OAAS,YACjF4S,EAAM+L,OAAOuB,IAEU,IAAvBC,EAAY1e,SACZ0e,EAAcnf,EAAE,oCAAsChB,IAAQ,QAAU,UAAY,YACpF4S,EAAM+L,OAAOwB,GAEjB,EAAoBvN,EAAM,GAAGzL,SACzB+Y,EAAaze,SAAQye,EAAa,GAAGzQ,MAAMiQ,SAAW9M,EAAM,GAAGzL,UAC/DgZ,EAAY1e,SAAQ0e,EAAY,GAAG1Q,MAAMiQ,QAAU9M,EAAM,GAAGzL,WAUxE,GAPAtH,EAAE0O,QAAQK,KACNwR,2BAA4B,YAAevgB,EAAE2R,KAAO,EAAK,KACzD6O,wBAAyB,YAAexgB,EAAE2R,KAAO,EAAK,KACtD8O,uBAAwB,YAAezgB,EAAE2R,KAAO,EAAK,KACrD+O,mBAAoB,YAAe1gB,EAAE2R,KAAO,EAAK,OAGjD3R,EAAEJ,OAAOwJ,KAAKC,OACd,GAAIlJ,IACA6f,EAAWnY,UAAU,qBAAuB7H,EAAE6E,MAAQ,EAAI7E,EAAEJ,OAAOwJ,KAAKE,cAAgB,QAAWtJ,EAAE6E,MAAQ,EAAK,0CAA6C7E,EAAEJ,OAAOwJ,KAAgB,YAAI,SAE3L,CACD,GAAIuX,GAAc/a,KAAKC,IAAIoa,GAA4D,GAA3Cra,KAAK8M,MAAM9M,KAAKC,IAAIoa,GAAiB,IAC7EW,EAAa,KAAOhb,KAAKib,IAAkB,EAAdF,EAAkB/a,KAAK4U,GAAK,KAAO,EAAI5U,KAAKkb,IAAkB,EAAdH,EAAkB/a,KAAK4U,GAAK,KAAO,GAChHuG,EAAS/gB,EAAEJ,OAAOwJ,KAAKG,YACvByX,EAAShhB,EAAEJ,OAAOwJ,KAAKG,YAAcqX,EACrCnc,EAASzE,EAAEJ,OAAOwJ,KAAKE,YAC3B0W,GAAWnY,UAAU,WAAakZ,EAAS,QAAUC,EAAS,uBAAyBhhB,EAAE8E,OAAS,EAAIL,GAAU,QAAWzE,EAAE8E,OAAS,EAAIkc,EAAU,uBAG5J,GAAIC,GAAWjhB,EAAEkhB,UAAYlhB,EAAEmhB,aAAiBnhB,EAAE2R,KAAO,EAAK,CAC9D3R,GAAE0O,QAAQ7G,UAAU,qBAAuBoZ,EAAU,gBAAkB9gB,IAAQ,EAAI8f,GAAiB,iBAAmB9f,KAAS8f,EAAgB,GAAK,SAEzJnD,cAAe,SAAUJ,GACrB1c,EAAE6R,OAAO+K,WAAWF,GAAU7L,KAAK,gHAAgH+L,WAAWF,GAC1J1c,EAAEJ,OAAOwJ,KAAKC,SAAWlJ,KACzBH,EAAEE,UAAU2Q,KAAK,uBAAuB+L,WAAWF,KAI/D5T,WACIqU,aAAc,WAMV,IAAK,GALDtV,GAAY7H,EAAEoP,UACdgS,EAASjhB,KAAS0H,EAAY7H,EAAE6E,MAAQ,GAAKgD,EAAY7H,EAAE8E,OAAS,EACpEiE,EAAS5I,IAAQH,EAAEJ,OAAOkJ,UAAUC,QAAS/I,EAAEJ,OAAOkJ,UAAUC,OAChEqG,EAAYpP,EAAEJ,OAAOkJ,UAAUG,MAE1BlE,EAAI,EAAGnD,EAAS5B,EAAE6R,OAAOjQ,OAAYA,EAAJmD,EAAYA,IAAK,CACvD,GAAIgO,GAAQ/S,EAAE6R,OAAOmB,GAAGjO,GACpB6N,EAAY5S,EAAE+R,gBAAgBhN,GAC9Bsc,EAActO,EAAM,GAAGiB,kBACvBsN,GAAoBF,EAASC,EAAczO,EAAY,GAAKA,EAAY5S,EAAEJ,OAAOkJ,UAAUI,SAE3FqY,EAAUphB,IAAQ4I,EAASuY,EAAmB,EAC9CE,EAAUrhB,IAAQ,EAAI4I,EAASuY,EAE/BG,GAAcrS,EAAYxJ,KAAKC,IAAIyb,GAEnCI,EAAavhB,IAAQ,EAAIH,EAAEJ,OAAOkJ,UAAUE,QAAU,EACtD2Y,EAAaxhB,IAAQH,EAAEJ,OAAOkJ,UAAUE,QAAU,EAAqB,CAGvEpD,MAAKC,IAAI8b,GAAc,OAAOA,EAAa,GAC3C/b,KAAKC,IAAI6b,GAAc,OAAOA,EAAa,GAC3C9b,KAAKC,IAAI4b,GAAc,OAAOA,EAAa,GAC3C7b,KAAKC,IAAI0b,GAAW,OAAOA,EAAU,GACrC3b,KAAKC,IAAI2b,GAAW,OAAOA,EAAU,EAEzC,IAAII,GAAiB,eAAiBD,EAAa,MAAQD,EAAa,MAAQD,EAAa,gBAAkBD,EAAU,gBAAkBD,EAAU,MAIrJ,IAFAxO,EAAMlL,UAAU+Z,GAChB7O,EAAM,GAAGnD,MAAMiS,QAAUjc,KAAKC,IAAID,KAAKua,MAAMmB,IAAqB,EAC9DthB,EAAEJ,OAAOkJ,UAAUK,aAAc,CAEjC,GAAIkX,GAAuBtN,EAAMlC,KAAd1Q,IAAmB,4BAA0C,4BAC5EmgB,EAAsBvN,EAAMlC,KAAd1Q,IAAmB,6BAA2C,8BACpD,KAAxBkgB,EAAaze,SACbye,EAAelf,EAAE,oCAAsChB,IAAQ,OAAS,OAAS,YACjF4S,EAAM+L,OAAOuB,IAEU,IAAvBC,EAAY1e,SACZ0e,EAAcnf,EAAE,oCAAsChB,IAAQ,QAAU,UAAY,YACpF4S,EAAM+L,OAAOwB,IAEbD,EAAaze,SAAQye,EAAa,GAAGzQ,MAAMiQ,QAAUyB,EAAmB,EAAIA,EAAmB,GAC/FhB,EAAY1e,SAAQ0e,EAAY,GAAG1Q,MAAMiQ,SAAYyB,EAAoB,GAAKA,EAAmB,IAK7G,GAAIthB,EAAEmX,QAAQC,GAAI,CACd,GAAI0K,GAAK9hB,EAAE0O,QAAQ,GAAGkB,KACtBkS,GAAGC,kBAAoBX,EAAS,WAGxCtE,cAAe,SAAUJ,GACrB1c,EAAE6R,OAAO+K,WAAWF,GAAU7L,KAAK,gHAAgH+L,WAAWF,MAQ1K1c,EAAEsc,MACE0F,oBAAoB,EACpBC,iBAAkB,SAAUxgB,EAAOygB,GAC/B,GAAqB,mBAAVzgB,KACoB,mBAApBygB,KAAiCA,GAAkB,GACtC,IAApBliB,EAAE6R,OAAOjQ,QAAb,CAEA,GAAImR,GAAQ/S,EAAE6R,OAAOmB,GAAGvR,GACpB0gB,EAAMpP,EAAMlC,KAAK,oEACjBkC,EAAMiI,SAAS,gBAAmBjI,EAAMiI,SAAS,uBAA0BjI,EAAMiI,SAAS,wBAC1FmH,EAAIC,IAAIrP,EAAM,IAEC,IAAfoP,EAAIvgB,QAERugB,EAAIpiB,KAAK,WACL,GAAIsiB,GAAOlhB,EAAErB,KACbuiB,GAAKxT,SAAS,sBACd,IAAIyT,GAAaD,EAAK3a,KAAK,mBACvBwI,EAAMmS,EAAK3a,KAAK,WACpB1H,GAAEgQ,UAAUqS,EAAK,GAAKnS,GAAOoS,GAAa,EAAO,WAY7C,GAXIA,GACAD,EAAKtT,IAAI,mBAAoB,OAASuT,EAAa,KACnDD,EAAKnD,WAAW,qBAGhBmD,EAAK3a,KAAK,MAAOwI,GACjBmS,EAAKnD,WAAW,aAGpBmD,EAAKxT,SAAS,sBAAsByF,YAAY,uBAChDvB,EAAMlC,KAAK,sCAAsC8N,SAC7C3e,EAAEJ,OAAOY,MAAQ0hB,EAAiB,CAClC,GAAIK,GAAqBxP,EAAMrL,KAAK,0BACpC,IAAIqL,EAAMiI,SAAShb,EAAEJ,OAAOkN,qBAAsB,CAC9C,GAAI0V,GAAgBxiB,EAAE0O,QAAQC,SAAS,6BAA+B4T,EAAqB,WAAaviB,EAAEJ,OAAOkN,oBAAsB,IACvI9M,GAAEsc,KAAK2F,iBAAiBO,EAAc/gB,SAAS,OAE9C,CACD,GAAIghB,GAAkBziB,EAAE0O,QAAQC,SAAS,IAAM3O,EAAEJ,OAAOkN,oBAAsB,6BAA+ByV,EAAqB,KAClIviB,GAAEsc,KAAK2F,iBAAiBQ,EAAgBhhB,SAAS,IAGzDzB,EAAEwC,KAAK,mBAAoBxC,EAAG+S,EAAM,GAAIsP,EAAK,MAGjDriB,EAAEwC,KAAK,kBAAmBxC,EAAG+S,EAAM,GAAIsP,EAAK,QAIpDK,KAAM,WACF,GAAI3d,EACJ,IAAI/E,EAAEJ,OAAO8L,sBACT1L,EAAE0O,QAAQC,SAAS,IAAM3O,EAAEJ,OAAOiN,mBAAmB9M,KAAK,WACtDC,EAAEsc,KAAK2F,iBAAiB9gB,EAAErB,MAAM2B,eAIpC,IAAIzB,EAAEJ,OAAOqK,cAAgB,EACzB,IAAKlF,EAAI/E,EAAE+U,YAAahQ,EAAI/E,EAAE+U,YAAc/U,EAAEJ,OAAOqK,cAAgBlF,IAC7D/E,EAAE6R,OAAO9M,IAAI/E,EAAEsc,KAAK2F,iBAAiBld,OAI7C/E,GAAEsc,KAAK2F,iBAAiBjiB,EAAE+U,YAGlC,IAAI/U,EAAEJ,OAAOoM,sBACT,GAAIhM,EAAEJ,OAAOqK,cAAgB,EAAG,CAE5B,IAAKlF,EAAI/E,EAAE+U,YAAc/U,EAAEJ,OAAOqK,cAAelF,EAAI/E,EAAE+U,YAAc/U,EAAEJ,OAAOqK,cAAgBjK,EAAEJ,OAAOqK,cAAelF,IAC9G/E,EAAE6R,OAAO9M,IAAI/E,EAAEsc,KAAK2F,iBAAiBld,EAG7C,KAAKA,EAAI/E,EAAE+U,YAAc/U,EAAEJ,OAAOqK,cAAelF,EAAI/E,EAAE+U,YAAchQ,IAC7D/E,EAAE6R,OAAO9M,IAAI/E,EAAEsc,KAAK2F,iBAAiBld,OAG5C,CACD,GAAI8W,GAAY7b,EAAE0O,QAAQC,SAAS,IAAM3O,EAAEJ,OAAOmN,eAC9C8O,GAAUja,OAAS,GAAG5B,EAAEsc,KAAK2F,iBAAiBpG,EAAUpa,QAE5D,IAAIkhB,GAAY3iB,EAAE0O,QAAQC,SAAS,IAAM3O,EAAEJ,OAAOoN,eAC9C2V,GAAU/gB,OAAS,GAAG5B,EAAEsc,KAAK2F,iBAAiBU,EAAUlhB,WAIxEsa,kBAAmB,WACX/b,EAAEJ,OAAOmM,cACL/L,EAAEJ,OAAOqM,+BAAkCjM,EAAEJ,OAAOqM,+BAAiCjM,EAAEsc,KAAK0F,qBAC5FhiB,EAAEsc,KAAKoG,QAInB1G,gBAAiB,WACThc,EAAEJ,OAAOmM,cAAgB/L,EAAEJ,OAAOqM,8BAClCjM,EAAEsc,KAAKoG,SASnB1iB,EAAE2J,WACEsM,IAAK,WACD,GAAKjW,EAAEJ,OAAO+J,UAAd,CACA,GAAIiZ,GAAK5iB,EAAE2J,SACXiZ,GAAGC,MAAQ1hB,EAAEnB,EAAEJ,OAAO+J,WACtBiZ,EAAGE,KAAOF,EAAGC,MAAMhS,KAAK,0BACD,IAAnB+R,EAAGE,KAAKlhB,SACRghB,EAAGE,KAAO3hB,EAAE,6CACZyhB,EAAGC,MAAM/D,OAAO8D,EAAGE,OAEvBF,EAAGE,KAAK,GAAGlT,MAAM/K,MAAQ,GACzB+d,EAAGE,KAAK,GAAGlT,MAAM9K,OAAS,GAC1B8d,EAAGG,UAAY5iB,IAAQyiB,EAAGC,MAAM,GAAGG,YAAcJ,EAAGC,MAAM,GAAGI,aAE7DL,EAAGM,QAAUljB,EAAE2R,KAAO3R,EAAEoS,YACxBwQ,EAAGO,YAAcP,EAAGM,SAAWN,EAAGG,UAAY/iB,EAAE2R,MAChDiR,EAAGQ,SAAWR,EAAGG,UAAYH,EAAGM,QAE5B/iB,IACAyiB,EAAGE,KAAK,GAAGlT,MAAM/K,MAAQ+d,EAAGQ,SAAW,KAGvCR,EAAGE,KAAK,GAAGlT,MAAM9K,OAAS8d,EAAGQ,SAAW,KAIxCR,EAAGC,MAAM,GAAGjT,MAAMyT,QADlBT,EAAGM,SAAW,EACc,OAGA,GAE5BljB,EAAEJ,OAAOgK,gBACTgZ,EAAGC,MAAM,GAAGjT,MAAMiQ,QAAU,KAGpC1C,aAAc,WACV,GAAKnd,EAAEJ,OAAO+J,UAAd,CACA,GAGI2Z,GAFAV,EAAK5iB,EAAE2J,UAIP4Z,GAHYvjB,EAAEoP,WAAa,EAGjBwT,EAAGQ,SACjBE,IAAUV,EAAGG,UAAYH,EAAGQ,UAAYpjB,EAAEsH,SACtCtH,EAAE0E,KAAOvE,KACTmjB,GAAUA,EACNA,EAAS,GACTC,EAAUX,EAAGQ,SAAWE,EACxBA,EAAS,IAEHA,EAASV,EAAGQ,SAAWR,EAAGG,YAChCQ,EAAUX,EAAGG,UAAYO,IAIhB,EAATA,GACAC,EAAUX,EAAGQ,SAAWE,EACxBA,EAAS,GAEJA,EAASV,EAAGQ,SAAWR,EAAGG,YAC/BQ,EAAUX,EAAGG,UAAYO,GAG7BnjB,KAEIyiB,EAAGE,KAAKjb,UADR7H,EAAEsO,QAAQE,aACQ,eAAiB,EAAW,YAG5B,cAAgB,EAAW,OAEjDoU,EAAGE,KAAK,GAAGlT,MAAM/K,MAAQ0e,EAAU,OAI/BX,EAAGE,KAAKjb,UADR7H,EAAEsO,QAAQE,aACQ,oBAAsB,EAAW,SAGjC,cAAgB,EAAW,OAEjDoU,EAAGE,KAAK,GAAGlT,MAAM9K,OAASye,EAAU,MAEpCvjB,EAAEJ,OAAOgK,gBACT/C,aAAa+b,EAAG9b,SAChB8b,EAAGC,MAAM,GAAGjT,MAAMiQ,QAAU,EAC5B+C,EAAG9b,QAAUvG,WAAW,WACpBqiB,EAAGC,MAAM,GAAGjT,MAAMiQ,QAAU,EAC5B+C,EAAGC,MAAMjG,WAAW,MACrB,QAGXE,cAAe,SAAUJ,GAChB1c,EAAEJ,OAAO+J,WACd3J,EAAE2J,UAAUmZ,KAAKlG,WAAWF,KAOpC1c,EAAE+c,YACEI,aAAc,SAAU/N,EAAWuN,GAG/B,QAAS6G,GAAuBC,GAC5BrU,EAAYqU,EAAE/e,KAA8B,eAAvB+e,EAAE7jB,OAAOQ,WAA8BJ,EAAEoP,UAAYpP,EAAEoP,UAC5EwR,GAAc6C,EAAEld,eAAiBkd,EAAEnS,iBAAmBtR,EAAEuG,eAAiBvG,EAAEsR,gBAC3EoS,GAAuBtU,EAAYpP,EAAEsR,gBAAkBsP,EAAa6C,EAAEnS,eAClEtR,EAAEJ,OAAO2M,iBACTmX,EAAsBD,EAAEld,eAAiBmd,GAE7CD,EAAE/c,eAAegd,GACjBD,EAAEhd,oBAAoBid,GAAqB,EAAO1jB,GAClDyjB,EAAE9c,oBAXN,GACIia,GAAY8C,EADZC,EAAa3jB,EAAEJ,OAAO0M,OAa1B,IAAItM,EAAE4jB,QAAQD,GACV,IAAK,GAAI5e,GAAI,EAAGA,EAAI4e,EAAW/hB,OAAQmD,IAC/B4e,EAAW5e,KAAO4X,GAAgBgH,EAAW5e,YAAc9E,IAC3DujB,EAAuBG,EAAW5e,QAIrC4e,aAAsB1jB,IAAU0c,IAAiBgH,GACtDH,EAAuBG,IAG/B7G,cAAe,SAAUJ,EAAUC,GAG/B,QAASkH,GAAwBJ,GAC7BA,EAAEjd,qBAAqBkW,EAAU1c,GAChB,IAAb0c,IACA+G,EAAE1H,oBACF0H,EAAE/U,QAAQ2C,cAAc,WACfsS,GACLF,EAAEzH,qBARd,GACIjX,GADA4e,EAAa3jB,EAAEJ,OAAO0M,OAY1B,IAAItM,EAAE4jB,QAAQD,GACV,IAAK5e,EAAI,EAAGA,EAAI4e,EAAW/hB,OAAQmD,IAC3B4e,EAAW5e,KAAO4X,GAAgBgH,EAAW5e,YAAc9E,IAC3D4jB,EAAwBF,EAAW5e,QAItC4e,aAAsB1jB,IAAU0c,IAAiBgH,GACtDE,EAAwBF,KAQpC3jB,EAAE+J,SACE+Z,KAAM,WACF,GAAK9jB,EAAEJ,OAAOmK,QAAd,CACA/J,EAAE+J,QAAQga,aAAc,CACxB,IAAIC,GAAOtgB,SAASugB,SAASD,KAAK7R,QAAQ,IAAK,GAC/C,IAAK6R,EAEL,IAAK,GADD3b,GAAQ,EACHtD,EAAI,EAAGnD,EAAS5B,EAAE6R,OAAOjQ,OAAYA,EAAJmD,EAAYA,IAAK,CACvD,GAAIgO,GAAQ/S,EAAE6R,OAAOmB,GAAGjO,GACpBmf,EAAYnR,EAAMrL,KAAK,YAC3B,IAAIwc,IAAcF,IAASjR,EAAMiI,SAAShb,EAAEJ,OAAOkN,qBAAsB,CACrE,GAAIrL,GAAQsR,EAAMtR,OAClBzB,GAAEmW,QAAQ1U,EAAO4G,EAAOrI,EAAEJ,OAAOgO,oBAAoB,OAIjE2O,QAAS,WACAvc,EAAE+J,QAAQga,aAAgB/jB,EAAEJ,OAAOmK,UACxCrG,SAASugB,SAASD,KAAOhkB,EAAE6R,OAAOmB,GAAGhT,EAAE+U,aAAarN,KAAK,cAAgB,MAwEjF1H,EAAEmkB,uBAAyB,WACvBhjB,EAAEuC,UAAU0gB,IAAI,UAAWrhB,IAE/B/C,EAAEqkB,sBAAwB,WACtBljB,EAAEuC,UAAU4gB,GAAG,UAAWvhB,IAO9B/C,EAAEuF,YACEC,OAAO,EACP0B,gBAAgB,GAAKlF,QAAOgF,MAAQC,WAEpCjH,EAAEJ,OAAOkK,kBAAmB,CAI5B,GAH8BnI,SAA1B+B,SAAS6gB,eACTvkB,EAAEuF,WAAWC,MAAQ,eAEpBxF,EAAEuF,WAAWC,MACd,IACI,GAAIxD,QAAOwiB,WAAW,SACtBxkB,EAAEuF,WAAWC,MAAQ,QACvB,MAAOxE,IAERhB,EAAEuF,WAAWC,QACdxF,EAAEuF,WAAWC,MAAQ,kBAyF7BxF,EAAEykB,yBAA2B,WACzB,MAAKzkB,GAAEuF,WAAWC,OAClBxF,EAAEE,UAAUkkB,IAAIpkB,EAAEuF,WAAWC,MAAOH,IAC7B,IAFyB,GAKpCrF,EAAE0kB,wBAA0B,WACxB,MAAK1kB,GAAEuF,WAAWC,OAClBxF,EAAEE,UAAUokB,GAAGtkB,EAAEuF,WAAWC,MAAOH,IAC5B,IAFyB,GA2CpCrF,EAAE0J,UACEyT,aAAc,WACVnd,EAAEE,UAAUyO,SAAS,8EAA8E5O,KAAK,WACpGsH,EAAqBvH,KAAME,EAAEsH,YAGjCtH,EAAE6R,OAAO9R,KAAK,WACV,GAAIgT,GAAQ5R,EAAErB,KACdiT,GAAMlC,KAAK,8EAA8E9Q,KAAK,WAC1F,GAAIuH,GAAW1B,KAAKoQ,IAAIpQ,KAAKiO,IAAId,EAAM,GAAGzL,SAAU,IAAK,EACzDD,GAAqBvH,KAAMwH,QAIvCwV,cAAe,SAAUJ,GACG,mBAAbA,KAA0BA,EAAW1c,EAAEJ,OAAOyI,OACzDrI,EAAEE,UAAU2Q,KAAK,8EAA8E9Q,KAAK,WAChG,GAAImB,GAAKC,EAAErB,MACP6kB,EAAmB/c,SAAS1G,EAAGwG,KAAK,iCAAkC,KAAOgV,CAChE,KAAbA,IAAgBiI,EAAmB,GACvCzjB,EAAG0b,WAAW+H,OAS1B3kB,EAAE4kB,WACF,KAAK,GAAIC,KAAU7kB,GAAE8kB,QAAS,CAC1B,GAAIvd,GAAIvH,EAAE8kB,QAAQD,GAAQ7kB,EAAGA,EAAEJ,OAAOilB,GAClCtd,IAAGvH,EAAE4kB,SAAS9hB,KAAKyE,GAwR3B,MArRAvH,GAAE+kB,YAAc,SAAUhd,GACtB,IAAK,GAAIhD,GAAI,EAAGA,EAAI/E,EAAE4kB,SAAShjB,OAAQmD,IAC/BgD,IAAa/H,GAAE4kB,SAAS7f,IACxB/E,EAAE4kB,SAAS7f,GAAGgD,GAAWid,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIA,UAAU,KAmBvGhlB,EAAEilB,yBAGFjlB,EAAEwC,KAAO,SAAUuF,GAEX/H,EAAEJ,OAAOmI,IACT/H,EAAEJ,OAAOmI,GAAWid,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAE1F,IAAIjgB,EAEJ,IAAI/E,EAAEilB,sBAAsBld,GACxB,IAAKhD,EAAI,EAAGA,EAAI/E,EAAEilB,sBAAsBld,GAAWnG,OAAQmD,IACvD/E,EAAEilB,sBAAsBld,GAAWhD,GAAGigB,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAI5GhlB,GAAE+kB,aAAa/kB,EAAE+kB,YAAYhd,EAAWid,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIA,UAAU,KAElHhlB,EAAEskB,GAAK,SAAUvc,EAAWmd,GAIxB,MAHAnd,GAAYD,EAAmBC,GAC1B/H,EAAEilB,sBAAsBld,KAAY/H,EAAEilB,sBAAsBld,OACjE/H,EAAEilB,sBAAsBld,GAAWjF,KAAKoiB,GACjCllB,GAEXA,EAAEokB,IAAM,SAAUrc,EAAWmd,GACzB,GAAIngB,EAEJ,IADAgD,EAAYD,EAAmBC,GACR,mBAAZmd,GAGP,MADAllB,GAAEilB,sBAAsBld,MACjB/H,CAEX,IAAKA,EAAEilB,sBAAsBld,IAA4D,IAA9C/H,EAAEilB,sBAAsBld,GAAWnG,OAA9E,CACA,IAAKmD,EAAI,EAAGA,EAAI/E,EAAEilB,sBAAsBld,GAAWnG,OAAQmD,IACpD/E,EAAEilB,sBAAsBld,GAAWhD,KAAOmgB,GAASllB,EAAEilB,sBAAsBld,GAAWod,OAAOpgB,EAAG,EAEvG,OAAO/E,KAEXA,EAAEolB,KAAO,SAAUrd,EAAWmd,GAC1Bnd,EAAYD,EAAmBC,EAC/B,IAAIsd,GAAW,WACXH,EAAQF,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIA,UAAU,IAC1EhlB,EAAEokB,IAAIrc,EAAWsd,GAGrB,OADArlB,GAAEskB,GAAGvc,EAAWsd,GACTrlB,GAIXA,EAAEuN,MACE+X,cAAe,SAAUC,GAErB,MADAA,GAAI,GAAGC,SAAW,IACXD,GAEXE,QAAS,SAAUF,EAAKG,GAEpB,MADAH,GAAI7d,KAAK,OAAQge,GACVH,GAGXI,SAAU,SAAUJ,EAAKK,GAErB,MADAL,GAAI7d,KAAK,aAAcke,GAChBL,GAGXhQ,QAAS,SAAUgQ,GAEf,MADAA,GAAI7d,KAAK,iBAAiB,GACnB6d,GAGX/P,OAAQ,SAAU+P,GAEd,MADAA,GAAI7d,KAAK,iBAAiB,GACnB6d,GAGX7N,WAAY,SAAUlS,GACI,KAAlBA,EAAMtC,UACN/B,EAAEqE,EAAMpE,QAAQC,GAAGrB,EAAEJ,OAAO2L,aAC5BvL,EAAEyX,YAAYjS,GAEVxF,EAAEuN,KAAKsY,OADP7lB,EAAEW,MACYX,EAAEJ,OAAOkmB,aAGT9lB,EAAEJ,OAAOmmB,eAGtB5kB,EAAEqE,EAAMpE,QAAQC,GAAGrB,EAAEJ,OAAO4L,cACjCxL,EAAE2X,YAAYnS,GAEVxF,EAAEuN,KAAKsY,OADP7lB,EAAEoH,YACYpH,EAAEJ,OAAOomB,cAGThmB,EAAEJ,OAAOqmB,iBAKnCC,WAAY/kB,EAAE,sFAEd0kB,OAAQ,SAAUM,GACd,GAAIC,GAAepmB,EAAEuN,KAAK2Y,UACE,KAAxBE,EAAaxkB,SACjBwkB,EAAaxQ,KAAK,IAClBwQ,EAAaxQ,KAAKuQ,KAEtBrC,KAAM,WAEF,GAAI9jB,EAAEJ,OAAO2L,WAAY,CACrB,GAAIA,GAAapK,EAAEnB,EAAEJ,OAAO2L,WAC5BvL,GAAEuN,KAAK+X,cAAc/Z,GACrBvL,EAAEuN,KAAKkY,QAAQla,EAAY,UAC3BvL,EAAEuN,KAAKoY,SAASpa,EAAYvL,EAAEJ,OAAOmmB,cAEzC,GAAI/lB,EAAEJ,OAAO4L,WAAY,CACrB,GAAIA,GAAarK,EAAEnB,EAAEJ,OAAO4L,WAC5BxL,GAAEuN,KAAK+X,cAAc9Z,GACrBxL,EAAEuN,KAAKkY,QAAQja,EAAY,UAC3BxL,EAAEuN,KAAKoY,SAASna,EAAYxL,EAAEJ,OAAOqmB,cAGzC9kB,EAAEnB,EAAEE,WAAW4e,OAAO9e,EAAEuN,KAAK2Y,aAEjCG,QAAS,WACDrmB,EAAEuN,KAAK2Y,YAAclmB,EAAEuN,KAAK2Y,WAAWtkB,OAAS,GAAG5B,EAAEuN,KAAK2Y,WAAWvH,WAQjF3e,EAAE8jB,KAAO,WACD9jB,EAAEJ,OAAOY,MAAMR,EAAE0e,aACrB1e,EAAEwR,sBACFxR,EAAE4R,mBACF5R,EAAEyV,mBACEzV,EAAEJ,OAAO+J,WAAa3J,EAAE2J,WACxB3J,EAAE2J,UAAUsM,MAEQ,UAApBjW,EAAEJ,OAAOiJ,QAAsB7I,EAAE6c,QAAQ7c,EAAEJ,OAAOiJ,UAC7C7I,EAAEJ,OAAOY,MAAMR,EAAE0G,iBACtB1G,EAAE6c,QAAQ7c,EAAEJ,OAAOiJ,QAAQsU,gBAE3Bnd,EAAEJ,OAAOY,KACTR,EAAEmW,QAAQnW,EAAEJ,OAAOwI,aAAepI,EAAEqM,aAAc,EAAGrM,EAAEJ,OAAOgO,qBAG9D5N,EAAEmW,QAAQnW,EAAEJ,OAAOwI,aAAc,EAAGpI,EAAEJ,OAAOgO,oBACf,IAA1B5N,EAAEJ,OAAOwI,eACLpI,EAAE0J,UAAY1J,EAAEJ,OAAO8J,UAAU1J,EAAE0J,SAASyT,eAC5Cnd,EAAEsc,MAAQtc,EAAEJ,OAAOmM,cACnB/L,EAAEsc,KAAKoG,OACP1iB,EAAEsc,KAAK0F,oBAAqB,KAIxChiB,EAAE6X,eACE7X,EAAEJ,OAAOuC,UAAYnC,EAAEsO,QAAQnM,UAC/BnC,EAAEse,gBAEFte,EAAEJ,OAAOsM,gBAAkBlM,EAAEJ,OAAOmM,aACpC/L,EAAEkM,gBAEFlM,EAAEJ,OAAOS,UACTL,EAAEkR,gBAEFlR,EAAEJ,OAAOiK,iBACL7J,EAAEqkB,uBAAuBrkB,EAAEqkB,wBAE/BrkB,EAAEJ,OAAOkK,mBACL9J,EAAE0kB,yBAAyB1kB,EAAE0kB,0BAEjC1kB,EAAEJ,OAAOmK,SACL/J,EAAE+J,SAAS/J,EAAE+J,QAAQ+Z,OAEzB9jB,EAAEJ,OAAO2N,MAAQvN,EAAEuN,MAAMvN,EAAEuN,KAAKuW,OACpC9jB,EAAEwC,KAAK,SAAUxC,IAIrBA,EAAEsmB,cAAgB,WAEdtmB,EAAEE,UAAUoU,YAAYtU,EAAEiO,WAAWkB,KAAK,MAAM+P,WAAW,SAG3Dlf,EAAE0O,QAAQwQ,WAAW,SAGjBlf,EAAE6R,QAAU7R,EAAE6R,OAAOjQ,QACrB5B,EAAE6R,OACGyC,aACCtU,EAAEJ,OAAOiN,kBACT7M,EAAEJ,OAAOgN,iBACT5M,EAAEJ,OAAOmN,eACT/M,EAAEJ,OAAOoN,gBACTmC,KAAK,MACN+P,WAAW,SACXA,WAAW,sBACXA,WAAW,mBAIhBlf,EAAE4O,qBAAuB5O,EAAE4O,oBAAoBhN,QAC/C5B,EAAE4O,oBAAoB0F,YAAYtU,EAAEJ,OAAOyN,uBAE3CrN,EAAEqV,SAAWrV,EAAEqV,QAAQzT,QACvB5B,EAAEqV,QAAQf,YAAYtU,EAAEJ,OAAOuN,mBAI/BnN,EAAEJ,OAAO4L,YAAYrK,EAAEnB,EAAEJ,OAAO4L,YAAY8I,YAAYtU,EAAEJ,OAAOwN,qBACjEpN,EAAEJ,OAAO2L,YAAYpK,EAAEnB,EAAEJ,OAAO2L,YAAY+I,YAAYtU,EAAEJ,OAAOwN,qBAGjEpN,EAAEJ,OAAO+J,WAAa3J,EAAE2J,YACpB3J,EAAE2J,UAAUkZ,OAAS7iB,EAAE2J,UAAUkZ,MAAMjhB,QAAQ5B,EAAE2J,UAAUkZ,MAAM3D,WAAW,SAC5Elf,EAAE2J,UAAUmZ,MAAQ9iB,EAAE2J,UAAUmZ,KAAKlhB,QAAQ5B,EAAE2J,UAAUmZ,KAAK5D,WAAW,WAKrFlf,EAAEqmB,QAAU,SAAUE,EAAgBD,GAElCtmB,EAAE8X,eAEF9X,EAAEa,eAEEb,EAAEJ,OAAOY,MACTR,EAAEif,cAGFqH,GACAtmB,EAAEsmB,gBAGNtmB,EAAEwe,sBAEExe,EAAEJ,OAAOiK,iBACL7J,EAAEmkB,wBAAwBnkB,EAAEmkB,yBAEhCnkB,EAAEJ,OAAOkK,mBACL9J,EAAEykB,0BAA0BzkB,EAAEykB,2BAGlCzkB,EAAEJ,OAAO2N,MAAQvN,EAAEuN,MAAMvN,EAAEuN,KAAK8Y,UAEpCrmB,EAAEwC,KAAK,aAEH+jB,KAAmB,IAAOvmB,EAAI,OAGtCA,EAAE8jB,OAKK9jB,GAOXC,GAAOumB,WACHtF,SAAU,WACN,GAAIuF,GAAKnQ,UAAUoQ,UAAU7iB,aAC7B,OAAQ4iB,GAAG9e,QAAQ,WAAa,GAAK8e,EAAG9e,QAAQ,UAAY,GAAK8e,EAAG9e,QAAQ,WAAa,KAE7FwZ,YAAa,+CAA+CwF,KAAKrQ,UAAUoQ,WAC3E9C,QAAS,SAAUgD,GACf,MAAgD,mBAAzCC,OAAOL,UAAUtI,SAAS4I,MAAMF,IAK3CzP,SACIC,GAAIpV,OAAOsU,UAAUC,gBAAkBvU,OAAOsU,UAAUE,iBACxDiE,QAAUzY,OAAOsU,UAAUE,kBAAoBxU,OAAOsU,UAAUyQ,iBAAmB,GAAO/kB,OAAOsU,UAAUC,gBAAkBvU,OAAOsU,UAAU0Q,eAAiB,GAKnK/X,OAAQ,WACJ,GAAIwX,GAAKnQ,UAAUoQ,UACfxX,EAAUuX,EAAGQ,MAAM,+BACnBC,EAAOT,EAAGQ,MAAM,wBAEhBE,GADOV,EAAGQ,MAAM,4BACNC,GAAQT,EAAGQ,MAAM,0BAC/B,QACIzP,IAAK0P,GAAQC,GAAUD,EACvBhY,QAASA,MAMjBZ,SACIG,MAASzM,OAAOolB,WAAaA,UAAU3Y,SAAU,GAAS,WACtD,SAAW,gBAAkBzM,SAAWA,OAAOqlB,eAAiB3jB,mBAAoB2jB,mBAGxF7Y,aAAgBxM,OAAOolB,WAAaA,UAAUE,mBAAoB,GAAS,WACvE,GAAIC,GAAM7jB,SAAS8jB,cAAc,OAAO5X,KACxC,OAAQ,qBAAuB2X,IAAO,kBAAoBA,IAAO,gBAAkBA,IAAO,iBAAmBA,IAAO,eAAiBA,MAGzIhZ,QAAS,WAGL,IAAK,GAFDgZ,GAAM7jB,SAAS8jB,cAAc,OAAO5X,MACpC6X,EAAS,yKAA2KtJ,MAAM,KACrLpZ,EAAI,EAAGA,EAAI0iB,EAAO7lB,OAAQmD,IAC/B,GAAI0iB,EAAO1iB,IAAMwiB,GAAK,OAAO,KAIrCplB,SAAU,WACN,MAAQ,oBAAsBH,SAAU,0BAA4BA,YAM5E8iB,WA8pBJ,KAAK,GAvpBD5W,IAAO,WACP,GAAIA,GAAO,SAAU0Y,GACjB,GAAIc,GAAQ5nB,KAAMiF,EAAI,CAEtB,KAAKA,EAAI,EAAGA,EAAI6hB,EAAIhlB,OAAQmD,IACxB2iB,EAAM3iB,GAAK6hB,EAAI7hB,EAInB,OAFA2iB,GAAM9lB,OAASglB,EAAIhlB,OAEZ9B,MAEPqB,EAAI,SAAUF,EAAU0mB,GACxB,GAAIf,MAAU7hB,EAAI,CAClB,IAAI9D,IAAa0mB,GACT1mB,YAAoBiN,GACpB,MAAOjN,EAGf,IAAIA,EAEA,GAAwB,gBAAbA,GAAuB,CAC9B,GAAI2mB,GAAKC,EAAYjS,EAAO3U,EAAS6mB,MACrC,IAAIlS,EAAKjO,QAAQ,MAAQ,GAAKiO,EAAKjO,QAAQ,MAAQ,EAAG,CAClD,GAAIogB,GAAW,KAQf,KAP4B,IAAxBnS,EAAKjO,QAAQ,SAAcogB,EAAW,MACd,IAAxBnS,EAAKjO,QAAQ,SAAcogB,EAAW,UACd,IAAxBnS,EAAKjO,QAAQ,QAAwC,IAAxBiO,EAAKjO,QAAQ,UAAcogB,EAAW,MACxC,IAA3BnS,EAAKjO,QAAQ,YAAiBogB,EAAW,SACb,IAA5BnS,EAAKjO,QAAQ,aAAkBogB,EAAW,UAC9CF,EAAankB,SAAS8jB,cAAcO,GACpCF,EAAWG,UAAY/mB,EAClB8D,EAAI,EAAGA,EAAI8iB,EAAWI,WAAWrmB,OAAQmD,IAC1C6hB,EAAI9jB,KAAK+kB,EAAWI,WAAWljB,QAYnC,KAFI6iB,EANCD,GAA2B,MAAhB1mB,EAAS,IAAeA,EAASgmB,MAAM,aAM5CU,GAAWjkB,UAAUwkB,iBAAiBjnB,IAJtCyC,SAASykB,eAAelnB,EAASkd,MAAM,KAAK,KAMlDpZ,EAAI,EAAGA,EAAI6iB,EAAIhmB,OAAQmD,IACpB6iB,EAAI7iB,IAAI6hB,EAAI9jB,KAAK8kB,EAAI7iB,QAKhC,IAAI9D,EAASM,UAAYN,IAAae,QAAUf,IAAayC,SAC9DkjB,EAAI9jB,KAAK7B,OAGR,IAAIA,EAASW,OAAS,GAAKX,EAAS,GAAGM,SACxC,IAAKwD,EAAI,EAAGA,EAAI9D,EAASW,OAAQmD,IAC7B6hB,EAAI9jB,KAAK7B,EAAS8D,GAI9B,OAAO,IAAImJ,GAAK0Y,GAykBpB,OAvkBA1Y,GAAKsY,WAED3X,SAAU,SAAUuZ,GAChB,GAAyB,mBAAdA,GACP,MAAOtoB,KAGX,KAAK,GADDuoB,GAAUD,EAAUjK,MAAM,KACrBpZ,EAAI,EAAGA,EAAIsjB,EAAQzmB,OAAQmD,IAChC,IAAK,GAAI+W,GAAI,EAAGA,EAAIhc,KAAK8B,OAAQka,IAC7Bhc,KAAKgc,GAAGwM,UAAUlG,IAAIiG,EAAQtjB,GAGtC,OAAOjF,OAEXwU,YAAa,SAAU8T,GAEnB,IAAK,GADDC,GAAUD,EAAUjK,MAAM,KACrBpZ,EAAI,EAAGA,EAAIsjB,EAAQzmB,OAAQmD,IAChC,IAAK,GAAI+W,GAAI,EAAGA,EAAIhc,KAAK8B,OAAQka,IAC7Bhc,KAAKgc,GAAGwM,UAAU3J,OAAO0J,EAAQtjB,GAGzC,OAAOjF,OAEXkb,SAAU,SAAUoN,GAChB,MAAKtoB,MAAK,GACEA,KAAK,GAAGwoB,UAAUC,SAASH,IADlB,GAGzBnN,YAAa,SAAUmN,GAEnB,IAAK,GADDC,GAAUD,EAAUjK,MAAM,KACrBpZ,EAAI,EAAGA,EAAIsjB,EAAQzmB,OAAQmD,IAChC,IAAK,GAAI+W,GAAI,EAAGA,EAAIhc,KAAK8B,OAAQka,IAC7Bhc,KAAKgc,GAAGwM,UAAUE,OAAOH,EAAQtjB,GAGzC,OAAOjF,OAEX4H,KAAM,SAAU+gB,EAAOC,GACnB,GAAyB,IAArB1D,UAAUpjB,QAAiC,gBAAV6mB,GAEjC,MAAI3oB,MAAK,GAAWA,KAAK,GAAGiR,aAAa0X,GAC7B9mB,MAIZ,KAAK,GAAIoD,GAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IAC7B,GAAyB,IAArBigB,UAAUpjB,OAEV9B,KAAKiF,GAAG4jB,aAAaF,EAAOC,OAI5B,KAAK,GAAIE,KAAYH,GACjB3oB,KAAKiF,GAAG6jB,GAAYH,EAAMG,GAC1B9oB,KAAKiF,GAAG4jB,aAAaC,EAAUH,EAAMG,GAIjD,OAAO9oB,OAGfof,WAAY,SAAUxX,GAClB,IAAK,GAAI3C,GAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IAC7BjF,KAAKiF,GAAG8jB,gBAAgBnhB,EAE5B,OAAO5H,OAEXuO,KAAM,SAAUya,EAAKJ,GACjB,GAAqB,mBAAVA,GAAuB,CAE9B,GAAI5oB,KAAK,GAAI,CACT,GAAIipB,GAAUjpB,KAAK,GAAGiR,aAAa,QAAU+X,EAC7C,OAAIC,GAAgBA,EACXjpB,KAAK,GAAGkpB,wBAA2BF,IAAOhpB,MAAK,GAAGkpB,uBAAgClpB,KAAK,GAAGkpB,uBAAuBF,GAC9GnnB,OAEX,MAAOA,QAIZ,IAAK,GAAIoD,GAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IAAK,CAClC,GAAI7D,GAAKpB,KAAKiF,EACT7D,GAAG8nB,yBAAwB9nB,EAAG8nB,2BACnC9nB,EAAG8nB,uBAAuBF,GAAOJ,EAErC,MAAO5oB,OAIf+H,UAAY,SAAUA,GAClB,IAAK,GAAI9C,GAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IAAK,CAClC,GAAIkkB,GAAUnpB,KAAKiF,GAAG6K,KACtBqZ,GAAQrL,gBAAkBqL,EAAQlL,YAAckL,EAAQjL,YAAciL,EAAQpL,aAAeoL,EAAQnL,WAAamL,EAAQphB,UAAYA,EAE1I,MAAO/H,OAEX8c,WAAY,SAAUF,GACM,gBAAbA,KACPA,GAAsB,KAE1B,KAAK,GAAI3X,GAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IAAK,CAClC,GAAIkkB,GAAUnpB,KAAKiF,GAAG6K,KACtBqZ,GAAQC,yBAA2BD,EAAQE,qBAAuBF,EAAQG,qBAAuBH,EAAQI,sBAAwBJ,EAAQK,oBAAsBL,EAAQM,mBAAqB7M,EAEhM,MAAO5c,OAGXwkB,GAAI,SAAUvc,EAAWyhB,EAAgBC,EAAUC,GAC/C,QAASC,GAAgB3oB,GACrB,GAAII,GAASJ,EAAEI,MACf,IAAID,EAAEC,GAAQC,GAAGmoB,GAAiBC,EAASG,KAAKxoB,EAAQJ,OAGpD,KAAK,GADDM,GAAUH,EAAEC,GAAQE,UACfuoB,EAAI,EAAGA,EAAIvoB,EAAQM,OAAQioB,IAC5B1oB,EAAEG,EAAQuoB,IAAIxoB,GAAGmoB,IAAiBC,EAASG,KAAKtoB,EAAQuoB,GAAI7oB,GAI5E,GACI+D,GAAG+W,EADHgO,EAAS/hB,EAAUoW,MAAM,IAE7B,KAAKpZ,EAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IACzB,GAA8B,kBAAnBykB,IAAiCA,KAAmB,EAM3D,IAJ8B,kBAAnBA,KACPC,EAAWzE,UAAU,GACrB0E,EAAU1E,UAAU,KAAM,GAEzBlJ,EAAI,EAAGA,EAAIgO,EAAOloB,OAAQka,IAC3Bhc,KAAKiF,GAAGglB,iBAAiBD,EAAOhO,GAAI2N,EAAUC,OAKlD,KAAK5N,EAAI,EAAGA,EAAIgO,EAAOloB,OAAQka,IACtBhc,KAAKiF,GAAGilB,oBAAmBlqB,KAAKiF,GAAGilB,sBACxClqB,KAAKiF,GAAGilB,kBAAkBlnB,MAAM2mB,SAAUA,EAAUQ,aAAcN,IAClE7pB,KAAKiF,GAAGglB,iBAAiBD,EAAOhO,GAAI6N,EAAiBD,EAKjE,OAAO5pB,OAEXskB,IAAK,SAAUrc,EAAWyhB,EAAgBC,EAAUC,GAEhD,IAAK,GADDI,GAAS/hB,EAAUoW,MAAM,KACpBpZ,EAAI,EAAGA,EAAI+kB,EAAOloB,OAAQmD,IAC/B,IAAK,GAAI+W,GAAI,EAAGA,EAAIhc,KAAK8B,OAAQka,IAC7B,GAA8B,kBAAnB0N,IAAiCA,KAAmB,EAE7B,kBAAnBA,KACPC,EAAWzE,UAAU,GACrB0E,EAAU1E,UAAU,KAAM,GAE9BllB,KAAKgc,GAAGoO,oBAAoBJ,EAAO/kB,GAAI0kB,EAAUC,OAIjD,IAAI5pB,KAAKgc,GAAGkO,kBACR,IAAK,GAAIH,GAAI,EAAGA,EAAI/pB,KAAKgc,GAAGkO,kBAAkBpoB,OAAQioB,IAC9C/pB,KAAKgc,GAAGkO,kBAAkBH,GAAGJ,WAAaA,GAC1C3pB,KAAKgc,GAAGoO,oBAAoBJ,EAAO/kB,GAAIjF,KAAKgc,GAAGkO,kBAAkBH,GAAGI,aAAcP,EAO1G,OAAO5pB,OAEXslB,KAAM,SAAUrd,EAAWyhB,EAAgBC,EAAUC,GAOjD,QAASS,GAAMnpB,GACXyoB,EAASzoB,GACTopB,EAAIhG,IAAIrc,EAAWyhB,EAAgBW,EAAOT,GAR9C,GAAIU,GAAMtqB,IACoB,mBAAnB0pB,KACPA,GAAiB,EACjBC,EAAWzE,UAAU,GACrB0E,EAAU1E,UAAU,IAMxBoF,EAAI9F,GAAGvc,EAAWyhB,EAAgBW,EAAOT,IAE7ChP,QAAS,SAAU3S,EAAWsiB,GAC1B,IAAK,GAAItlB,GAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IAAK,CAClC,GAAIulB,EACJ,KACIA,EAAM,GAAItoB,QAAOuoB,YAAYxiB,GAAYrC,OAAQ2kB,EAAWG,SAAS,EAAMC,YAAY,IAE3F,MAAOzpB,GACHspB,EAAM5mB,SAASgnB,YAAY,SAC3BJ,EAAIK,UAAU5iB,GAAW,GAAM,GAC/BuiB,EAAI5kB,OAAS2kB,EAEjBvqB,KAAKiF,GAAG6lB,cAAcN,GAE1B,MAAOxqB,OAEXuR,cAAe,SAAUjB,GAGrB,QAASya,GAAa7pB,GAElB,GAAIA,EAAEI,SAAWtB,KAEjB,IADAsQ,EAASwZ,KAAK9pB,KAAMkB,GACf+D,EAAI,EAAGA,EAAI+kB,EAAOloB,OAAQmD,IAC3BqlB,EAAIhG,IAAI0F,EAAO/kB,GAAI8lB,GAP3B,GACI9lB,GADA+kB,GAAU,sBAAuB,gBAAiB,iBAAkB,kBAAmB,mBACjFM,EAAMtqB,IAShB,IAAIsQ,EACA,IAAKrL,EAAI,EAAGA,EAAI+kB,EAAOloB,OAAQmD,IAC3BqlB,EAAI9F,GAAGwF,EAAO/kB,GAAI8lB,EAG1B,OAAO/qB,OAGX+E,MAAO,WACH,MAAI/E,MAAK,KAAOkC,OACLA,OAAOqC,WAGVvE,KAAK8B,OAAS,EACPsQ,WAAWpS,KAAKiP,IAAI,UAGpB,MAInB2E,WAAY,SAAUoX,GAClB,MAAIhrB,MAAK8B,OAAS,EACVkpB,EACOhrB,KAAK,GAAGkjB,YAAc9Q,WAAWpS,KAAKiP,IAAI,iBAAmBmD,WAAWpS,KAAKiP,IAAI,gBAEjFjP,KAAK,GAAGkjB,YAEX,MAEhBle,OAAQ,WACJ,MAAIhF,MAAK,KAAOkC,OACLA,OAAOuC,YAGVzE,KAAK8B,OAAS,EACPsQ,WAAWpS,KAAKiP,IAAI,WAGpB,MAInB4E,YAAa,SAAUmX,GACnB,MAAIhrB,MAAK8B,OAAS,EACVkpB,EACOhrB,KAAK,GAAGmjB,aAAe/Q,WAAWpS,KAAKiP,IAAI,eAAiBmD,WAAWpS,KAAKiP,IAAI,kBAEhFjP,KAAK,GAAGmjB,aAEX,MAEhBxe,OAAQ,WACJ,GAAI3E,KAAK8B,OAAS,EAAG,CACjB,GAAIV,GAAKpB,KAAK,GACVirB,EAAM7pB,EAAGmT,wBACT2W,EAAOtnB,SAASsnB,KAChBC,EAAa/pB,EAAG+pB,WAAcD,EAAKC,WAAc,EACjDzO,EAAatb,EAAGsb,YAAcwO,EAAKxO,YAAc,EACjD0O,EAAalpB,OAAOmC,aAAejD,EAAGgqB,UACtCvmB,EAAa3C,OAAOiC,aAAe/C,EAAGyD,UAC1C,QACIT,IAAK6mB,EAAI7mB,IAAOgnB,EAAaD,EAC7BjnB,KAAM+mB,EAAI/mB,KAAOW,EAAa6X,GAIlC,MAAO,OAGfzN,IAAK,SAAUoc,EAAOzC,GAClB,GAAI3jB,EACJ,IAAyB,IAArBigB,UAAUpjB,OAAc,CACxB,GAAqB,gBAAVupB,GAGN,CACD,IAAKpmB,EAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IACzB,IAAK,GAAIqmB,KAAQD,GACbrrB,KAAKiF,GAAG6K,MAAMwb,GAAQD,EAAMC,EAGpC,OAAOtrB,MARP,GAAIA,KAAK,GAAI,MAAOkC,QAAO0b,iBAAiB5d,KAAK,GAAI,MAAMme,iBAAiBkN,GAWpF,GAAyB,IAArBnG,UAAUpjB,QAAiC,gBAAVupB,GAAoB,CACrD,IAAKpmB,EAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IACzBjF,KAAKiF,GAAG6K,MAAMub,GAASzC,CAE3B,OAAO5oB,MAEX,MAAOA,OAIXC,KAAM,SAAUqQ,GACZ,IAAK,GAAIrL,GAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IAC7BqL,EAASwZ,KAAK9pB,KAAKiF,GAAIA,EAAGjF,KAAKiF,GAEnC,OAAOjF,OAEX8V,KAAM,SAAUA,GACZ,GAAoB,mBAATA,GACP,MAAO9V,MAAK,GAAKA,KAAK,GAAGkoB,UAAYrmB,MAGrC,KAAK,GAAIoD,GAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IAC7BjF,KAAKiF,GAAGijB,UAAYpS,CAExB,OAAO9V,OAGfuB,GAAI,SAAUJ,GACV,IAAKnB,KAAK,GAAI,OAAO,CACrB,IAAIurB,GAAatmB,CACjB,IAAwB,gBAAb9D,GAAuB,CAC9B,GAAIC,GAAKpB,KAAK,EACd,IAAIoB,IAAOwC,SAAU,MAAOzC,KAAayC,QACzC,IAAIxC,IAAOc,OAAQ,MAAOf,KAAae,MAEvC,IAAId,EAAGoqB,QAAS,MAAOpqB,GAAGoqB,QAAQrqB,EAC7B,IAAIC,EAAGqqB,sBAAuB,MAAOrqB,GAAGqqB,sBAAsBtqB,EAC9D,IAAIC,EAAGsqB,mBAAoB,MAAOtqB,GAAGsqB,mBAAmBvqB,EACxD,IAAIC,EAAGuqB,kBAAmB,MAAOvqB,GAAGuqB,kBAAkBxqB,EAGvD,KADAoqB,EAAclqB,EAAEF,GACX8D,EAAI,EAAGA,EAAIsmB,EAAYzpB,OAAQmD,IAChC,GAAIsmB,EAAYtmB,KAAOjF,KAAK,GAAI,OAAO,CAE3C,QAAO,EAGV,GAAImB,IAAayC,SAAU,MAAO5D,MAAK,KAAO4D,QAC9C,IAAIzC,IAAae,OAAQ,MAAOlC,MAAK,KAAOkC,MAE7C,IAAIf,EAASM,UAAYN,YAAoBiN,GAAM,CAE/C,IADAmd,EAAcpqB,EAASM,UAAYN,GAAYA,EAC1C8D,EAAI,EAAGA,EAAIsmB,EAAYzpB,OAAQmD,IAChC,GAAIsmB,EAAYtmB,KAAOjF,KAAK,GAAI,OAAO,CAE3C,QAAO,EAEX,OAAO,GAIf2B,MAAO,WACH,GAAI3B,KAAK,GAAI,CAGT,IAFA,GAAI4rB,GAAQ5rB,KAAK,GACbiF,EAAI,EACmC,QAAnC2mB,EAAQA,EAAMC,kBACK,IAAnBD,EAAMnqB,UAAgBwD,GAE9B,OAAOA,GAEN,MAAOpD,SAEhBqR,GAAI,SAAUvR,GACV,GAAqB,mBAAVA,GAAuB,MAAO3B,KACzC,IACI8rB,GADAhqB,EAAS9B,KAAK8B,MAElB,OAAIH,GAAQG,EAAS,EACV,GAAIsM,OAEH,EAARzM,GACAmqB,EAAchqB,EAASH,EACK,GAAIyM,GAAd,EAAd0d,MACkB9rB,KAAK8rB,MAExB,GAAI1d,IAAMpO,KAAK2B,MAE1Bqd,OAAQ,SAAU+M,GACd,GAAI9mB,GAAG+W,CACP,KAAK/W,EAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IACzB,GAAwB,gBAAb8mB,GAAuB,CAC9B,GAAIC,GAAUpoB,SAAS8jB,cAAc,MAErC,KADAsE,EAAQ9D,UAAY6D,EACbC,EAAQC,YACXjsB,KAAKiF,GAAGinB,YAAYF,EAAQC,gBAG/B,IAAIF,YAAoB3d,GACzB,IAAK4N,EAAI,EAAGA,EAAI+P,EAASjqB,OAAQka,IAC7Bhc,KAAKiF,GAAGinB,YAAYH,EAAS/P,QAIjChc,MAAKiF,GAAGinB,YAAYH,EAG5B,OAAO/rB,OAEXkf,QAAS,SAAU6M,GACf,GAAI9mB,GAAG+W,CACP,KAAK/W,EAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IACzB,GAAwB,gBAAb8mB,GAAuB,CAC9B,GAAIC,GAAUpoB,SAAS8jB,cAAc,MAErC,KADAsE,EAAQ9D,UAAY6D,EACf/P,EAAIgQ,EAAQ7D,WAAWrmB,OAAS,EAAGka,GAAK,EAAGA,IAC5Chc,KAAKiF,GAAGknB,aAAaH,EAAQ7D,WAAWnM,GAAIhc,KAAKiF,GAAGkjB,WAAW,QAIlE,IAAI4D,YAAoB3d,GACzB,IAAK4N,EAAI,EAAGA,EAAI+P,EAASjqB,OAAQka,IAC7Bhc,KAAKiF,GAAGknB,aAAaJ,EAAS/P,GAAIhc,KAAKiF,GAAGkjB,WAAW,QAIzDnoB,MAAKiF,GAAGknB,aAAaJ,EAAU/rB,KAAKiF,GAAGkjB,WAAW,GAG1D,OAAOnoB,OAEXmsB,aAAc,SAAUhrB,GAEpB,IAAK,GADDirB,GAAS/qB,EAAEF,GACN8D,EAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IAC7B,GAAsB,IAAlBmnB,EAAOtqB,OACPsqB,EAAO,GAAGC,WAAWF,aAAansB,KAAKiF,GAAImnB,EAAO,QAEjD,IAAIA,EAAOtqB,OAAS,EACrB,IAAK,GAAIka,GAAI,EAAGA,EAAIoQ,EAAOtqB,OAAQka,IAC/BoQ,EAAOpQ,GAAGqQ,WAAWF,aAAansB,KAAKiF,GAAGga,WAAU,GAAOmN,EAAOpQ,KAKlFsQ,YAAa,SAAUnrB,GAEnB,IAAK,GADDorB,GAAQlrB,EAAEF,GACL8D,EAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IAC7B,GAAqB,IAAjBsnB,EAAMzqB,OACNyqB,EAAM,GAAGF,WAAWF,aAAansB,KAAKiF,GAAIsnB,EAAM,GAAGC,iBAElD,IAAID,EAAMzqB,OAAS,EACpB,IAAK,GAAIka,GAAI,EAAGA,EAAIuQ,EAAMzqB,OAAQka,IAC9BuQ,EAAMvQ,GAAGqQ,WAAWF,aAAansB,KAAKiF,GAAGga,WAAU,GAAOsN,EAAMvQ,GAAGwQ,cAKnFnX,KAAM,SAAUlU,GACZ,MAE6F,IAAIiN,GAF7FpO,KAAK8B,OAAS,EACVX,EACInB,KAAK,GAAGysB,oBAAsBprB,EAAErB,KAAK,GAAGysB,oBAAoBlrB,GAAGJ,IAA4BnB,KAAK,GAAGysB,uBAInGzsB,KAAK,GAAGysB,oBAAqCzsB,KAAK,GAAGysB,4BAMrEC,QAAS,SAAUvrB,GACf,GAAIwrB,MACAvrB,EAAKpB,KAAK,EACd,KAAKoB,EAAI,MAAO,IAAIgN,MACpB,MAAOhN,EAAGqrB,oBAAoB,CAC1B,GAAIpX,GAAOjU,EAAGqrB,kBACVtrB,GACGE,EAAEgU,GAAM9T,GAAGJ,IAAWwrB,EAAQ3pB,KAAKqS,GAErCsX,EAAQ3pB,KAAKqS,GAClBjU,EAAKiU,EAET,MAAO,IAAIjH,GAAKue,IAEpBrX,KAAM,SAAUnU,GACZ,MAEqG,IAAIiN,GAFrGpO,KAAK8B,OAAS,EACVX,EACInB,KAAK,GAAG4sB,wBAA0BvrB,EAAErB,KAAK,GAAG4sB,wBAAwBrrB,GAAGJ,IAA4BnB,KAAK,GAAG4sB,2BAI3G5sB,KAAK,GAAG4sB,wBAAyC5sB,KAAK,GAAG4sB,gCAMzEC,QAAS,SAAU1rB,GACf,GAAI2rB,MACA1rB,EAAKpB,KAAK,EACd,KAAKoB,EAAI,MAAO,IAAIgN,MACpB,MAAOhN,EAAGwrB,wBAAwB,CAC9B,GAAItX,GAAOlU,EAAGwrB,sBACVzrB,GACGE,EAAEiU,GAAM/T,GAAGJ,IAAW2rB,EAAQ9pB,KAAKsS,GAErCwX,EAAQ9pB,KAAKsS,GAClBlU,EAAKkU,EAET,MAAO,IAAIlH,GAAK0e,IAEpBC,OAAQ,SAAU5rB,GAEd,IAAK,GADDK,MACKyD,EAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IACzB9D,EACIE,EAAErB,KAAKiF,GAAGonB,YAAY9qB,GAAGJ,IAAWK,EAAQwB,KAAKhD,KAAKiF,GAAGonB,YAG7D7qB,EAAQwB,KAAKhD,KAAKiF,GAAGonB,WAG7B,OAAOhrB,GAAEA,EAAE2rB,OAAOxrB,KAEtBA,QAAS,SAAUL,GAEf,IAAK,GADDK,MACKyD,EAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IAE7B,IADA,GAAI8nB,GAAS/sB,KAAKiF,GAAGonB,WACdU,GACC5rB,EACIE,EAAE0rB,GAAQxrB,GAAGJ,IAAWK,EAAQwB,KAAK+pB,GAGzCvrB,EAAQwB,KAAK+pB,GAEjBA,EAASA,EAAOV,UAGxB,OAAOhrB,GAAEA,EAAE2rB,OAAOxrB,KAEtBuP,KAAO,SAAU5P,GAEb,IAAK,GADD8rB,MACKhoB,EAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IAE7B,IAAK,GADDvD,GAAQ1B,KAAKiF,GAAGmjB,iBAAiBjnB,GAC5B6a,EAAI,EAAGA,EAAIta,EAAMI,OAAQka,IAC9BiR,EAAcjqB,KAAKtB,EAAMsa,GAGjC,OAAO,IAAI5N,GAAK6e,IAEpBpe,SAAU,SAAU1N,GAEhB,IAAK,GADD0N,MACK5J,EAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IAG7B,IAAK,GAFDkjB,GAAanoB,KAAKiF,GAAGkjB,WAEhBnM,EAAI,EAAGA,EAAImM,EAAWrmB,OAAQka,IAC9B7a,EAI8B,IAA3BgnB,EAAWnM,GAAGva,UAAkBJ,EAAE8mB,EAAWnM,IAAIza,GAAGJ,IAAW0N,EAAS7L,KAAKmlB,EAAWnM,IAH7D,IAA3BmM,EAAWnM,GAAGva,UAAgBoN,EAAS7L,KAAKmlB,EAAWnM,GAOvE,OAAO,IAAI5N,GAAK/M,EAAE2rB,OAAOne,KAE7BgQ,OAAQ,WACJ,IAAK,GAAI5Z,GAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IACzBjF,KAAKiF,GAAGonB,YAAYrsB,KAAKiF,GAAGonB,WAAWa,YAAYltB,KAAKiF,GAEhE,OAAOjF,OAEXsiB,IAAK,WACD,GACIrd,GAAG+W,EADHsO,EAAMtqB,IAEV,KAAKiF,EAAI,EAAGA,EAAIigB,UAAUpjB,OAAQmD,IAAK,CACnC,GAAIkoB,GAAQ9rB,EAAE6jB,UAAUjgB,GACxB,KAAK+W,EAAI,EAAGA,EAAImR,EAAMrrB,OAAQka,IAC1BsO,EAAIA,EAAIxoB,QAAUqrB,EAAMnR,GACxBsO,EAAIxoB,SAGZ,MAAOwoB,KAGfjpB,EAAEzB,GAAKwO,EAAKsY,UACZrlB,EAAE2rB,OAAS,SAAUlG,GAEjB,IAAK,GADDkG,MACK/nB,EAAI,EAAGA,EAAI6hB,EAAIhlB,OAAQmD,IACG,KAA3B+nB,EAAOnlB,QAAQif,EAAI7hB,KAAY+nB,EAAOhqB,KAAK8jB,EAAI7hB,GAEvD,OAAO+nB,IAGJ3rB,MAOP+rB,GAAoB,SAAU,QAAS,QAWlCnoB,EAAI,EAAGA,EAAImoB,EAAiBtrB,OAAQmD,IACrC/C,OAAOkrB,EAAiBnoB,KACxBvF,EAAiBwC,OAAOkrB,EAAiBnoB,IAIjD,IAAIooB,EAEAA,GADgB,mBAATjf,GACElM,OAAOkM,MAAQlM,OAAOmM,OAASnM,OAAOoM,OAGtCF,EAETif,IACM,iBAAmBA,GAAOztB,KAC5BytB,EAAOztB,GAAG2R,cAAgB,SAAUjB,GAGhC,QAASya,GAAa7pB,GAElB,GAAIA,EAAEI,SAAWtB,KAEjB,IADAsQ,EAASwZ,KAAK9pB,KAAMkB,GACf+D,EAAI,EAAGA,EAAI+kB,EAAOloB,OAAQmD,IAC3BqlB,EAAIhG,IAAI0F,EAAO/kB,GAAI8lB,GAP3B,GACI9lB,GADA+kB,GAAU,sBAAuB,gBAAiB,iBAAkB,kBAAmB,mBACjFM,EAAMtqB,IAShB,IAAIsQ,EACA,IAAKrL,EAAI,EAAGA,EAAI+kB,EAAOloB,OAAQmD,IAC3BqlB,EAAI9F,GAAGwF,EAAO/kB,GAAI8lB,EAG1B,OAAO/qB,QAGT,aAAeqtB,GAAOztB,KACxBytB,EAAOztB,GAAGmI,UAAY,SAAUA,GAC5B,IAAK,GAAI9C,GAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IAAK,CAClC,GAAIkkB,GAAUnpB,KAAKiF,GAAG6K,KACtBqZ,GAAQrL,gBAAkBqL,EAAQlL,YAAckL,EAAQjL,YAAciL,EAAQpL,aAAeoL,EAAQnL,WAAamL,EAAQphB,UAAYA,EAE1I,MAAO/H,QAGT,cAAgBqtB,GAAOztB,KACzBytB,EAAOztB,GAAGkd,WAAa,SAAUF,GACL,gBAAbA,KACPA,GAAsB,KAE1B,KAAK,GAAI3X,GAAI,EAAGA,EAAIjF,KAAK8B,OAAQmD,IAAK,CAClC,GAAIkkB,GAAUnpB,KAAKiF,GAAG6K,KACtBqZ,GAAQC,yBAA2BD,EAAQE,qBAAuBF,EAAQG,qBAAuBH,EAAQI,sBAAwBJ,EAAQK,oBAAsBL,EAAQM,mBAAqB7M,EAEhM,MAAO5c,SAOnBkC,OAAO/B,OAASA,KAKG,mBAAb,QAENmtB,OAAOC,QAAUrrB,OAAO/B,OAED,kBAAXqtB,SAAyBA,OAAOC,KAC5CD,UAAW,WACP,YACA,OAAOtrB,QAAO/B","file":"swiper.min.js","sourcesContent":["/**\n * Swiper 3.0.8\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * \n * http://www.idangero.us/swiper/\n * \n * Copyright 2015, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n * \n * Licensed under MIT\n * \n * Released on: June 14, 2015\n */\n(function () {\n 'use strict';\n /*===========================\n Swiper\n ===========================*/\n var Swiper = function (container, params) {\n if (!(this instanceof Swiper)) return new Swiper(container, params);\n\n var defaults = {\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n // autoplay\n autoplay: false,\n autoplayDisableOnInteraction: true,\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeSticky: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow'\n coverflow: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows : true\n },\n cube: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n },\n fade: {\n crossFade: false\n },\n // Parallax\n parallax: false,\n // Scrollbar\n scrollbar: null,\n scrollbarHide: true,\n // Keyboard Mousewheel\n keyboardControl: false,\n mousewheelControl: false,\n mousewheelReleaseOnEdges: false,\n mousewheelInvert: false,\n mousewheelForceToAxis: false,\n // Hash Navigation\n hashnav: false,\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n centeredSlides: 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 onlyExternal: false,\n threshold: 0,\n touchMoveStopPropagation: true,\n // Pagination\n pagination: null,\n paginationClickable: false,\n paginationHide: false,\n paginationBulletRender: null,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Next/prev buttons\n nextButton: null,\n prevButton: null,\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Lazy Loading\n lazyLoading: false,\n lazyLoadingInPrevNext: false,\n lazyLoadingOnTransitionStart: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n // Control\n control: undefined,\n controlInverse: false,\n // Swiping/no swiping\n allowSwipeToPrev: true,\n allowSwipeToNext: true,\n swipeHandler: null, //'.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n // NS\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n buttonDisabledClass: 'swiper-button-disabled',\n paginationHiddenClass: 'swiper-pagination-hidden',\n // Observer\n observer: false,\n observeParents: false,\n // Accessibility\n a11y: false,\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n // Callbacks\n runCallbacksOnInit: true\n /*\n Callbacks:\n onInit: function (swiper)\n onDestroy: function (swiper)\n onClick: function (swiper, e)\n onTap: function (swiper, e)\n onDoubleTap: function (swiper, e)\n onSliderMove: function (swiper, e)\n onSlideChangeStart: function (swiper)\n onSlideChangeEnd: function (swiper)\n onTransitionStart: function (swiper)\n onTransitionEnd: function (swiper)\n onImagesReady: function (swiper)\n onProgress: function (swiper, progress)\n onTouchStart: function (swiper, e)\n onTouchMove: function (swiper, e)\n onTouchMoveOpposite: function (swiper, e)\n onTouchEnd: function (swiper, e)\n onReachBeginning: function (swiper)\n onReachEnd: function (swiper)\n onSetTransition: function (swiper, duration)\n onSetTranslate: function (swiper, translate)\n onAutoplayStart: function (swiper)\n onAutoplayStop: function (swiper),\n onLazyImageLoad: function (swiper, slide, image)\n onLazyImageReady: function (swiper, slide, image)\n */\n \n };\n var initialVirtualTranslate = params && params.virtualTranslate;\n \n params = params || {};\n for (var def in defaults) {\n if (typeof params[def] === 'undefined') {\n params[def] = defaults[def];\n }\n else if (typeof params[def] === 'object') {\n for (var deepDef in defaults[def]) {\n if (typeof params[def][deepDef] === 'undefined') {\n params[def][deepDef] = defaults[def][deepDef];\n }\n }\n }\n }\n \n // Swiper\n var s = this;\n \n // Version\n s.version = '3.0.8';\n \n // Params\n s.params = params;\n \n // Classname\n s.classNames = [];\n /*=========================\n Dom Library and plugins\n ===========================*/\n var $;\n if (typeof Dom7 === 'undefined') {\n $ = window.Dom7 || window.Zepto || window.jQuery;\n }\n else {\n $ = Dom7;\n }\n if (!$) return;\n \n // Export it to Swiper instance\n s.$ = $;\n /*=========================\n Preparation - Define Container, Wrapper and Pagination\n ===========================*/\n s.container = $(container);\n if (s.container.length === 0) return;\n if (s.container.length > 1) {\n s.container.each(function () {\n new Swiper(this, params);\n });\n return;\n }\n \n // Save instance in container HTML Element and in data\n s.container[0].swiper = s;\n s.container.data('swiper', s);\n \n s.classNames.push('swiper-container-' + s.params.direction);\n \n if (s.params.freeMode) {\n s.classNames.push('swiper-container-free-mode');\n }\n if (!s.support.flexbox) {\n s.classNames.push('swiper-container-no-flexbox');\n s.params.slidesPerColumn = 1;\n }\n // Enable slides progress when required\n if (s.params.parallax || s.params.watchSlidesVisibility) {\n s.params.watchSlidesProgress = true;\n }\n // Coverflow / 3D\n if (['cube', 'coverflow'].indexOf(s.params.effect) >= 0) {\n if (s.support.transforms3d) {\n s.params.watchSlidesProgress = true;\n s.classNames.push('swiper-container-3d');\n }\n else {\n s.params.effect = 'slide';\n }\n }\n if (s.params.effect !== 'slide') {\n s.classNames.push('swiper-container-' + s.params.effect);\n }\n if (s.params.effect === 'cube') {\n s.params.resistanceRatio = 0;\n s.params.slidesPerView = 1;\n s.params.slidesPerColumn = 1;\n s.params.slidesPerGroup = 1;\n s.params.centeredSlides = false;\n s.params.spaceBetween = 0;\n s.params.virtualTranslate = true;\n s.params.setWrapperSize = false;\n }\n if (s.params.effect === 'fade') {\n s.params.slidesPerView = 1;\n s.params.slidesPerColumn = 1;\n s.params.slidesPerGroup = 1;\n s.params.watchSlidesProgress = true;\n s.params.spaceBetween = 0;\n if (typeof initialVirtualTranslate === 'undefined') {\n s.params.virtualTranslate = true;\n }\n }\n \n // Grab Cursor\n if (s.params.grabCursor && s.support.touch) {\n s.params.grabCursor = false;\n }\n \n // Wrapper\n s.wrapper = s.container.children('.' + s.params.wrapperClass);\n \n // Pagination\n if (s.params.pagination) {\n s.paginationContainer = $(s.params.pagination);\n if (s.params.paginationClickable) {\n s.paginationContainer.addClass('swiper-pagination-clickable');\n }\n }\n \n // Is Horizontal\n function isH() {\n return s.params.direction === 'horizontal';\n }\n \n // RTL\n s.rtl = isH() && (s.container[0].dir.toLowerCase() === 'rtl' || s.container.css('direction') === 'rtl');\n if (s.rtl) {\n s.classNames.push('swiper-container-rtl');\n }\n \n // Wrong RTL support\n if (s.rtl) {\n s.wrongRTL = s.wrapper.css('display') === '-webkit-box';\n }\n \n // Columns\n if (s.params.slidesPerColumn > 1) {\n s.classNames.push('swiper-container-multirow');\n }\n \n // Check for Android\n if (s.device.android) {\n s.classNames.push('swiper-container-android');\n }\n \n // Add classes\n s.container.addClass(s.classNames.join(' '));\n \n // Translate\n s.translate = 0;\n \n // Progress\n s.progress = 0;\n \n // Velocity\n s.velocity = 0;\n \n // Locks, unlocks\n s.lockSwipeToNext = function () {\n s.params.allowSwipeToNext = false;\n };\n s.lockSwipeToPrev = function () {\n s.params.allowSwipeToPrev = false;\n };\n s.lockSwipes = function () {\n s.params.allowSwipeToNext = s.params.allowSwipeToPrev = false;\n };\n s.unlockSwipeToNext = function () {\n s.params.allowSwipeToNext = true;\n };\n s.unlockSwipeToPrev = function () {\n s.params.allowSwipeToPrev = true;\n };\n s.unlockSwipes = function () {\n s.params.allowSwipeToNext = s.params.allowSwipeToPrev = true;\n };\n \n \n /*=========================\n Set grab cursor\n ===========================*/\n if (s.params.grabCursor) {\n s.container[0].style.cursor = 'move';\n s.container[0].style.cursor = '-webkit-grab';\n s.container[0].style.cursor = '-moz-grab';\n s.container[0].style.cursor = 'grab';\n }\n /*=========================\n Update on Images Ready\n ===========================*/\n s.imagesToLoad = [];\n s.imagesLoaded = 0;\n \n s.loadImage = function (imgElement, src, checkForComplete, callback) {\n var image;\n function onReady () {\n if (callback) callback();\n }\n if (!imgElement.complete || !checkForComplete) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n image.src = src;\n } else {\n onReady();\n }\n \n } else {//image already loaded...\n onReady();\n }\n };\n s.preloadImages = function () {\n s.imagesToLoad = s.container.find('img');\n function _onReady() {\n if (typeof s === 'undefined' || s === null) return;\n if (s.imagesLoaded !== undefined) s.imagesLoaded++;\n if (s.imagesLoaded === s.imagesToLoad.length) {\n if (s.params.updateOnImagesReady) s.update();\n s.emit('onImagesReady', s);\n }\n }\n for (var i = 0; i < s.imagesToLoad.length; i++) {\n s.loadImage(s.imagesToLoad[i], (s.imagesToLoad[i].currentSrc || s.imagesToLoad[i].getAttribute('src')), true, _onReady);\n }\n };\n \n /*=========================\n Autoplay\n ===========================*/\n s.autoplayTimeoutId = undefined;\n s.autoplaying = false;\n s.autoplayPaused = false;\n function autoplay() {\n s.autoplayTimeoutId = setTimeout(function () {\n if (s.params.loop) {\n s.fixLoop();\n s._slideNext();\n }\n else {\n if (!s.isEnd) {\n s._slideNext();\n }\n else {\n if (!params.autoplayStopOnLast) {\n s._slideTo(0);\n }\n else {\n s.stopAutoplay();\n }\n }\n }\n }, s.params.autoplay);\n }\n s.startAutoplay = function () {\n if (typeof s.autoplayTimeoutId !== 'undefined') return false;\n if (!s.params.autoplay) return false;\n if (s.autoplaying) return false;\n s.autoplaying = true;\n s.emit('onAutoplayStart', s);\n autoplay();\n };\n s.stopAutoplay = function (internal) {\n if (!s.autoplayTimeoutId) return;\n if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId);\n s.autoplaying = false;\n s.autoplayTimeoutId = undefined;\n s.emit('onAutoplayStop', s);\n };\n s.pauseAutoplay = function (speed) {\n if (s.autoplayPaused) return;\n if (s.autoplayTimeoutId) clearTimeout(s.autoplayTimeoutId);\n s.autoplayPaused = true;\n if (speed === 0) {\n s.autoplayPaused = false;\n autoplay();\n }\n else {\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.autoplayPaused = false;\n if (!s.autoplaying) {\n s.stopAutoplay();\n }\n else {\n autoplay();\n }\n });\n }\n };\n /*=========================\n Min/Max Translate\n ===========================*/\n s.minTranslate = function () {\n return (-s.snapGrid[0]);\n };\n s.maxTranslate = function () {\n return (-s.snapGrid[s.snapGrid.length - 1]);\n };\n /*=========================\n Slider/slides sizes\n ===========================*/\n s.updateContainerSize = function () {\n var width, height;\n if (typeof s.params.width !== 'undefined') {\n width = s.params.width;\n }\n else {\n width = s.container[0].clientWidth;\n }\n if (typeof s.params.height !== 'undefined') {\n height = s.params.height;\n }\n else {\n height = s.container[0].clientHeight;\n }\n if (width === 0 && isH() || height === 0 && !isH()) {\n return;\n }\n s.width = width;\n s.height = height;\n s.size = isH() ? s.width : s.height;\n };\n \n s.updateSlidesSize = function () {\n s.slides = s.wrapper.children('.' + s.params.slideClass);\n s.snapGrid = [];\n s.slidesGrid = [];\n s.slidesSizesGrid = [];\n \n var spaceBetween = s.params.spaceBetween,\n slidePosition = 0,\n i,\n prevSlideSize = 0,\n index = 0;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * s.size;\n }\n \n s.virtualSize = -spaceBetween;\n // reset margins\n if (s.rtl) s.slides.css({marginLeft: '', marginTop: ''});\n else s.slides.css({marginRight: '', marginBottom: ''});\n \n var slidesNumberEvenToRows;\n if (s.params.slidesPerColumn > 1) {\n if (Math.floor(s.slides.length / s.params.slidesPerColumn) === s.slides.length / s.params.slidesPerColumn) {\n slidesNumberEvenToRows = s.slides.length;\n }\n else {\n slidesNumberEvenToRows = Math.ceil(s.slides.length / s.params.slidesPerColumn) * s.params.slidesPerColumn;\n }\n }\n \n // Calc slides\n var slideSize;\n var slidesPerColumn = s.params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = slidesPerRow - (s.params.slidesPerColumn * slidesPerRow - s.slides.length);\n for (i = 0; i < s.slides.length; i++) {\n slideSize = 0;\n var slide = s.slides.eq(i);\n if (s.params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex;\n var column, row;\n if (s.params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - column * slidesPerColumn;\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn-1)) {\n if (++row >= slidesPerColumn) {\n row = 0;\n column++;\n }\n }\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n 'order': newSlideOrderIndex\n });\n }\n else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide\n .css({\n 'margin-top': (row !== 0 && s.params.spaceBetween) && (s.params.spaceBetween + 'px')\n })\n .attr('data-swiper-column', column)\n .attr('data-swiper-row', row);\n \n }\n if (slide.css('display') === 'none') continue;\n if (s.params.slidesPerView === 'auto') {\n slideSize = isH() ? slide.outerWidth(true) : slide.outerHeight(true);\n }\n else {\n slideSize = (s.size - (s.params.slidesPerView - 1) * spaceBetween) / s.params.slidesPerView;\n if (isH()) {\n s.slides[i].style.width = slideSize + 'px';\n }\n else {\n s.slides[i].style.height = slideSize + 'px';\n }\n }\n s.slides[i].swiperSlideSize = slideSize;\n s.slidesSizesGrid.push(slideSize);\n \n \n if (s.params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (i === 0) slidePosition = slidePosition - s.size / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition);\n s.slidesGrid.push(slidePosition);\n }\n else {\n if ((index) % s.params.slidesPerGroup === 0) s.snapGrid.push(slidePosition);\n s.slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n \n s.virtualSize += slideSize + spaceBetween;\n \n prevSlideSize = slideSize;\n \n index ++;\n }\n s.virtualSize = Math.max(s.virtualSize, s.size);\n \n var newSlidesGrid;\n \n if (\n s.rtl && s.wrongRTL && (s.params.effect === 'slide' || s.params.effect === 'coverflow')) {\n s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n }\n if (!s.support.flexbox || s.params.setWrapperSize) {\n if (isH()) s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n else s.wrapper.css({height: s.virtualSize + s.params.spaceBetween + 'px'});\n }\n \n if (s.params.slidesPerColumn > 1) {\n s.virtualSize = (slideSize + s.params.spaceBetween) * slidesNumberEvenToRows;\n s.virtualSize = Math.ceil(s.virtualSize / s.params.slidesPerColumn) - s.params.spaceBetween;\n s.wrapper.css({width: s.virtualSize + s.params.spaceBetween + 'px'});\n if (s.params.centeredSlides) {\n newSlidesGrid = [];\n for (i = 0; i < s.snapGrid.length; i++) {\n if (s.snapGrid[i] < s.virtualSize + s.snapGrid[0]) newSlidesGrid.push(s.snapGrid[i]);\n }\n s.snapGrid = newSlidesGrid;\n }\n }\n \n // Remove last grid elements depending on width\n if (!s.params.centeredSlides) {\n newSlidesGrid = [];\n for (i = 0; i < s.snapGrid.length; i++) {\n if (s.snapGrid[i] <= s.virtualSize - s.size) {\n newSlidesGrid.push(s.snapGrid[i]);\n }\n }\n s.snapGrid = newSlidesGrid;\n if (Math.floor(s.virtualSize - s.size) > Math.floor(s.snapGrid[s.snapGrid.length - 1])) {\n s.snapGrid.push(s.virtualSize - s.size);\n }\n }\n if (s.snapGrid.length === 0) s.snapGrid = [0];\n \n if (s.params.spaceBetween !== 0) {\n if (isH()) {\n if (s.rtl) s.slides.css({marginLeft: spaceBetween + 'px'});\n else s.slides.css({marginRight: spaceBetween + 'px'});\n }\n else s.slides.css({marginBottom: spaceBetween + 'px'});\n }\n if (s.params.watchSlidesProgress) {\n s.updateSlidesOffset();\n }\n };\n s.updateSlidesOffset = function () {\n for (var i = 0; i < s.slides.length; i++) {\n s.slides[i].swiperSlideOffset = isH() ? s.slides[i].offsetLeft : s.slides[i].offsetTop;\n }\n };\n \n /*=========================\n Slider/slides progress\n ===========================*/\n s.updateSlidesProgress = function (translate) {\n if (typeof translate === 'undefined') {\n translate = s.translate || 0;\n }\n if (s.slides.length === 0) return;\n if (typeof s.slides[0].swiperSlideOffset === 'undefined') s.updateSlidesOffset();\n \n var offsetCenter = s.params.centeredSlides ? -translate + s.size / 2 : -translate;\n if (s.rtl) offsetCenter = s.params.centeredSlides ? translate - s.size / 2 : translate;\n \n // Visible Slides\n var containerBox = s.container[0].getBoundingClientRect();\n var sideBefore = isH() ? 'left' : 'top';\n var sideAfter = isH() ? 'right' : 'bottom';\n s.slides.removeClass(s.params.slideVisibleClass);\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides[i];\n var slideCenterOffset = (s.params.centeredSlides === true) ? slide.swiperSlideSize / 2 : 0;\n var slideProgress = (offsetCenter - slide.swiperSlideOffset - slideCenterOffset) / (slide.swiperSlideSize + s.params.spaceBetween);\n if (s.params.watchSlidesVisibility) {\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset - slideCenterOffset);\n var slideAfter = slideBefore + s.slidesSizesGrid[i];\n var isVisible =\n (slideBefore >= 0 && slideBefore < s.size) ||\n (slideAfter > 0 && slideAfter <= s.size) ||\n (slideBefore <= 0 && slideAfter >= s.size);\n if (isVisible) {\n s.slides.eq(i).addClass(s.params.slideVisibleClass);\n }\n }\n slide.progress = s.rtl ? -slideProgress : slideProgress;\n }\n };\n s.updateProgress = function (translate) {\n if (typeof translate === 'undefined') {\n translate = s.translate || 0;\n }\n var translatesDiff = s.maxTranslate() - s.minTranslate();\n if (translatesDiff === 0) {\n s.progress = 0;\n s.isBeginning = s.isEnd = true;\n }\n else {\n s.progress = (translate - s.minTranslate()) / (translatesDiff);\n s.isBeginning = s.progress <= 0;\n s.isEnd = s.progress >= 1;\n }\n if (s.isBeginning) s.emit('onReachBeginning', s);\n if (s.isEnd) s.emit('onReachEnd', s);\n \n if (s.params.watchSlidesProgress) s.updateSlidesProgress(translate);\n s.emit('onProgress', s, s.progress);\n };\n s.updateActiveIndex = function () {\n var translate = s.rtl ? s.translate : -s.translate;\n var newActiveIndex, i, snapIndex;\n for (i = 0; i < s.slidesGrid.length; i ++) {\n if (typeof s.slidesGrid[i + 1] !== 'undefined') {\n if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1] - (s.slidesGrid[i + 1] - s.slidesGrid[i]) / 2) {\n newActiveIndex = i;\n }\n else if (translate >= s.slidesGrid[i] && translate < s.slidesGrid[i + 1]) {\n newActiveIndex = i + 1;\n }\n }\n else {\n if (translate >= s.slidesGrid[i]) {\n newActiveIndex = i;\n }\n }\n }\n // Normalize slideIndex\n if (newActiveIndex < 0 || typeof newActiveIndex === 'undefined') newActiveIndex = 0;\n // for (i = 0; i < s.slidesGrid.length; i++) {\n // if (- translate >= s.slidesGrid[i]) {\n // newActiveIndex = i;\n // }\n // }\n snapIndex = Math.floor(newActiveIndex / s.params.slidesPerGroup);\n if (snapIndex >= s.snapGrid.length) snapIndex = s.snapGrid.length - 1;\n \n if (newActiveIndex === s.activeIndex) {\n return;\n }\n s.snapIndex = snapIndex;\n s.previousIndex = s.activeIndex;\n s.activeIndex = newActiveIndex;\n s.updateClasses();\n };\n \n /*=========================\n Classes\n ===========================*/\n s.updateClasses = function () {\n s.slides.removeClass(s.params.slideActiveClass + ' ' + s.params.slideNextClass + ' ' + s.params.slidePrevClass);\n var activeSlide = s.slides.eq(s.activeIndex);\n // Active classes\n activeSlide.addClass(s.params.slideActiveClass);\n activeSlide.next('.' + s.params.slideClass).addClass(s.params.slideNextClass);\n activeSlide.prev('.' + s.params.slideClass).addClass(s.params.slidePrevClass);\n \n // Pagination\n if (s.bullets && s.bullets.length > 0) {\n s.bullets.removeClass(s.params.bulletActiveClass);\n var bulletIndex;\n if (s.params.loop) {\n bulletIndex = Math.ceil(s.activeIndex - s.loopedSlides)/s.params.slidesPerGroup;\n if (bulletIndex > s.slides.length - 1 - s.loopedSlides * 2) {\n bulletIndex = bulletIndex - (s.slides.length - s.loopedSlides * 2);\n }\n if (bulletIndex > s.bullets.length - 1) bulletIndex = bulletIndex - s.bullets.length;\n }\n else {\n if (typeof s.snapIndex !== 'undefined') {\n bulletIndex = s.snapIndex;\n }\n else {\n bulletIndex = s.activeIndex || 0;\n }\n }\n if (s.paginationContainer.length > 1) {\n s.bullets.each(function () {\n if ($(this).index() === bulletIndex) $(this).addClass(s.params.bulletActiveClass);\n });\n }\n else {\n s.bullets.eq(bulletIndex).addClass(s.params.bulletActiveClass);\n }\n }\n \n // Next/active buttons\n if (!s.params.loop) {\n if (s.params.prevButton) {\n if (s.isBeginning) {\n $(s.params.prevButton).addClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.disable($(s.params.prevButton));\n }\n else {\n $(s.params.prevButton).removeClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.enable($(s.params.prevButton));\n }\n }\n if (s.params.nextButton) {\n if (s.isEnd) {\n $(s.params.nextButton).addClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.disable($(s.params.nextButton));\n }\n else {\n $(s.params.nextButton).removeClass(s.params.buttonDisabledClass);\n if (s.params.a11y && s.a11y) s.a11y.enable($(s.params.nextButton));\n }\n }\n }\n };\n \n /*=========================\n Pagination\n ===========================*/\n s.updatePagination = function () {\n if (!s.params.pagination) return;\n if (s.paginationContainer && s.paginationContainer.length > 0) {\n var bulletsHTML = '';\n var numberOfBullets = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length;\n for (var i = 0; i < numberOfBullets; i++) {\n if (s.params.paginationBulletRender) {\n bulletsHTML += s.params.paginationBulletRender(i, s.params.bulletClass);\n }\n else {\n bulletsHTML += '';\n }\n }\n s.paginationContainer.html(bulletsHTML);\n s.bullets = s.paginationContainer.find('.' + s.params.bulletClass);\n }\n };\n /*=========================\n Common update method\n ===========================*/\n s.update = function (updateTranslate) {\n s.updateContainerSize();\n s.updateSlidesSize();\n s.updateProgress();\n s.updatePagination();\n s.updateClasses();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n }\n function forceSetTranslate() {\n newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate());\n s.setWrapperTranslate(newTranslate);\n s.updateActiveIndex();\n s.updateClasses();\n }\n if (updateTranslate) {\n var translated, newTranslate;\n if (s.params.freeMode) {\n forceSetTranslate();\n }\n else {\n if (s.params.slidesPerView === 'auto' && s.isEnd && !s.params.centeredSlides) {\n translated = s.slideTo(s.slides.length - 1, 0, false, true);\n }\n else {\n translated = s.slideTo(s.activeIndex, 0, false, true);\n }\n if (!translated) {\n forceSetTranslate();\n }\n }\n \n }\n };\n \n /*=========================\n Resize Handler\n ===========================*/\n s.onResize = function (forceUpdatePagination) {\n s.updateContainerSize();\n s.updateSlidesSize();\n s.updateProgress();\n if (s.params.slidesPerView === 'auto' || s.params.freeMode || forceUpdatePagination) s.updatePagination();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n }\n if (s.params.freeMode) {\n var newTranslate = Math.min(Math.max(s.translate, s.maxTranslate()), s.minTranslate());\n s.setWrapperTranslate(newTranslate);\n s.updateActiveIndex();\n s.updateClasses();\n }\n else {\n s.updateClasses();\n if (s.params.slidesPerView === 'auto' && s.isEnd && !s.params.centeredSlides) {\n s.slideTo(s.slides.length - 1, 0, false, true);\n }\n else {\n s.slideTo(s.activeIndex, 0, false, true);\n }\n }\n \n };\n \n /*=========================\n Events\n ===========================*/\n \n //Define Touch Events\n var desktopEvents = ['mousedown', 'mousemove', 'mouseup'];\n if (window.navigator.pointerEnabled) desktopEvents = ['pointerdown', 'pointermove', 'pointerup'];\n else if (window.navigator.msPointerEnabled) desktopEvents = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];\n s.touchEvents = {\n start : s.support.touch || !s.params.simulateTouch ? 'touchstart' : desktopEvents[0],\n move : s.support.touch || !s.params.simulateTouch ? 'touchmove' : desktopEvents[1],\n end : s.support.touch || !s.params.simulateTouch ? 'touchend' : desktopEvents[2]\n };\n \n \n // WP8 Touch Events Fix\n if (window.navigator.pointerEnabled || window.navigator.msPointerEnabled) {\n (s.params.touchEventsTarget === 'container' ? s.container : s.wrapper).addClass('swiper-wp8-' + s.params.direction);\n }\n \n // Attach/detach events\n s.initEvents = function (detach) {\n var actionDom = detach ? 'off' : 'on';\n var action = detach ? 'removeEventListener' : 'addEventListener';\n var touchEventsTarget = s.params.touchEventsTarget === 'container' ? s.container[0] : s.wrapper[0];\n var target = s.support.touch ? touchEventsTarget : document;\n \n var moveCapture = s.params.nested ? true : false;\n \n //Touch Events\n if (s.browser.ie) {\n touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false);\n target[action](s.touchEvents.move, s.onTouchMove, moveCapture);\n target[action](s.touchEvents.end, s.onTouchEnd, false);\n }\n else {\n if (s.support.touch) {\n touchEventsTarget[action](s.touchEvents.start, s.onTouchStart, false);\n touchEventsTarget[action](s.touchEvents.move, s.onTouchMove, moveCapture);\n touchEventsTarget[action](s.touchEvents.end, s.onTouchEnd, false);\n }\n if (params.simulateTouch && !s.device.ios && !s.device.android) {\n touchEventsTarget[action]('mousedown', s.onTouchStart, false);\n document[action]('mousemove', s.onTouchMove, moveCapture);\n document[action]('mouseup', s.onTouchEnd, false);\n }\n }\n window[action]('resize', s.onResize);\n \n // Next, Prev, Index\n if (s.params.nextButton) {\n $(s.params.nextButton)[actionDom]('click', s.onClickNext);\n if (s.params.a11y && s.a11y) $(s.params.nextButton)[actionDom]('keydown', s.a11y.onEnterKey);\n }\n if (s.params.prevButton) {\n $(s.params.prevButton)[actionDom]('click', s.onClickPrev);\n if (s.params.a11y && s.a11y) $(s.params.prevButton)[actionDom]('keydown', s.a11y.onEnterKey);\n }\n if (s.params.pagination && s.params.paginationClickable) {\n $(s.paginationContainer)[actionDom]('click', '.' + s.params.bulletClass, s.onClickIndex);\n }\n \n // Prevent Links Clicks\n if (s.params.preventClicks || s.params.preventClicksPropagation) touchEventsTarget[action]('click', s.preventClicks, true);\n };\n s.attachEvents = function (detach) {\n s.initEvents();\n };\n s.detachEvents = function () {\n s.initEvents(true);\n };\n \n /*=========================\n Handle Clicks\n ===========================*/\n // Prevent Clicks\n s.allowClick = true;\n s.preventClicks = function (e) {\n if (!s.allowClick) {\n if (s.params.preventClicks) e.preventDefault();\n if (s.params.preventClicksPropagation && s.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n };\n // Clicks\n s.onClickNext = function (e) {\n e.preventDefault();\n s.slideNext();\n };\n s.onClickPrev = function (e) {\n e.preventDefault();\n s.slidePrev();\n };\n s.onClickIndex = function (e) {\n e.preventDefault();\n var index = $(this).index() * s.params.slidesPerGroup;\n if (s.params.loop) index = index + s.loopedSlides;\n s.slideTo(index);\n };\n \n /*=========================\n Handle Touches\n ===========================*/\n function findElementInEvent(e, selector) {\n var el = $(e.target);\n if (!el.is(selector)) {\n if (typeof selector === 'string') {\n el = el.parents(selector);\n }\n else if (selector.nodeType) {\n var found;\n el.parents().each(function (index, _el) {\n if (_el === selector) found = selector;\n });\n if (!found) return undefined;\n else return selector;\n }\n }\n if (el.length === 0) {\n return undefined;\n }\n return el[0];\n }\n s.updateClickedSlide = function (e) {\n var slide = findElementInEvent(e, '.' + s.params.slideClass);\n var slideFound = false;\n if (slide) {\n for (var i = 0; i < s.slides.length; i++) {\n if (s.slides[i] === slide) slideFound = true;\n }\n }\n \n if (slide && slideFound) {\n s.clickedSlide = slide;\n s.clickedIndex = $(slide).index();\n }\n else {\n s.clickedSlide = undefined;\n s.clickedIndex = undefined;\n return;\n }\n if (s.params.slideToClickedSlide && s.clickedIndex !== undefined && s.clickedIndex !== s.activeIndex) {\n var slideToIndex = s.clickedIndex,\n realIndex;\n if (s.params.loop) {\n realIndex = $(s.clickedSlide).attr('data-swiper-slide-index');\n if (slideToIndex > s.slides.length - s.params.slidesPerView) {\n s.fixLoop();\n slideToIndex = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index=\"' + realIndex + '\"]').eq(0).index();\n setTimeout(function () {\n s.slideTo(slideToIndex);\n }, 0);\n }\n else if (slideToIndex < s.params.slidesPerView - 1) {\n s.fixLoop();\n var duplicatedSlides = s.wrapper.children('.' + s.params.slideClass + '[data-swiper-slide-index=\"' + realIndex + '\"]');\n slideToIndex = duplicatedSlides.eq(duplicatedSlides.length - 1).index();\n setTimeout(function () {\n s.slideTo(slideToIndex);\n }, 0);\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n else {\n s.slideTo(slideToIndex);\n }\n }\n };\n \n var isTouched,\n isMoved,\n touchStartTime,\n isScrolling,\n currentTranslate,\n startTranslate,\n allowThresholdMove,\n // Form elements to match\n formElements = 'input, select, textarea, button',\n // Last click time\n lastClickTime = Date.now(), clickTimeout,\n //Velocities\n velocities = [],\n allowMomentumBounce;\n \n // Animating Flag\n s.animating = false;\n \n // Touches information\n s.touches = {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n };\n \n // Touch handlers\n var isTouchEvent, startMoving;\n s.onTouchStart = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n isTouchEvent = e.type === 'touchstart';\n if (!isTouchEvent && 'which' in e && e.which === 3) return;\n if (s.params.noSwiping && findElementInEvent(e, '.' + s.params.noSwipingClass)) {\n s.allowClick = true;\n return;\n }\n if (s.params.swipeHandler) {\n if (!findElementInEvent(e, s.params.swipeHandler)) return;\n }\n isTouched = true;\n isMoved = false;\n isScrolling = undefined;\n startMoving = undefined;\n s.touches.startX = s.touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.startY = s.touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = Date.now();\n s.allowClick = true;\n s.updateContainerSize();\n s.swipeDirection = undefined;\n if (s.params.threshold > 0) allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n if ($(e.target).is(formElements)) preventDefault = false;\n if (document.activeElement && $(document.activeElement).is(formElements)) {\n document.activeElement.blur();\n }\n if (preventDefault) {\n e.preventDefault();\n }\n }\n s.emit('onTouchStart', s, e);\n };\n \n s.onTouchMove = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n if (isTouchEvent && e.type === 'mousemove') return;\n if (e.preventedByNestedSwiper) return;\n if (s.params.onlyExternal) {\n isMoved = true;\n s.allowClick = false;\n return;\n }\n if (isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(formElements)) {\n isMoved = true;\n s.allowClick = false;\n return;\n }\n }\n \n s.emit('onTouchMove', s, e);\n \n if (e.targetTouches && e.targetTouches.length > 1) return;\n \n s.touches.currentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n s.touches.currentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n \n if (typeof isScrolling === 'undefined') {\n var touchAngle = Math.atan2(Math.abs(s.touches.currentY - s.touches.startY), Math.abs(s.touches.currentX - s.touches.startX)) * 180 / Math.PI;\n isScrolling = isH() ? touchAngle > s.params.touchAngle : (90 - touchAngle > s.params.touchAngle);\n }\n if (isScrolling) {\n s.emit('onTouchMoveOpposite', s, e);\n }\n if (typeof startMoving === 'undefined' && s.browser.ieTouch) {\n if (s.touches.currentX !== s.touches.startX || s.touches.currentY !== s.touches.startY) {\n startMoving = true;\n }\n }\n if (!isTouched) return;\n if (isScrolling) {\n isTouched = false;\n return;\n }\n if (!startMoving && s.browser.ieTouch) {\n return;\n }\n s.allowClick = false;\n s.emit('onSliderMove', s, e);\n e.preventDefault();\n if (s.params.touchMoveStopPropagation && !s.params.nested) {\n e.stopPropagation();\n }\n \n if (!isMoved) {\n if (params.loop) {\n s.fixLoop();\n }\n startTranslate = s.getWrapperTranslate();\n s.setWrapperTransition(0);\n if (s.animating) {\n s.wrapper.trigger('webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd');\n }\n if (s.params.autoplay && s.autoplaying) {\n if (s.params.autoplayDisableOnInteraction) {\n s.stopAutoplay();\n }\n else {\n s.pauseAutoplay();\n }\n }\n allowMomentumBounce = false;\n //Grab Cursor\n if (s.params.grabCursor) {\n s.container[0].style.cursor = 'move';\n s.container[0].style.cursor = '-webkit-grabbing';\n s.container[0].style.cursor = '-moz-grabbin';\n s.container[0].style.cursor = 'grabbing';\n }\n }\n isMoved = true;\n \n var diff = s.touches.diff = isH() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY;\n \n diff = diff * s.params.touchRatio;\n if (s.rtl) diff = -diff;\n \n s.swipeDirection = diff > 0 ? 'prev' : 'next';\n currentTranslate = diff + startTranslate;\n \n var disableParentSwiper = true;\n if ((diff > 0 && currentTranslate > s.minTranslate())) {\n disableParentSwiper = false;\n if (s.params.resistance) currentTranslate = s.minTranslate() - 1 + Math.pow(-s.minTranslate() + startTranslate + diff, s.params.resistanceRatio);\n }\n else if (diff < 0 && currentTranslate < s.maxTranslate()) {\n disableParentSwiper = false;\n if (s.params.resistance) currentTranslate = s.maxTranslate() + 1 - Math.pow(s.maxTranslate() - startTranslate - diff, s.params.resistanceRatio);\n }\n \n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n \n // Directions locks\n if (!s.params.allowSwipeToNext && s.swipeDirection === 'next' && currentTranslate < startTranslate) {\n currentTranslate = startTranslate;\n }\n if (!s.params.allowSwipeToPrev && s.swipeDirection === 'prev' && currentTranslate > startTranslate) {\n currentTranslate = startTranslate;\n }\n \n if (!s.params.followFinger) return;\n \n // Threshold\n if (s.params.threshold > 0) {\n if (Math.abs(diff) > s.params.threshold || allowThresholdMove) {\n if (!allowThresholdMove) {\n allowThresholdMove = true;\n s.touches.startX = s.touches.currentX;\n s.touches.startY = s.touches.currentY;\n currentTranslate = startTranslate;\n s.touches.diff = isH() ? s.touches.currentX - s.touches.startX : s.touches.currentY - s.touches.startY;\n return;\n }\n }\n else {\n currentTranslate = startTranslate;\n return;\n }\n }\n // Update active index in free mode\n if (s.params.freeMode || s.params.watchSlidesProgress) {\n s.updateActiveIndex();\n }\n if (s.params.freeMode) {\n //Velocity\n if (velocities.length === 0) {\n velocities.push({\n position: s.touches[isH() ? 'startX' : 'startY'],\n time: touchStartTime\n });\n }\n velocities.push({\n position: s.touches[isH() ? 'currentX' : 'currentY'],\n time: (new window.Date()).getTime()\n });\n }\n // Update progress\n s.updateProgress(currentTranslate);\n // Update translate\n s.setWrapperTranslate(currentTranslate);\n };\n s.onTouchEnd = function (e) {\n if (e.originalEvent) e = e.originalEvent;\n s.emit('onTouchEnd', s, e);\n if (!isTouched) return;\n //Return Grab Cursor\n if (s.params.grabCursor && isMoved && isTouched) {\n s.container[0].style.cursor = 'move';\n s.container[0].style.cursor = '-webkit-grab';\n s.container[0].style.cursor = '-moz-grab';\n s.container[0].style.cursor = 'grab';\n }\n \n // Time diff\n var touchEndTime = Date.now();\n var timeDiff = touchEndTime - touchStartTime;\n \n // Tap, doubleTap, Click\n if (s.allowClick) {\n s.updateClickedSlide(e);\n s.emit('onTap', s, e);\n if (timeDiff < 300 && (touchEndTime - lastClickTime) > 300) {\n if (clickTimeout) clearTimeout(clickTimeout);\n clickTimeout = setTimeout(function () {\n if (!s) return;\n if (s.params.paginationHide && s.paginationContainer.length > 0 && !$(e.target).hasClass(s.params.bulletClass)) {\n s.paginationContainer.toggleClass(s.params.paginationHiddenClass);\n }\n s.emit('onClick', s, e);\n }, 300);\n \n }\n if (timeDiff < 300 && (touchEndTime - lastClickTime) < 300) {\n if (clickTimeout) clearTimeout(clickTimeout);\n s.emit('onDoubleTap', s, e);\n }\n }\n \n lastClickTime = Date.now();\n setTimeout(function () {\n if (s) s.allowClick = true;\n }, 0);\n \n if (!isTouched || !isMoved || !s.swipeDirection || s.touches.diff === 0 || currentTranslate === startTranslate) {\n isTouched = isMoved = false;\n return;\n }\n isTouched = isMoved = false;\n \n var currentPos;\n if (s.params.followFinger) {\n currentPos = s.rtl ? s.translate : -s.translate;\n }\n else {\n currentPos = -currentTranslate;\n }\n if (s.params.freeMode) {\n if (currentPos < -s.minTranslate()) {\n s.slideTo(s.activeIndex);\n return;\n }\n else if (currentPos > -s.maxTranslate()) {\n if (s.slides.length < s.snapGrid.length) {\n s.slideTo(s.snapGrid.length - 1);\n }\n else {\n s.slideTo(s.slides.length - 1);\n }\n return;\n }\n \n if (s.params.freeModeMomentum) {\n if (velocities.length > 1) {\n var lastMoveEvent = velocities.pop(), velocityEvent = velocities.pop();\n \n var distance = lastMoveEvent.position - velocityEvent.position;\n var time = lastMoveEvent.time - velocityEvent.time;\n s.velocity = distance / time;\n s.velocity = s.velocity / 2;\n if (Math.abs(s.velocity) < 0.02) {\n s.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (new window.Date().getTime() - lastMoveEvent.time) > 300) {\n s.velocity = 0;\n }\n } else {\n s.velocity = 0;\n }\n \n velocities.length = 0;\n var momentumDuration = 1000 * s.params.freeModeMomentumRatio;\n var momentumDistance = s.velocity * momentumDuration;\n \n var newPosition = s.translate + momentumDistance;\n if (s.rtl) newPosition = - newPosition;\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(s.velocity) * 20 * s.params.freeModeMomentumBounceRatio;\n if (newPosition < s.maxTranslate()) {\n if (s.params.freeModeMomentumBounce) {\n if (newPosition + s.maxTranslate() < -bounceAmount) {\n newPosition = s.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = s.maxTranslate();\n doBounce = true;\n allowMomentumBounce = true;\n }\n else {\n newPosition = s.maxTranslate();\n }\n }\n else if (newPosition > s.minTranslate()) {\n if (s.params.freeModeMomentumBounce) {\n if (newPosition - s.minTranslate() > bounceAmount) {\n newPosition = s.minTranslate() + bounceAmount;\n }\n afterBouncePosition = s.minTranslate();\n doBounce = true;\n allowMomentumBounce = true;\n }\n else {\n newPosition = s.minTranslate();\n }\n }\n else if (s.params.freeModeSticky) {\n var j = 0,\n nextSlide;\n for (j = 0; j < s.snapGrid.length; j += 1) {\n if (s.snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n \n }\n if (Math.abs(s.snapGrid[nextSlide] - newPosition) < Math.abs(s.snapGrid[nextSlide - 1] - newPosition) || s.swipeDirection === 'next') {\n newPosition = s.snapGrid[nextSlide];\n } else {\n newPosition = s.snapGrid[nextSlide - 1];\n }\n if (!s.rtl) newPosition = - newPosition;\n }\n //Fix duration\n if (s.velocity !== 0) {\n if (s.rtl) {\n momentumDuration = Math.abs((-newPosition - s.translate) / s.velocity);\n }\n else {\n momentumDuration = Math.abs((newPosition - s.translate) / s.velocity);\n }\n }\n else if (s.params.freeModeSticky) {\n s.slideReset();\n return;\n }\n \n if (s.params.freeModeMomentumBounce && doBounce) {\n s.updateProgress(afterBouncePosition);\n s.setWrapperTransition(momentumDuration);\n s.setWrapperTranslate(newPosition);\n s.onTransitionStart();\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s || !allowMomentumBounce) return;\n s.emit('onMomentumBounce', s);\n \n s.setWrapperTransition(s.params.speed);\n s.setWrapperTranslate(afterBouncePosition);\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd();\n });\n });\n } else if (s.velocity) {\n s.updateProgress(newPosition);\n s.setWrapperTransition(momentumDuration);\n s.setWrapperTranslate(newPosition);\n s.onTransitionStart();\n if (!s.animating) {\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd();\n });\n }\n \n } else {\n s.updateProgress(newPosition);\n }\n \n s.updateActiveIndex();\n }\n if (!s.params.freeModeMomentum || timeDiff >= s.params.longSwipesMs) {\n s.updateProgress();\n s.updateActiveIndex();\n }\n return;\n }\n \n // Find current slide\n var i, stopIndex = 0, groupSize = s.slidesSizesGrid[0];\n for (i = 0; i < s.slidesGrid.length; i += s.params.slidesPerGroup) {\n if (typeof s.slidesGrid[i + s.params.slidesPerGroup] !== 'undefined') {\n if (currentPos >= s.slidesGrid[i] && currentPos < s.slidesGrid[i + s.params.slidesPerGroup]) {\n stopIndex = i;\n groupSize = s.slidesGrid[i + s.params.slidesPerGroup] - s.slidesGrid[i];\n }\n }\n else {\n if (currentPos >= s.slidesGrid[i]) {\n stopIndex = i;\n groupSize = s.slidesGrid[s.slidesGrid.length - 1] - s.slidesGrid[s.slidesGrid.length - 2];\n }\n }\n }\n \n // Find current slide size\n var ratio = (currentPos - s.slidesGrid[stopIndex]) / groupSize;\n \n if (timeDiff > s.params.longSwipesMs) {\n // Long touches\n if (!s.params.longSwipes) {\n s.slideTo(s.activeIndex);\n return;\n }\n if (s.swipeDirection === 'next') {\n if (ratio >= s.params.longSwipesRatio) s.slideTo(stopIndex + s.params.slidesPerGroup);\n else s.slideTo(stopIndex);\n \n }\n if (s.swipeDirection === 'prev') {\n if (ratio > (1 - s.params.longSwipesRatio)) s.slideTo(stopIndex + s.params.slidesPerGroup);\n else s.slideTo(stopIndex);\n }\n }\n else {\n // Short swipes\n if (!s.params.shortSwipes) {\n s.slideTo(s.activeIndex);\n return;\n }\n if (s.swipeDirection === 'next') {\n s.slideTo(stopIndex + s.params.slidesPerGroup);\n \n }\n if (s.swipeDirection === 'prev') {\n s.slideTo(stopIndex);\n }\n }\n };\n /*=========================\n Transitions\n ===========================*/\n s._slideTo = function (slideIndex, speed) {\n return s.slideTo(slideIndex, speed, true, true);\n };\n s.slideTo = function (slideIndex, speed, runCallbacks, internal) {\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (typeof slideIndex === 'undefined') slideIndex = 0;\n if (slideIndex < 0) slideIndex = 0;\n s.snapIndex = Math.floor(slideIndex / s.params.slidesPerGroup);\n if (s.snapIndex >= s.snapGrid.length) s.snapIndex = s.snapGrid.length - 1;\n \n var translate = - s.snapGrid[s.snapIndex];\n \n // Directions locks\n if (!s.params.allowSwipeToNext && translate < s.translate && translate < s.minTranslate()) {\n return false;\n }\n if (!s.params.allowSwipeToPrev && translate > s.translate && translate > s.maxTranslate()) {\n return false;\n }\n \n // Stop autoplay\n if (s.params.autoplay && s.autoplaying) {\n if (internal || !s.params.autoplayDisableOnInteraction) {\n s.pauseAutoplay(speed);\n }\n else {\n s.stopAutoplay();\n }\n }\n // Update progress\n s.updateProgress(translate);\n \n // Normalize slideIndex\n for (var i = 0; i < s.slidesGrid.length; i++) {\n if (- translate >= s.slidesGrid[i]) {\n slideIndex = i;\n }\n }\n \n if (typeof speed === 'undefined') speed = s.params.speed;\n s.previousIndex = s.activeIndex || 0;\n s.activeIndex = slideIndex;\n \n if (translate === s.translate) {\n s.updateClasses();\n return false;\n }\n s.updateClasses();\n s.onTransitionStart(runCallbacks);\n var translateX = isH() ? translate : 0, translateY = isH() ? 0 : translate;\n if (speed === 0) {\n s.setWrapperTransition(0);\n s.setWrapperTranslate(translate);\n s.onTransitionEnd(runCallbacks);\n }\n else {\n s.setWrapperTransition(speed);\n s.setWrapperTranslate(translate);\n if (!s.animating) {\n s.animating = true;\n s.wrapper.transitionEnd(function () {\n if (!s) return;\n s.onTransitionEnd(runCallbacks);\n });\n }\n \n }\n \n return true;\n };\n \n s.onTransitionStart = function (runCallbacks) {\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (s.lazy) s.lazy.onTransitionStart();\n if (runCallbacks) {\n s.emit('onTransitionStart', s);\n if (s.activeIndex !== s.previousIndex) {\n s.emit('onSlideChangeStart', s);\n }\n }\n };\n s.onTransitionEnd = function (runCallbacks) {\n s.animating = false;\n s.setWrapperTransition(0);\n if (typeof runCallbacks === 'undefined') runCallbacks = true;\n if (s.lazy) s.lazy.onTransitionEnd();\n if (runCallbacks) {\n s.emit('onTransitionEnd', s);\n if (s.activeIndex !== s.previousIndex) {\n s.emit('onSlideChangeEnd', s);\n }\n }\n if (s.params.hashnav && s.hashnav) {\n s.hashnav.setHash();\n }\n \n };\n s.slideNext = function (runCallbacks, speed, internal) {\n if (s.params.loop) {\n if (s.animating) return false;\n s.fixLoop();\n var clientLeft = s.container[0].clientLeft;\n return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal);\n }\n else return s.slideTo(s.activeIndex + s.params.slidesPerGroup, speed, runCallbacks, internal);\n };\n s._slideNext = function (speed) {\n return s.slideNext(true, speed, true);\n };\n s.slidePrev = function (runCallbacks, speed, internal) {\n if (s.params.loop) {\n if (s.animating) return false;\n s.fixLoop();\n var clientLeft = s.container[0].clientLeft;\n return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal);\n }\n else return s.slideTo(s.activeIndex - 1, speed, runCallbacks, internal);\n };\n s._slidePrev = function (speed) {\n return s.slidePrev(true, speed, true);\n };\n s.slideReset = function (runCallbacks, speed, internal) {\n return s.slideTo(s.activeIndex, speed, runCallbacks);\n };\n \n /*=========================\n Translate/transition helpers\n ===========================*/\n s.setWrapperTransition = function (duration, byController) {\n s.wrapper.transition(duration);\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n s.effects[s.params.effect].setTransition(duration);\n }\n if (s.params.parallax && s.parallax) {\n s.parallax.setTransition(duration);\n }\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.setTransition(duration);\n }\n if (s.params.control && s.controller) {\n s.controller.setTransition(duration, byController);\n }\n s.emit('onSetTransition', s, duration);\n };\n s.setWrapperTranslate = function (translate, updateActiveIndex, byController) {\n var x = 0, y = 0, z = 0;\n if (isH()) {\n x = s.rtl ? -translate : translate;\n }\n else {\n y = translate;\n }\n if (!s.params.virtualTranslate) {\n if (s.support.transforms3d) s.wrapper.transform('translate3d(' + x + 'px, ' + y + 'px, ' + z + 'px)');\n else s.wrapper.transform('translate(' + x + 'px, ' + y + 'px)');\n }\n \n s.translate = isH() ? x : y;\n \n if (updateActiveIndex) s.updateActiveIndex();\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n s.effects[s.params.effect].setTranslate(s.translate);\n }\n if (s.params.parallax && s.parallax) {\n s.parallax.setTranslate(s.translate);\n }\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.setTranslate(s.translate);\n }\n if (s.params.control && s.controller) {\n s.controller.setTranslate(s.translate, byController);\n }\n s.emit('onSetTranslate', s, s.translate);\n };\n \n s.getTranslate = function (el, axis) {\n var matrix, curTransform, curStyle, transformMatrix;\n \n // automatic axis detection\n if (typeof axis === 'undefined') {\n axis = 'x';\n }\n \n if (s.params.virtualTranslate) {\n return s.rtl ? -s.translate : s.translate;\n }\n \n curStyle = window.getComputedStyle(el, null);\n if (window.WebKitCSSMatrix) {\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curStyle.webkitTransform === 'none' ? '' : curStyle.webkitTransform);\n }\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)\n curTransform = transformMatrix.m41;\n //Crazy IE10 Matrix\n else if (matrix.length === 16)\n curTransform = parseFloat(matrix[12]);\n //Normal Browsers\n else\n curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n //Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix)\n curTransform = transformMatrix.m42;\n //Crazy IE10 Matrix\n else if (matrix.length === 16)\n curTransform = parseFloat(matrix[13]);\n //Normal Browsers\n else\n curTransform = parseFloat(matrix[5]);\n }\n if (s.rtl && curTransform) curTransform = -curTransform;\n return curTransform || 0;\n };\n s.getWrapperTranslate = function (axis) {\n if (typeof axis === 'undefined') {\n axis = isH() ? 'x' : 'y';\n }\n return s.getTranslate(s.wrapper[0], axis);\n };\n \n /*=========================\n Observer\n ===========================*/\n s.observers = [];\n function initObserver(target, options) {\n options = options || {};\n // create an observer instance\n var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n var observer = new ObserverFunc(function (mutations) {\n mutations.forEach(function (mutation) {\n s.onResize(true);\n s.emit('onObserverUpdate', s, mutation);\n });\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 \n s.observers.push(observer);\n }\n s.initObservers = function () {\n if (s.params.observeParents) {\n var containerParents = s.container.parents();\n for (var i = 0; i < containerParents.length; i++) {\n initObserver(containerParents[i]);\n }\n }\n \n // Observe container\n initObserver(s.container[0], {childList: false});\n \n // Observe wrapper\n initObserver(s.wrapper[0], {attributes: false});\n };\n s.disconnectObservers = function () {\n for (var i = 0; i < s.observers.length; i++) {\n s.observers[i].disconnect();\n }\n s.observers = [];\n };\n /*=========================\n Loop\n ===========================*/\n // Create looped slides\n s.createLoop = function () {\n // Remove duplicated slides\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove();\n \n var slides = s.wrapper.children('.' + s.params.slideClass);\n s.loopedSlides = parseInt(s.params.loopedSlides || s.params.slidesPerView, 10);\n s.loopedSlides = s.loopedSlides + s.params.loopAdditionalSlides;\n if (s.loopedSlides > slides.length) {\n s.loopedSlides = slides.length;\n }\n \n var prependSlides = [], appendSlides = [], i;\n slides.each(function (index, el) {\n var slide = $(this);\n if (index < s.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - s.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (i = 0; i < appendSlides.length; i++) {\n s.wrapper.append($(appendSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass));\n }\n for (i = prependSlides.length - 1; i >= 0; i--) {\n s.wrapper.prepend($(prependSlides[i].cloneNode(true)).addClass(s.params.slideDuplicateClass));\n }\n };\n s.destroyLoop = function () {\n s.wrapper.children('.' + s.params.slideClass + '.' + s.params.slideDuplicateClass).remove();\n s.slides.removeAttr('data-swiper-slide-index');\n };\n s.fixLoop = function () {\n var newIndex;\n //Fix For Negative Oversliding\n if (s.activeIndex < s.loopedSlides) {\n newIndex = s.slides.length - s.loopedSlides * 3 + s.activeIndex;\n newIndex = newIndex + s.loopedSlides;\n s.slideTo(newIndex, 0, false, true);\n }\n //Fix For Positive Oversliding\n else if ((s.params.slidesPerView === 'auto' && s.activeIndex >= s.loopedSlides * 2) || (s.activeIndex > s.slides.length - s.params.slidesPerView * 2)) {\n newIndex = -s.slides.length + s.activeIndex + s.loopedSlides;\n newIndex = newIndex + s.loopedSlides;\n s.slideTo(newIndex, 0, false, true);\n }\n };\n /*=========================\n Append/Prepend/Remove Slides\n ===========================*/\n s.appendSlide = function (slides) {\n if (s.params.loop) {\n s.destroyLoop();\n }\n if (typeof slides === 'object' && slides.length) {\n for (var i = 0; i < slides.length; i++) {\n if (slides[i]) s.wrapper.append(slides[i]);\n }\n }\n else {\n s.wrapper.append(slides);\n }\n if (s.params.loop) {\n s.createLoop();\n }\n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n };\n s.prependSlide = function (slides) {\n if (s.params.loop) {\n s.destroyLoop();\n }\n var newActiveIndex = s.activeIndex + 1;\n if (typeof slides === 'object' && slides.length) {\n for (var i = 0; i < slides.length; i++) {\n if (slides[i]) s.wrapper.prepend(slides[i]);\n }\n newActiveIndex = s.activeIndex + slides.length;\n }\n else {\n s.wrapper.prepend(slides);\n }\n if (s.params.loop) {\n s.createLoop();\n }\n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n s.slideTo(newActiveIndex, 0, false);\n };\n s.removeSlide = function (slidesIndexes) {\n if (s.params.loop) {\n s.destroyLoop();\n s.slides = s.wrapper.children('.' + s.params.slideClass);\n }\n var newActiveIndex = s.activeIndex,\n indexToRemove;\n if (typeof slidesIndexes === 'object' && slidesIndexes.length) {\n for (var i = 0; i < slidesIndexes.length; i++) {\n indexToRemove = slidesIndexes[i];\n if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex--;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n else {\n indexToRemove = slidesIndexes;\n if (s.slides[indexToRemove]) s.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex--;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n \n if (s.params.loop) {\n s.createLoop();\n }\n \n if (!(s.params.observer && s.support.observer)) {\n s.update(true);\n }\n if (s.params.loop) {\n s.slideTo(newActiveIndex + s.loopedSlides, 0, false);\n }\n else {\n s.slideTo(newActiveIndex, 0, false);\n }\n \n };\n s.removeAllSlides = function () {\n var slidesIndexes = [];\n for (var i = 0; i < s.slides.length; i++) {\n slidesIndexes.push(i);\n }\n s.removeSlide(slidesIndexes);\n };\n \n\n /*=========================\n Effects\n ===========================*/\n s.effects = {\n fade: {\n setTranslate: function () {\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides.eq(i);\n var offset = slide[0].swiperSlideOffset;\n var tx = -offset;\n if (!s.params.virtualTranslate) tx = tx - s.translate;\n var ty = 0;\n if (!isH()) {\n ty = tx;\n tx = 0;\n }\n var slideOpacity = s.params.fade.crossFade ?\n Math.max(1 - Math.abs(slide[0].progress), 0) :\n 1 + Math.min(Math.max(slide[0].progress, -1), 0);\n slide\n .css({\n opacity: slideOpacity\n })\n .transform('translate3d(' + tx + 'px, ' + ty + 'px, 0px)');\n \n }\n \n },\n setTransition: function (duration) {\n s.slides.transition(duration);\n if (s.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n s.slides.transitionEnd(function () {\n if (eventTriggered) return;\n if (!s) return;\n eventTriggered = true;\n s.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'];\n for (var i = 0; i < triggerEvents.length; i++) {\n s.wrapper.trigger(triggerEvents[i]);\n }\n });\n }\n }\n },\n cube: {\n setTranslate: function () {\n var wrapperRotate = 0, cubeShadow;\n if (s.params.cube.shadow) {\n if (isH()) {\n cubeShadow = s.wrapper.find('.swiper-cube-shadow');\n if (cubeShadow.length === 0) {\n cubeShadow = $('
');\n s.wrapper.append(cubeShadow);\n }\n cubeShadow.css({height: s.width + 'px'});\n }\n else {\n cubeShadow = s.container.find('.swiper-cube-shadow');\n if (cubeShadow.length === 0) {\n cubeShadow = $('');\n s.container.append(cubeShadow);\n }\n }\n }\n for (var i = 0; i < s.slides.length; i++) {\n var slide = s.slides.eq(i);\n var slideAngle = i * 90;\n var round = Math.floor(slideAngle / 360);\n if (s.rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n var progress = Math.max(Math.min(slide[0].progress, 1), -1);\n var tx = 0, ty = 0, tz = 0;\n if (i % 4 === 0) {\n tx = - round * 4 * s.size;\n tz = 0;\n }\n else if ((i - 1) % 4 === 0) {\n tx = 0;\n tz = - round * 4 * s.size;\n }\n else if ((i - 2) % 4 === 0) {\n tx = s.size + round * 4 * s.size;\n tz = s.size;\n }\n else if ((i - 3) % 4 === 0) {\n tx = - s.size;\n tz = 3 * s.size + s.size * 4 * round;\n }\n if (s.rtl) {\n tx = -tx;\n }\n \n if (!isH()) {\n ty = tx;\n tx = 0;\n }\n \n var transform = 'rotateX(' + (isH() ? 0 : -slideAngle) + 'deg) rotateY(' + (isH() ? slideAngle : 0) + 'deg) translate3d(' + tx + 'px, ' + ty + 'px, ' + tz + 'px)';\n if (progress <= 1 && progress > -1) {\n wrapperRotate = i * 90 + progress * 90;\n if (s.rtl) wrapperRotate = -i * 90 - progress * 90;\n }\n slide.transform(transform);\n if (s.params.cube.slideShadows) {\n //Set shadows\n var shadowBefore = isH() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = isH() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $('');\n slide.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $('');\n slide.append(shadowAfter);\n }\n var shadowOpacity = slide[0].progress;\n if (shadowBefore.length) shadowBefore[0].style.opacity = -slide[0].progress;\n if (shadowAfter.length) shadowAfter[0].style.opacity = slide[0].progress;\n }\n }\n s.wrapper.css({\n '-webkit-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n '-moz-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n '-ms-transform-origin': '50% 50% -' + (s.size / 2) + 'px',\n 'transform-origin': '50% 50% -' + (s.size / 2) + 'px'\n });\n \n if (s.params.cube.shadow) {\n if (isH()) {\n cubeShadow.transform('translate3d(0px, ' + (s.width / 2 + s.params.cube.shadowOffset) + 'px, ' + (-s.width / 2) + 'px) rotateX(90deg) rotateZ(0deg) scale(' + (s.params.cube.shadowScale) + ')');\n }\n else {\n var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n var scale1 = s.params.cube.shadowScale,\n scale2 = s.params.cube.shadowScale / multiplier,\n offset = s.params.cube.shadowOffset;\n cubeShadow.transform('scale3d(' + scale1 + ', 1, ' + scale2 + ') translate3d(0px, ' + (s.height / 2 + offset) + 'px, ' + (-s.height / 2 / scale2) + 'px) rotateX(-90deg)');\n }\n }\n var zFactor = (s.isSafari || s.isUiWebView) ? (-s.size / 2) : 0;\n s.wrapper.transform('translate3d(0px,0,' + zFactor + 'px) rotateX(' + (isH() ? 0 : wrapperRotate) + 'deg) rotateY(' + (isH() ? -wrapperRotate : 0) + 'deg)');\n },\n setTransition: function (duration) {\n s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n if (s.params.cube.shadow && !isH()) {\n s.container.find('.swiper-cube-shadow').transition(duration);\n }\n }\n },\n coverflow: {\n setTranslate: function () {\n var transform = s.translate;\n var center = isH() ? -transform + s.width / 2 : -transform + s.height / 2;\n var rotate = isH() ? s.params.coverflow.rotate: -s.params.coverflow.rotate;\n var translate = s.params.coverflow.depth;\n //Each slide offset from center\n for (var i = 0, length = s.slides.length; i < length; i++) {\n var slide = s.slides.eq(i);\n var slideSize = s.slidesSizesGrid[i];\n var slideOffset = slide[0].swiperSlideOffset;\n var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * s.params.coverflow.modifier;\n \n var rotateY = isH() ? rotate * offsetMultiplier : 0;\n var rotateX = isH() ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n var translateZ = -translate * Math.abs(offsetMultiplier);\n \n var translateY = isH() ? 0 : s.params.coverflow.stretch * (offsetMultiplier);\n var translateX = isH() ? s.params.coverflow.stretch * (offsetMultiplier) : 0;\n \n //Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n \n var slideTransform = 'translate3d(' + translateX + 'px,' + translateY + 'px,' + translateZ + 'px) rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg)';\n \n slide.transform(slideTransform);\n slide[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (s.params.coverflow.slideShadows) {\n //Set shadows\n var shadowBefore = isH() ? slide.find('.swiper-slide-shadow-left') : slide.find('.swiper-slide-shadow-top');\n var shadowAfter = isH() ? slide.find('.swiper-slide-shadow-right') : slide.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $('');\n slide.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $('');\n slide.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfter.length) shadowAfter[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n }\n }\n \n //Set correct perspective for IE10\n if (s.browser.ie) {\n var ws = s.wrapper[0].style;\n ws.perspectiveOrigin = center + 'px 50%';\n }\n },\n setTransition: function (duration) {\n s.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n }\n }\n };\n\n /*=========================\n Images Lazy Loading\n ===========================*/\n s.lazy = {\n initialImageLoaded: false,\n loadImageInSlide: function (index, loadInDuplicate) {\n if (typeof index === 'undefined') return;\n if (typeof loadInDuplicate === 'undefined') loadInDuplicate = true;\n if (s.slides.length === 0) return;\n \n var slide = s.slides.eq(index);\n var img = slide.find('.swiper-lazy:not(.swiper-lazy-loaded):not(.swiper-lazy-loading)');\n if (slide.hasClass('swiper-lazy') && !slide.hasClass('swiper-lazy-loaded') && !slide.hasClass('swiper-lazy-loading')) {\n img.add(slide[0]);\n }\n if (img.length === 0) return;\n \n img.each(function () {\n var _img = $(this);\n _img.addClass('swiper-lazy-loading');\n var background = _img.attr('data-background');\n var src = _img.attr('data-src');\n s.loadImage(_img[0], (src || background), false, function () {\n if (background) {\n _img.css('background-image', 'url(' + background + ')');\n _img.removeAttr('data-background');\n }\n else {\n _img.attr('src', src);\n _img.removeAttr('data-src');\n }\n \n _img.addClass('swiper-lazy-loaded').removeClass('swiper-lazy-loading');\n slide.find('.swiper-lazy-preloader, .preloader').remove();\n if (s.params.loop && loadInDuplicate) {\n var slideOriginalIndex = slide.attr('data-swiper-slide-index');\n if (slide.hasClass(s.params.slideDuplicateClass)) {\n var originalSlide = s.wrapper.children('[data-swiper-slide-index=\"' + slideOriginalIndex + '\"]:not(.' + s.params.slideDuplicateClass + ')');\n s.lazy.loadImageInSlide(originalSlide.index(), false);\n }\n else {\n var duplicatedSlide = s.wrapper.children('.' + s.params.slideDuplicateClass + '[data-swiper-slide-index=\"' + slideOriginalIndex + '\"]');\n s.lazy.loadImageInSlide(duplicatedSlide.index(), false);\n }\n }\n s.emit('onLazyImageReady', s, slide[0], _img[0]);\n });\n \n s.emit('onLazyImageLoad', s, slide[0], _img[0]);\n });\n \n },\n load: function () {\n var i;\n if (s.params.watchSlidesVisibility) {\n s.wrapper.children('.' + s.params.slideVisibleClass).each(function () {\n s.lazy.loadImageInSlide($(this).index());\n });\n }\n else {\n if (s.params.slidesPerView > 1) {\n for (i = s.activeIndex; i < s.activeIndex + s.params.slidesPerView ; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n }\n else {\n s.lazy.loadImageInSlide(s.activeIndex); \n }\n }\n if (s.params.lazyLoadingInPrevNext) {\n if (s.params.slidesPerView > 1) {\n // Next Slides\n for (i = s.activeIndex + s.params.slidesPerView; i < s.activeIndex + s.params.slidesPerView + s.params.slidesPerView; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n // Prev Slides\n for (i = s.activeIndex - s.params.slidesPerView; i < s.activeIndex ; i++) {\n if (s.slides[i]) s.lazy.loadImageInSlide(i);\n }\n }\n else {\n var nextSlide = s.wrapper.children('.' + s.params.slideNextClass);\n if (nextSlide.length > 0) s.lazy.loadImageInSlide(nextSlide.index());\n \n var prevSlide = s.wrapper.children('.' + s.params.slidePrevClass);\n if (prevSlide.length > 0) s.lazy.loadImageInSlide(prevSlide.index());\n }\n }\n },\n onTransitionStart: function () {\n if (s.params.lazyLoading) {\n if (s.params.lazyLoadingOnTransitionStart || (!s.params.lazyLoadingOnTransitionStart && !s.lazy.initialImageLoaded)) {\n s.lazy.load();\n }\n }\n },\n onTransitionEnd: function () {\n if (s.params.lazyLoading && !s.params.lazyLoadingOnTransitionStart) {\n s.lazy.load();\n }\n }\n };\n \n\n /*=========================\n Scrollbar\n ===========================*/\n s.scrollbar = {\n set: function () {\n if (!s.params.scrollbar) return;\n var sb = s.scrollbar;\n sb.track = $(s.params.scrollbar);\n sb.drag = sb.track.find('.swiper-scrollbar-drag');\n if (sb.drag.length === 0) {\n sb.drag = $('');\n sb.track.append(sb.drag);\n }\n sb.drag[0].style.width = '';\n sb.drag[0].style.height = '';\n sb.trackSize = isH() ? sb.track[0].offsetWidth : sb.track[0].offsetHeight;\n \n sb.divider = s.size / s.virtualSize;\n sb.moveDivider = sb.divider * (sb.trackSize / s.size);\n sb.dragSize = sb.trackSize * sb.divider;\n \n if (isH()) {\n sb.drag[0].style.width = sb.dragSize + 'px';\n }\n else {\n sb.drag[0].style.height = sb.dragSize + 'px';\n }\n \n if (sb.divider >= 1) {\n sb.track[0].style.display = 'none';\n }\n else {\n sb.track[0].style.display = '';\n }\n if (s.params.scrollbarHide) {\n sb.track[0].style.opacity = 0;\n }\n },\n setTranslate: function () {\n if (!s.params.scrollbar) return;\n var diff;\n var sb = s.scrollbar;\n var translate = s.translate || 0;\n var newPos;\n \n var newSize = sb.dragSize;\n newPos = (sb.trackSize - sb.dragSize) * s.progress;\n if (s.rtl && isH()) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = sb.dragSize - newPos;\n newPos = 0;\n }\n else if (-newPos + sb.dragSize > sb.trackSize) {\n newSize = sb.trackSize + newPos;\n }\n }\n else {\n if (newPos < 0) {\n newSize = sb.dragSize + newPos;\n newPos = 0;\n }\n else if (newPos + sb.dragSize > sb.trackSize) {\n newSize = sb.trackSize - newPos;\n }\n }\n if (isH()) {\n if (s.support.transforms3d) {\n sb.drag.transform('translate3d(' + (newPos) + 'px, 0, 0)');\n }\n else {\n sb.drag.transform('translateX(' + (newPos) + 'px)'); \n }\n sb.drag[0].style.width = newSize + 'px';\n }\n else {\n if (s.support.transforms3d) {\n sb.drag.transform('translate3d(0px, ' + (newPos) + 'px, 0)');\n }\n else {\n sb.drag.transform('translateY(' + (newPos) + 'px)'); \n }\n sb.drag[0].style.height = newSize + 'px';\n }\n if (s.params.scrollbarHide) {\n clearTimeout(sb.timeout);\n sb.track[0].style.opacity = 1;\n sb.timeout = setTimeout(function () {\n sb.track[0].style.opacity = 0;\n sb.track.transition(400);\n }, 1000);\n }\n },\n setTransition: function (duration) {\n if (!s.params.scrollbar) return;\n s.scrollbar.drag.transition(duration);\n }\n };\n\n /*=========================\n Controller\n ===========================*/\n s.controller = {\n setTranslate: function (translate, byController) {\n var controlled = s.params.control;\n var multiplier, controlledTranslate;\n function setControlledTranslate(c) {\n translate = c.rtl && c.params.direction === 'horizontal' ? -s.translate : s.translate;\n multiplier = (c.maxTranslate() - c.minTranslate()) / (s.maxTranslate() - s.minTranslate());\n controlledTranslate = (translate - s.minTranslate()) * multiplier + c.minTranslate();\n if (s.params.controlInverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setWrapperTranslate(controlledTranslate, false, s);\n c.updateActiveIndex();\n }\n if (s.isArray(controlled)) {\n for (var i = 0; i < controlled.length; i++) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n }\n else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition: function (duration, byController) {\n var controlled = s.params.control;\n var i;\n function setControlledTransition(c) {\n c.setWrapperTransition(duration, s);\n if (duration !== 0) {\n c.onTransitionStart();\n c.wrapper.transitionEnd(function(){\n if (!controlled) return;\n c.onTransitionEnd();\n });\n }\n }\n if (s.isArray(controlled)) {\n for (i = 0; i < controlled.length; i++) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n }\n else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n };\n\n /*=========================\n Hash Navigation\n ===========================*/\n s.hashnav = {\n init: function () {\n if (!s.params.hashnav) return;\n s.hashnav.initialized = true;\n var hash = document.location.hash.replace('#', '');\n if (!hash) return;\n var speed = 0;\n for (var i = 0, length = s.slides.length; i < length; i++) {\n var slide = s.slides.eq(i);\n var slideHash = slide.attr('data-hash');\n if (slideHash === hash && !slide.hasClass(s.params.slideDuplicateClass)) {\n var index = slide.index();\n s.slideTo(index, speed, s.params.runCallbacksOnInit, true);\n }\n }\n },\n setHash: function () {\n if (!s.hashnav.initialized || !s.params.hashnav) return;\n document.location.hash = s.slides.eq(s.activeIndex).attr('data-hash') || '';\n }\n };\n\n /*=========================\n Keyboard Control\n ===========================*/\n function handleKeyboard(e) {\n if (e.originalEvent) e = e.originalEvent; //jquery fix\n var kc = e.keyCode || e.charCode;\n // Directions locks\n if (!s.params.allowSwipeToNext && (isH() && kc === 39 || !isH() && kc === 40)) {\n return false;\n }\n if (!s.params.allowSwipeToPrev && (isH() && kc === 37 || !isH() && kc === 38)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return;\n }\n if (kc === 37 || kc === 39 || kc === 38 || kc === 40) {\n var inView = false;\n //Check that swiper should be inside of visible area of window\n if (s.container.parents('.swiper-slide').length > 0 && s.container.parents('.swiper-slide-active').length === 0) {\n return;\n }\n var windowScroll = {\n left: window.pageXOffset,\n top: window.pageYOffset\n };\n var windowWidth = window.innerWidth;\n var windowHeight = window.innerHeight;\n var swiperOffset = s.container.offset();\n if (s.rtl) swiperOffset.left = swiperOffset.left - s.container[0].scrollLeft;\n var swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + s.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + s.height],\n [swiperOffset.left + s.width, swiperOffset.top + s.height]\n ];\n for (var i = 0; i < swiperCoord.length; i++) {\n var point = swiperCoord[i];\n if (\n point[0] >= windowScroll.left && point[0] <= windowScroll.left + windowWidth &&\n point[1] >= windowScroll.top && point[1] <= windowScroll.top + windowHeight\n ) {\n inView = true;\n }\n \n }\n if (!inView) return;\n }\n if (isH()) {\n if (kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if ((kc === 39 && !s.rtl) || (kc === 37 && s.rtl)) s.slideNext();\n if ((kc === 37 && !s.rtl) || (kc === 39 && s.rtl)) s.slidePrev();\n }\n else {\n if (kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 40) s.slideNext();\n if (kc === 38) s.slidePrev();\n }\n }\n s.disableKeyboardControl = function () {\n $(document).off('keydown', handleKeyboard);\n };\n s.enableKeyboardControl = function () {\n $(document).on('keydown', handleKeyboard);\n };\n \n\n /*=========================\n Mousewheel Control\n ===========================*/\n s.mousewheel = {\n event: false,\n lastScrollTime: (new window.Date()).getTime()\n };\n if (s.params.mousewheelControl) {\n if (document.onmousewheel !== undefined) {\n s.mousewheel.event = 'mousewheel';\n }\n if (!s.mousewheel.event) {\n try {\n new window.WheelEvent('wheel');\n s.mousewheel.event = 'wheel';\n } catch (e) {}\n }\n if (!s.mousewheel.event) {\n s.mousewheel.event = 'DOMMouseScroll';\n }\n }\n function handleMousewheel(e) {\n if (e.originalEvent) e = e.originalEvent; //jquery fix\n var we = s.mousewheel.event;\n var delta = 0;\n //Opera & IE\n if (e.detail) delta = -e.detail;\n //WebKits\n else if (we === 'mousewheel') {\n if (s.params.mousewheelForceToAxis) {\n if (isH()) {\n if (Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY)) delta = e.wheelDeltaX;\n else return;\n }\n else {\n if (Math.abs(e.wheelDeltaY) > Math.abs(e.wheelDeltaX)) delta = e.wheelDeltaY;\n else return;\n }\n }\n else {\n delta = e.wheelDelta;\n }\n }\n //Old FireFox\n else if (we === 'DOMMouseScroll') delta = -e.detail;\n //New FireFox\n else if (we === 'wheel') {\n if (s.params.mousewheelForceToAxis) {\n if (isH()) {\n if (Math.abs(e.deltaX) > Math.abs(e.deltaY)) delta = -e.deltaX;\n else return;\n }\n else {\n if (Math.abs(e.deltaY) > Math.abs(e.deltaX)) delta = -e.deltaY;\n else return;\n }\n }\n else {\n delta = Math.abs(e.deltaX) > Math.abs(e.deltaY) ? - e.deltaX : - e.deltaY;\n }\n }\n \n if (s.params.mousewheelInvert) delta = -delta;\n \n if (!s.params.freeMode) {\n if ((new window.Date()).getTime() - s.mousewheel.lastScrollTime > 60) {\n if (delta < 0) {\n if (!s.isEnd) s.slideNext();\n else if (s.params.mousewheelReleaseOnEdges) return true;\n }\n else {\n if (!s.isBeginning) s.slidePrev();\n else if (s.params.mousewheelReleaseOnEdges) return true;\n }\n }\n s.mousewheel.lastScrollTime = (new window.Date()).getTime();\n \n }\n else {\n //Freemode or scrollContainer:\n \n var position = s.getWrapperTranslate() + delta;\n \n if (position > 0) position = 0;\n if (position < s.maxTranslate()) position = s.maxTranslate();\n \n s.setWrapperTransition(0);\n s.setWrapperTranslate(position);\n s.updateProgress();\n s.updateActiveIndex();\n \n if (s.params.freeModeSticky) {\n clearTimeout(s.mousewheel.timeout);\n s.mousewheel.timeout = setTimeout(function () {\n s.slideReset();\n }, 300);\n }\n \n // Return page scroll on edge positions\n if (position === 0 || position === s.maxTranslate()) return;\n }\n if (s.params.autoplay) s.stopAutoplay();\n \n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n }\n s.disableMousewheelControl = function () {\n if (!s.mousewheel.event) return false;\n s.container.off(s.mousewheel.event, handleMousewheel);\n return true;\n };\n \n s.enableMousewheelControl = function () {\n if (!s.mousewheel.event) return false;\n s.container.on(s.mousewheel.event, handleMousewheel);\n return true;\n };\n\n /*=========================\n Parallax\n ===========================*/\n function setParallaxTransform(el, progress) {\n el = $(el);\n var p, pX, pY;\n \n p = el.attr('data-swiper-parallax') || '0';\n pX = el.attr('data-swiper-parallax-x');\n pY = el.attr('data-swiper-parallax-y');\n if (pX || pY) {\n pX = pX || '0';\n pY = pY || '0';\n }\n else {\n if (isH()) {\n pX = p;\n pY = '0';\n }\n else {\n pY = p;\n pX = '0';\n }\n }\n if ((pX).indexOf('%') >= 0) {\n pX = parseInt(pX, 10) * progress + '%';\n }\n else {\n pX = pX * progress + 'px' ;\n }\n if ((pY).indexOf('%') >= 0) {\n pY = parseInt(pY, 10) * progress + '%';\n }\n else {\n pY = pY * progress + 'px' ;\n }\n el.transform('translate3d(' + pX + ', ' + pY + ',0px)');\n } \n s.parallax = {\n setTranslate: function () {\n s.container.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){\n setParallaxTransform(this, s.progress);\n \n });\n s.slides.each(function () {\n var slide = $(this);\n slide.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function () {\n var progress = Math.min(Math.max(slide[0].progress, -1), 1);\n setParallaxTransform(this, progress);\n });\n });\n },\n setTransition: function (duration) {\n if (typeof duration === 'undefined') duration = s.params.speed;\n s.container.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]').each(function(){\n var el = $(this);\n var parallaxDuration = parseInt(el.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n el.transition(parallaxDuration);\n });\n }\n };\n \n\n /*=========================\n Plugins API. Collect all and init all plugins\n ===========================*/\n s._plugins = [];\n for (var plugin in s.plugins) {\n var p = s.plugins[plugin](s, s.params[plugin]);\n if (p) s._plugins.push(p);\n }\n // Method to call all plugins event/method\n s.callPlugins = function (eventName) {\n for (var i = 0; i < s._plugins.length; i++) {\n if (eventName in s._plugins[i]) {\n s._plugins[i][eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n }\n };\n\n /*=========================\n Events/Callbacks/Plugins Emitter\n ===========================*/\n function normalizeEventName (eventName) {\n if (eventName.indexOf('on') !== 0) {\n if (eventName[0] !== eventName[0].toUpperCase()) {\n eventName = 'on' + eventName[0].toUpperCase() + eventName.substring(1);\n }\n else {\n eventName = 'on' + eventName;\n }\n }\n return eventName;\n }\n s.emitterEventListeners = {\n \n };\n s.emit = function (eventName) {\n // Trigger callbacks\n if (s.params[eventName]) {\n s.params[eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n var i;\n // Trigger events\n if (s.emitterEventListeners[eventName]) {\n for (i = 0; i < s.emitterEventListeners[eventName].length; i++) {\n s.emitterEventListeners[eventName][i](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n }\n // Trigger plugins\n if (s.callPlugins) s.callPlugins(eventName, arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n };\n s.on = function (eventName, handler) {\n eventName = normalizeEventName(eventName);\n if (!s.emitterEventListeners[eventName]) s.emitterEventListeners[eventName] = [];\n s.emitterEventListeners[eventName].push(handler);\n return s;\n };\n s.off = function (eventName, handler) {\n var i;\n eventName = normalizeEventName(eventName);\n if (typeof handler === 'undefined') {\n // Remove all handlers for such event\n s.emitterEventListeners[eventName] = [];\n return s;\n }\n if (!s.emitterEventListeners[eventName] || s.emitterEventListeners[eventName].length === 0) return;\n for (i = 0; i < s.emitterEventListeners[eventName].length; i++) {\n if(s.emitterEventListeners[eventName][i] === handler) s.emitterEventListeners[eventName].splice(i, 1);\n }\n return s;\n };\n s.once = function (eventName, handler) {\n eventName = normalizeEventName(eventName);\n var _handler = function () {\n handler(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);\n s.off(eventName, _handler);\n };\n s.on(eventName, _handler);\n return s;\n };\n\n // Accessibility tools\n s.a11y = {\n makeFocusable: function ($el) {\n $el[0].tabIndex = '0';\n return $el;\n },\n addRole: function ($el, role) {\n $el.attr('role', role);\n return $el;\n },\n \n addLabel: function ($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n \n disable: function ($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n \n enable: function ($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n \n onEnterKey: function (event) {\n if (event.keyCode !== 13) return;\n if ($(event.target).is(s.params.nextButton)) {\n s.onClickNext(event);\n if (s.isEnd) {\n s.a11y.notify(s.params.lastSlideMsg);\n }\n else {\n s.a11y.notify(s.params.nextSlideMsg);\n }\n }\n else if ($(event.target).is(s.params.prevButton)) {\n s.onClickPrev(event);\n if (s.isBeginning) {\n s.a11y.notify(s.params.firstSlideMsg);\n }\n else {\n s.a11y.notify(s.params.prevSlideMsg);\n }\n }\n },\n \n liveRegion: $(''),\n \n notify: function (message) {\n var notification = s.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n init: function () {\n // Setup accessibility\n if (s.params.nextButton) {\n var nextButton = $(s.params.nextButton);\n s.a11y.makeFocusable(nextButton);\n s.a11y.addRole(nextButton, 'button');\n s.a11y.addLabel(nextButton, s.params.nextSlideMsg);\n }\n if (s.params.prevButton) {\n var prevButton = $(s.params.prevButton);\n s.a11y.makeFocusable(prevButton);\n s.a11y.addRole(prevButton, 'button');\n s.a11y.addLabel(prevButton, s.params.prevSlideMsg);\n }\n \n $(s.container).append(s.a11y.liveRegion);\n },\n destroy: function () {\n if (s.a11y.liveRegion && s.a11y.liveRegion.length > 0) s.a11y.liveRegion.remove();\n }\n };\n \n\n /*=========================\n Init/Destroy\n ===========================*/\n s.init = function () {\n if (s.params.loop) s.createLoop();\n s.updateContainerSize();\n s.updateSlidesSize();\n s.updatePagination();\n if (s.params.scrollbar && s.scrollbar) {\n s.scrollbar.set();\n }\n if (s.params.effect !== 'slide' && s.effects[s.params.effect]) {\n if (!s.params.loop) s.updateProgress();\n s.effects[s.params.effect].setTranslate();\n }\n if (s.params.loop) {\n s.slideTo(s.params.initialSlide + s.loopedSlides, 0, s.params.runCallbacksOnInit);\n }\n else {\n s.slideTo(s.params.initialSlide, 0, s.params.runCallbacksOnInit);\n if (s.params.initialSlide === 0) {\n if (s.parallax && s.params.parallax) s.parallax.setTranslate();\n if (s.lazy && s.params.lazyLoading) {\n s.lazy.load();\n s.lazy.initialImageLoaded = true;\n }\n }\n }\n s.attachEvents();\n if (s.params.observer && s.support.observer) {\n s.initObservers();\n }\n if (s.params.preloadImages && !s.params.lazyLoading) {\n s.preloadImages();\n }\n if (s.params.autoplay) {\n s.startAutoplay();\n }\n if (s.params.keyboardControl) {\n if (s.enableKeyboardControl) s.enableKeyboardControl();\n }\n if (s.params.mousewheelControl) {\n if (s.enableMousewheelControl) s.enableMousewheelControl();\n }\n if (s.params.hashnav) {\n if (s.hashnav) s.hashnav.init();\n }\n if (s.params.a11y && s.a11y) s.a11y.init();\n s.emit('onInit', s);\n };\n \n // Cleanup dynamic styles\n s.cleanupStyles = function () {\n // Container\n s.container.removeClass(s.classNames.join(' ')).removeAttr('style');\n \n // Wrapper\n s.wrapper.removeAttr('style');\n \n // Slides\n if (s.slides && s.slides.length) {\n s.slides\n .removeClass([\n s.params.slideVisibleClass,\n s.params.slideActiveClass,\n s.params.slideNextClass,\n s.params.slidePrevClass\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-column')\n .removeAttr('data-swiper-row');\n }\n \n // Pagination/Bullets\n if (s.paginationContainer && s.paginationContainer.length) {\n s.paginationContainer.removeClass(s.params.paginationHiddenClass);\n }\n if (s.bullets && s.bullets.length) {\n s.bullets.removeClass(s.params.bulletActiveClass);\n }\n \n // Buttons\n if (s.params.prevButton) $(s.params.prevButton).removeClass(s.params.buttonDisabledClass);\n if (s.params.nextButton) $(s.params.nextButton).removeClass(s.params.buttonDisabledClass);\n \n // Scrollbar\n if (s.params.scrollbar && s.scrollbar) {\n if (s.scrollbar.track && s.scrollbar.track.length) s.scrollbar.track.removeAttr('style');\n if (s.scrollbar.drag && s.scrollbar.drag.length) s.scrollbar.drag.removeAttr('style');\n }\n };\n \n // Destroy\n s.destroy = function (deleteInstance, cleanupStyles) {\n // Detach evebts\n s.detachEvents();\n // Stop autoplay\n s.stopAutoplay();\n // Destroy loop\n if (s.params.loop) {\n s.destroyLoop();\n }\n // Cleanup styles\n if (cleanupStyles) {\n s.cleanupStyles();\n }\n // Disconnect observer\n s.disconnectObservers();\n // Disable keyboard/mousewheel\n if (s.params.keyboardControl) {\n if (s.disableKeyboardControl) s.disableKeyboardControl();\n }\n if (s.params.mousewheelControl) {\n if (s.disableMousewheelControl) s.disableMousewheelControl();\n }\n // Disable a11y\n if (s.params.a11y && s.a11y) s.a11y.destroy();\n // Destroy callback\n s.emit('onDestroy');\n // Delete instance\n if (deleteInstance !== false) s = null;\n };\n \n s.init();\n \n\n \n // Return swiper instance\n return s;\n };\n \n\n /*==================================================\n Prototype\n ====================================================*/\n Swiper.prototype = {\n isSafari: (function () {\n var ua = navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n })(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent),\n isArray: function (arr) {\n return Object.prototype.toString.apply(arr) === '[object Array]';\n },\n /*==================================================\n Browser\n ====================================================*/\n browser: {\n ie: window.navigator.pointerEnabled || window.navigator.msPointerEnabled,\n ieTouch: (window.navigator.msPointerEnabled && window.navigator.msMaxTouchPoints > 1) || (window.navigator.pointerEnabled && window.navigator.maxTouchPoints > 1),\n },\n /*==================================================\n Devices\n ====================================================*/\n device: (function () {\n var ua = navigator.userAgent;\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/);\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS)\\s([\\d_]+)/);\n return {\n ios: ipad || iphone || ipad,\n android: android\n };\n })(),\n /*==================================================\n Feature Detection\n ====================================================*/\n support: {\n touch : (window.Modernizr && Modernizr.touch === true) || (function () {\n return !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch);\n })(),\n \n transforms3d : (window.Modernizr && Modernizr.csstransforms3d === true) || (function () {\n var div = document.createElement('div').style;\n return ('webkitPerspective' in div || 'MozPerspective' in div || 'OPerspective' in div || 'MsPerspective' in div || 'perspective' in div);\n })(),\n \n flexbox: (function () {\n var div = document.createElement('div').style;\n var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');\n for (var i = 0; i < styles.length; i++) {\n if (styles[i] in div) return true;\n }\n })(),\n \n observer: (function () {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n })()\n },\n /*==================================================\n Plugins\n ====================================================*/\n plugins: {}\n };\n \n\n /*===========================\n Dom7 Library\n ===========================*/\n var Dom7 = (function () {\n var Dom7 = function (arr) {\n var _this = this, i = 0;\n // Create array-like object\n for (i = 0; i < arr.length; i++) {\n _this[i] = arr[i];\n }\n _this.length = arr.length;\n // Return collection with methods\n return this;\n };\n var $ = function (selector, context) {\n var arr = [], i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n var els, tempParent, html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf('