{"version":3,"sources":["webpack:///webpack/bootstrap e0592bba9aec2e209f47","webpack:///external \"jQuery\"","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/ssr-window/ssr-window.esm.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/dom.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/utils.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/effect-init.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/effect-target.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/effect-virtual-transition-end.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/create-shadow.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/fizzy-ui-utils/utils.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/create-element-if-not-defined.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/flickity.js","webpack:///./scripts/util/helper.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/get-support.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/transition/transitionEmit.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/classes-to-selector.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/ev-emitter/ev-emitter.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/get-size/get-size.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/swiper.esm.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/core.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/dom7/dom7.esm.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/get-device.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/get-browser.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/modules/resize/resize.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/modules/observer/observer.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events-emitter.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateSize.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateSlides.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateAutoHeight.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateSlidesOffset.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateSlidesProgress.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateProgress.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateSlidesClasses.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateActiveIndex.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateClickedSlide.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/getTranslate.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/setTranslate.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/minTranslate.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/maxTranslate.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/translateTo.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/transition/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/transition/setTransition.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/transition/transitionStart.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/transition/transitionEnd.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideTo.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideToLoop.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideNext.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slidePrev.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideReset.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideToClosest.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideToClickedSlide.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/loop/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/loop/loopCreate.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/loop/loopFix.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/loop/loopDestroy.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/grab-cursor/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onTouchStart.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onTouchMove.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onTouchEnd.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onResize.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onClick.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onScroll.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/breakpoints/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/classes/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/classes/addClasses.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/classes/removeClasses.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/images/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/images/loadImage.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/images/preloadImages.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/check-overflow/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/defaults.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/moduleExtendParams.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/virtual/virtual.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/keyboard/keyboard.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/mousewheel/mousewheel.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/navigation/navigation.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/pagination/pagination.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/scrollbar/scrollbar.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/parallax/parallax.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/zoom/zoom.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/lazy/lazy.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/controller/controller.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/a11y/a11y.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/history/history.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/hash-navigation/hash-navigation.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/autoplay/autoplay.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/thumbs/thumbs.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/free-mode/free-mode.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/grid/grid.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/manipulation.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/methods/appendSlide.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/methods/prependSlide.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/methods/addSlide.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/methods/removeSlide.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/methods/removeAllSlides.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-fade/effect-fade.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-cube/effect-cube.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-flip/effect-flip.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-coverflow/effect-coverflow.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-creative/effect-creative.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-cards/effect-cards.js","webpack:///./scripts/util/autoPadding.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/unipointer/unipointer.js","webpack:///./scripts/components/alert.js","webpack:///./scripts/main.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/dist/flickity.pkgd.js","webpack:///./scripts/vendor/jquery.overlayScrollbars.js","webpack:///./scripts/vendor/jquery.txtTruncate.js","webpack:///./scripts/autoload/_bootstrap.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/bootstrap/dist/js/bootstrap.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/popper.js/dist/esm/popper.js","webpack:///(webpack)/buildin/global.js","webpack:///./scripts/util/Router.js","webpack:///./scripts/util/camelCase.js","webpack:///./scripts/routes/common.js","webpack:///./scripts/components/flexible-video.js","webpack:///./scripts/routes/home.js","webpack:///./scripts/routes/about.js","webpack:///./scripts/components/sliders/index.js","webpack:///./scripts/components/sliders/category-slider.js","webpack:///./scripts/components/sliders/product-slider.js","webpack:///./scripts/components/sliders/feature-slider.js","webpack:///./scripts/components/sliders/article-slider.js","webpack:///./scripts/components/sliders/trustbar-slider.js","webpack:///./scripts/components/sliders/quote.js","webpack:///./scripts/vendor/jquery.rateyo.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/vanilla-lazyload/dist/lazyload.min.js","webpack:///./scripts/util/plusItem.js","webpack:///./scripts/util/crossPlatform.js","webpack:///./scripts/util/ellipsis.js","webpack:///./scripts/util/backgroundSwitcher.js","webpack:///./scripts/util/articleFilter.js","webpack:///./scripts/util/lateRender.js","webpack:///./scripts/components/nav.js","webpack:///./scripts/components/headroom.js","webpack:///./scripts/vendor/headroom.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/desandro-matches-selector/matches-selector.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/cell.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/slide.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/animate.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/drag.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/unidragger/unidragger.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/prev-next-button.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/page-dots.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/player.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/add-remove-cell.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/lazyload.js","webpack:///./scripts/components/filter.js","webpack:///./scripts/components/dropdown.js","webpack:///./scripts/components/picker.js","webpack:///./scripts/components/resellers.js","webpack:///./scripts/components/video.js","webpack:///./scripts/components/listing.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/jquery-bridget/jquery-bridget.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/masonry-layout/masonry.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/outlayer/outlayer.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/outlayer/item.js","webpack:///./scripts/components/instagram.js","webpack:///./scripts/components/newsletter.js","webpack:///./scripts/util/Rule.js","webpack:///./scripts/components/category.js","webpack:///./scripts/components/product-selected.js","webpack:///./scripts/components/product.js","webpack:///./scripts/components/cart.js","webpack:///./scripts/components/search.js","webpack:///./scripts/components/checkout.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/sticky-sidebar/dist/sticky-sidebar.js","webpack:///./scripts/components/scroll.js","webpack:///./scripts/components/backgroundSwitch.js","webpack:///./scripts/components/articles.js","webpack:///./scripts/components/forms.js","webpack:///./scripts/components/tripleMedia.js","webpack:///./scripts/components/bottomBar.js","webpack:///./scripts/components/splashScreen.js","webpack:///./styles/main.scss?c0e8"],"names":["const","let","this","arguments"],"mappings":";AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;AC7DA,wB;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,UAAU;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,YAAY;AACZ,wBAAwB,EAAE;AAC1B,2BAA2B,EAAE;AAC7B;AACA,gBAAgB,EAAE;AAClB;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,yBAAyB,EAAE;AAC3B;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,qBAAqB;AACrB,4BAA4B,EAAE;AAC9B;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,wBAAwB,EAAE;AAC1B,qBAAqB,EAAE;AACvB,cAAc,EAAE;AAChB,gBAAgB,EAAE;AAClB,KAAK;AACL;AACA;AACA,KAAK;AACL,wBAAwB,EAAE;AAC1B,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL,aAAa,EAAE;AACf,YAAY,EAAE;AACd,cAAc;AACd,kBAAkB,EAAE;AACpB,oBAAoB,EAAE;AACtB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEkE;;;;;;;;ACnJlE;AAAyU;AACzU;AACA,EAAE,gEAAQ;AACV,EAAE,sEAAW;AACb,EAAE,gEAAQ;AACV,EAAE,sEAAW;AACb,EAAE,wDAAI;AACN,EAAE,oEAAU;AACZ,EAAE,kEAAS;AACX,EAAE,oEAAU;AACZ,EAAE,oDAAE;AACJ,EAAE,sDAAG;AACL,EAAE,8DAAO;AACT,EAAE,0EAAa;AACf,EAAE,oEAAU;AACZ,EAAE,sEAAW;AACb,EAAE,4DAAM;AACR,EAAE,4DAAM;AACR,EAAE,sDAAG;AACL,EAAE,wDAAI;AACN,EAAE,wDAAI;AACN,EAAE,wDAAI;AACN,EAAE,oDAAE;AACJ,EAAE,0DAAK;AACP,EAAE,oDAAE;AACJ,EAAE,4DAAM;AACR,EAAE,8DAAO;AACT,EAAE,wDAAI;AACN,EAAE,8DAAO;AACT,EAAE,wDAAI;AACN,EAAE,8DAAO;AACT,EAAE,4DAAM;AACR,EAAE,8DAAO;AACT,EAAE,8DAAO;AACT,EAAE,wDAAI;AACN,EAAE,gEAAQ;AACV,EAAE,4DAAM;AACR,EAAE,4DAAM;AACR;AACA;AACA,wBAAwB,+CAAC;AACzB;AACA;AACA,GAAG;AACH,CAAC;AACc,wGAAC,E;;;;;;;AC7ChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAuC;;AAEvC;AACA;AACA;AACA;AACA;AACA,KAAK,YAAY;AACjB;;AAEA;AACA;AACA,KAAK,YAAY;AACjB;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,qEAAS;AAC1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qEAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK,4DAA4D;AACjE;;;AAGA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,mEAAmE;AACnE,yEAAyE;AACzE;AACA;;AAEA;AACA;AACA,mEAAmE;AACnE,yEAAyE;AACzE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;;AAEA;AACA;;AAEA,qDAAqD,iBAAiB;AACtE;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,qEAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;AClMA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,8BAA8B,qCAAqC,EAAE,OAAO;;AAE5E;AACA,gCAAgC,qCAAqC;AACrE;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AC9BA;AAAe;AACf;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,C;;;;;;;ACTA;AAAe;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,0BAA0B;AAC/C;AACA;AACA,KAAK;AACL;AACA,C;;;;;;;AClCA;AAAA;AAAyB;AACV;AACf,4CAA4C,WAAW,KAAK,OAAO;AACnE;AACA,gDAAgD,YAAY;;AAE5D;AACA,gBAAgB,gEAAC,mCAAmC,WAAW,KAAK,OAAO;AAC3E;AACA;;AAEA;AACA,C;;;;;;ACZA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,wBAA4C;AAClD,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uBAAuB;AACzC;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,GAAG;AACH;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;;AChPD;AAAA;AAAyC;AAC1B;AACf,mBAAmB,uEAAW;;AAE9B;AACA;AACA;AACA,8CAA8C,gBAAgB;;AAE9D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,C;;;;;;ACtBA;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,uBAAuB;AAC7B,MAAM,uBAAmB;AACzB,MAAM,sBAAsB;AAC5B,MAAM,wBAAQ;AACd,MAAM,wBAAS;AACf,MAAM,wBAAW;AACjB,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iCAAiC;AACjC,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,iCAAiC;AAC5C,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,cAAc;AAC3B;AACA;AACA;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC,wBAAwB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,oCAAoC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AAC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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;AC/GD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,oCAAQ,OAAO;AAAA;AAAA;AAAA;AAAA,oGAAE;AACrB,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;AC9MD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAE4D;AACM;AACG;AACM;AACA;AACA;AACH;AACH;AACZ;AACA;AACkB;AAClB;AACS;AACuB;AACpB;AACN;AACQ;AACd;AACwB;AACJ;AACA;AACA;AACe;AACH;;;;;;;;ACnCzF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACyC;AACR;AAC6B;AACR;AACF;AACE;AACN;AACM;AACN;AACT;AACM;AACE;AACV;AACF;AACa;AACT;AACU;AACR;AACF;AACe;AACjB;AACoB;AACzD;AACA,EAAE,kFAAa;AACf,EAAE,yEAAM;AACR,EAAE,gFAAS;AACX,EAAE,kFAAU;AACZ,EAAE,wEAAK;AACP,EAAE,sEAAI;AACN,EAAE,mFAAU;AACZ,EAAE,0EAAM;AACR,EAAE,oFAAW;AACb,EAAE,yFAAa;AACf,EAAE,4EAAO;AACT,EAAE,0EAAM;AACR;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,aAAa,wEAAM,GAAG;AACtB;;AAEA,qBAAqB,uEAAC;AACtB;AACA,MAAM,uEAAC;AACP,0BAA0B,wEAAM,GAAG;AACnC;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA,KAAK;;;AAGL;AACA;AACA,qBAAqB,kFAAU;AAC/B,oBAAoB,gFAAS;AAC7B;AACA,KAAK;AACL,qBAAqB,kFAAU;AAC/B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,gFAAkB;AACxC;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK,EAAE;;AAEP,yBAAyB,wEAAM,GAAG,EAAE,8DAAQ,oBAAoB;;AAEhE,oBAAoB,wEAAM,GAAG;AAC7B,4BAA4B,wEAAM,GAAG;AACrC,0BAA0B,wEAAM,GAAG,UAAU;;AAE7C;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,KAAK;;;AAGL,eAAe,+DAAC,CAAC;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uEAAC;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qEAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL,2BAA2B;;AAE3B;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA,mCAAmC,mBAAmB;AACtD;AACA;AACA;AACA;AACA;AACA;;AAEA,mCAAmC,QAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,qCAAqC,mBAAmB;AACxD;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,qCAAqC,QAAQ;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,UAAU;;AAEf;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,8BAA8B,qCAAqC,EAAE,iBAAiB,eAAe,qCAAqC,EAAE,aAAa;AACzJ;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC;;AAEpC,gBAAgB,uEAAC;AACjB;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,iBAAiB,+DAA+D;AAChF;;AAEA;AACA;AACA,oBAAoB,uEAAC,oDAAoD;;AAEzE;;AAEA;AACA;;AAEA;AACA,MAAM;;;AAGN;;AAEA;AACA,uBAAuB,uEAAW;AAClC;AACA,mBAAmB,uEAAC;AACpB;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA,KAAK;;;AAGL,wBAAwB;;AAExB;AACA;AACA,KAAK;;;AAGL,wBAAwB;;AAExB;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;AACL;AACA,KAAK;;;AAGL,0BAA0B;;AAE1B,8BAA8B;;AAE9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,iCAAiC;;AAEjC,+BAA+B;;AAE/B,0BAA0B;;AAE1B;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B;;AAE3B;AACA;AACA,KAAK;;AAEL;AACA;AACA,MAAM,6EAAW;AACjB;;AAEA;AACA;AACA;;AAEA;AACA,IAAI,wEAAM;AACV;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,8DAAQ;AACnB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD,YAAY,0EAAM,EAAE,8EAAQ;AACb,+DAAM,E;;;;;;;ACjmBrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACoD;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,gBAAgB;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,gBAAgB;AACjC;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qEAAS;AAC1B,mBAAmB,uEAAW;AAC9B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,kCAAkC;AACvD;AACA;AACA,KAAK;AACL;AACA,KAAK;;AAEL,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,iBAAiB;AAClC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA,4CAA4C,IAAI;;AAEhD;AACA;AACA;;AAEA;AACA,GAAG;;;AAGH,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,iBAAiB;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA,GAAG;AACH,mBAAmB,0BAA0B;AAC7C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,uDAAuD,sDAAsD;AAC7G;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,+BAA+B;AACpD;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;;AAGH,iBAAiB,iBAAiB;AAClC;;AAEA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,iBAAiB;AAClC;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,iBAAiB;AAClC,yEAAyE,SAAS;AAClF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wEAAwE;AACxE,0CAA0C;;AAE1C,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;;AAEA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,yCAAyC,QAAQ;AACjD;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,qEAAS;AAC1B;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;;AAEA,mBAAmB,iBAAiB;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qEAAS;;AAE1B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qEAAS;;AAE1B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,qEAAS;AAC5B,qBAAqB,uEAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,iBAAiB;AAClC;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qEAAS;;AAE1B,iBAAiB,iBAAiB;AAClC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qEAAS;AAC1B;AACA;AACA;;AAEA;AACA,iBAAiB,qEAAS;AAC1B;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,eAAe,iBAAiB;AAChC,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qEAAS;AAC1B,mBAAmB,uEAAW;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,eAAe,wBAAwB;AACvC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,eAAe,wBAAwB;AACvC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,uEAAW;;AAE9B,iBAAiB,gBAAgB;AACjC;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,uBAAuB,qBAAqB;AAC5C;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,uEAAW;AAC9B;AACA;;AAEA,aAAa,iBAAiB;AAC9B;AACA;AACA;;AAEA,6CAA6C,QAAQ;AACrD;AACA;AACA,KAAK;AACL,iBAAiB,qBAAqB;AACtC;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA,KAAK;AACL,qBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA,KAAK;AACL,qBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC;;AAEvC;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C;;AAE3C;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB;;AAErB,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB;;AAErB,iBAAiB,iBAAiB;AAClC,oCAAoC;;AAEpC;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB;;AAErB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;;AAEA,mBAAmB,kBAAkB;AACrC;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAsB;;AAEtB,iBAAiB,iBAAiB;AAClC;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,iBAAiB;AAClC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,aAAa,gBAAgB;AAC7B;;AAEA,eAAe,kBAAkB;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,iBAAiB;AAClC;;AAEA;AACA,qBAAqB,0BAA0B;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,iBAAiB,qEAAS;AAC1B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB,mBAAmB;;AAEnB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,iBAAiB,qEAAS;AAC1B;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX,SAAS;AACT,yBAAyB;;AAEzB;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,2EAAC,EAAC;AACotB;;;;;;;;ACr8CruB;AAAA;AAAA;AAAuC;AACO;AAC9C;;AAEA;AACA;AACA,CAAC,KAAK;AACN,kBAAkB,2EAAU;AAC5B,iBAAiB,qEAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oBAAoB;;AAE1D;AACA;AACA;AACA;AACA,sCAAsC;;AAEtC;;AAEA,gEAAgE,YAAY,GAAG,aAAa;AAC5F;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA,iCAAiC;AACjC;AACA;AACA;;AAEA;AACA;;;;;;;;;ACtDA;AAAA;AAAuC;AACvC;;AAEA;AACA,iBAAiB,qEAAS;;AAE1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;ACvBA;AAAA;AAAuC;AACxB;AACf;AACA;AACA;AACA,CAAC;AACD,iBAAiB,qEAAS;AAC1B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACnEA;AAAA;AAAuC;AACxB;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,iBAAiB,qEAAS;;AAE1B,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,qBAAqB,6BAA6B;AAClD;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,C;;;;;;;AC1EA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;;AAEA,CAAC,E;;;;;;;AC3GD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAyC;AACI;AACQ;AACI;AACI;AACZ;AACU;AACJ;AACE;AAC1C;AACf,EAAE,2EAAU;AACZ,EAAE,+EAAY;AACd,EAAE,uFAAgB;AAClB,EAAE,2FAAkB;AACpB,EAAE,+FAAoB;AACtB,EAAE,mFAAc;AAChB,EAAE,6FAAmB;AACrB,EAAE,yFAAiB;AACnB,EAAE,2FAAkB;AACpB,CAAC,E;;;;;;;ACnBD;AAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AChCA;AAAA;AAAuD;AACxC;AACf;;AAEA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,yCAAyC,yBAAyB;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;AACA;AACA,GAAG,EAAE;AACL;AACA;AACA;AACA,GAAG,EAAE;;AAEL;AACA,IAAI,gFAAc;AAClB,IAAI,gFAAc;AAClB;;AAEA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA,GAAG;;AAEH,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;;AAEA,kDAAkD;;AAElD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA,yDAAyD,UAAU;AACnE;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,gBAAgB,yCAAyC;AACzD,KAAK;AACL;;AAEA;AACA;AACA,uCAAuC,yCAAyC;AAChF,KAAK;AACL;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA,mBAAmB,qBAAqB;AACxC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL,gBAAgB,aAAa;AAC7B,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,IAAI,gFAAc,yDAAyD,aAAa;AACxF,IAAI,gFAAc,wDAAwD,kEAAkE;AAC5I;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,C;;;;;;;ACpTA;AAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,iBAAiB,4CAA4C;AAC7D;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;;;AAGH,aAAa,yBAAyB;AACtC;AACA;AACA;AACA;AACA,GAAG;;;AAGH,oDAAoD,UAAU;AAC9D,C;;;;;;;AChDA;AAAe;AACf;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;AACA,C;;;;;;;ACPA;AAAA;AAAoC;AACrB;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yBAAyB,uEAAC;AAC1B,C;;;;;;;AC3CA;AAAe;AACf;;AAEA;AACA,oDAAoD;;AAEpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,C;;;;;;;ACjDA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,wBAAwB,GAAG,sBAAsB,GAAG,sBAAsB,GAAG,iCAAiC,GAAG,+BAA+B,GAAG,+BAA+B;AAC1M;;AAEA;AACA,6CAA6C,kBAAkB,4BAA4B,YAAY;AACvG,GAAG;AACH;AACA,GAAG;;;AAGH;;AAEA;AACA;AACA;AACA,8BAA8B,kBAAkB,QAAQ,2BAA2B,6BAA6B,UAAU;AAC1H,KAAK;AACL,8BAA8B,kBAAkB,GAAG,2BAA2B,4BAA4B,UAAU;AACpH;AACA,GAAG;;;AAGH,0CAA0C,kBAAkB;;AAE5D;AACA;AACA;AACA,GAAG;;;AAGH,0CAA0C,kBAAkB;;AAE5D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,kBAAkB,QAAQ,2BAA2B,6BAA6B,0CAA0C;AAC1J,KAAK;AACL,8BAA8B,kBAAkB,GAAG,2BAA2B,4BAA4B,0CAA0C;AACpJ;;AAEA;AACA,8BAA8B,kBAAkB,QAAQ,2BAA2B,6BAA6B,0CAA0C;AAC1J,KAAK;AACL,8BAA8B,kBAAkB,GAAG,2BAA2B,4BAA4B,0CAA0C;AACpJ;AACA;;AAEA;AACA,C;;;;;;;AC/DA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,C;;;;;;;ACrEA;AAAA;AAAoC;AACrB;AACf;AACA;AACA,gBAAgB,uEAAC,uBAAuB,kBAAkB;AAC1D;AACA;;AAEA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qCAAqC,uEAAC;AACtC,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,C;;;;;;;ACnCA;AAAA;AAAA;AAAA;AAAA;AAA6C;AACA;AACA;AACA;AACF;AAC5B;AACf,EAAE,+EAAY;AACd,EAAE,+EAAY;AACd,EAAE,+EAAY;AACd,EAAE,+EAAY;AACd,EAAE,6EAAW;AACb,CAAC,E;;;;;;;ACXD;AAAA;AAAqD;AACtC;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yBAAyB,8EAAY;AACrC;AACA;AACA,C;;;;;;;ACrBA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,wCAAwC,EAAE,MAAM,EAAE,MAAM,EAAE;AAC1D;;AAEA;AACA,mDAAmD;;AAEnD;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA,C;;;;;;;AC/CA;AAAe;AACf;AACA,C;;;;;;;ACFA;AAAe;AACf;AACA,C;;;;;;;ACFA;AAAA;AAA6D;AAC9C;AACf;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA,+EAA+E,kFAAkF,8BAA8B;;AAE/L;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,QAAQ,sFAAoB;AAC5B;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,C;;;;;;;ACpFA;AAAA;AAAA;AAA+C;AACI;AACJ;AAChC;AACf,EAAE,iFAAa;AACf,EAAE,qFAAe;AACjB,EAAE,iFAAa;AACf,CAAC,E;;;;;;;ACPD;AAAe;AACf;;AAEA;AACA;AACA;;AAEA;AACA,C;;;;;;;ACRA;AAAA;AAAiD;AAClC;AACf;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA,EAAE,2EAAc;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AClBA;AAAA;AAAiD;AAClC;AACf;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE,2EAAc;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACfA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAmC;AACQ;AACJ;AACA;AACE;AACQ;AACU;AAC5C;AACf,EAAE,qEAAO;AACT,EAAE,6EAAW;AACb,EAAE,yEAAS;AACX,EAAE,yEAAS;AACX,EAAE,2EAAU;AACZ,EAAE,mFAAc;AAChB,EAAE,6FAAmB;AACrB,CAAC,E;;;;;;;ACfD;AAAA;AAA6D;AAC9C;AACf;AACA,+FAA+F,aAAa;AAC5G;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;;AAEA;AACA,4FAA4F,MAAM;AAClG,KAAK;AACL;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yCAAyC;;AAEzC,mCAAmC;;AAEnC;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mDAAmD,sDAAsD,yBAAyB;;AAElI;AACA,yCAAyC;;AAEzC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,QAAQ,sFAAoB;AAC5B;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,C;;;;;;;AC5LA;AAAe;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA,C;;;;;;;ACTA;AAAA;AACe;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB;;AAErB;AACA;;AAEA;AACA,C;;;;;;;ACzBA;AAAA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,qBAAqB;;AAErB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,C;;;;;;;AC1DA;AAAA;AACe;AACf;AACA;AACA,C;;;;;;;ACJA;AAAA;AACe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,C;;;;;;;AC/BA;AAAA;AAAA;AAAoC;AACa;AAClC;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,uEAAC;;AAE1B;AACA;AACA;AACA,+CAA+C,kBAAkB,4BAA4B,UAAU,UAAU,2BAA2B;AAC5I,QAAQ,0EAAQ;AAChB;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA,6CAA6C,kBAAkB,4BAA4B,UAAU,UAAU,2BAA2B;AAC1I,MAAM,0EAAQ;AACd;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA,C;;;;;;;ACtCA;AAAA;AAAA;AAAyC;AACN;AACQ;AAC5B;AACf,EAAE,2EAAU;AACZ,EAAE,qEAAO;AACT,EAAE,6EAAW;AACb,CAAC,E;;;;;;;ACPD;AAAA;AAAA;AAAyC;AACL;AACrB;AACf;AACA,mBAAmB,uEAAW;AAC9B;AACA;AACA;AACA,GAAG,UAAU;;AAEb,oBAAoB,uEAAC;AACrB,yBAAyB,kBAAkB,GAAG,2BAA2B;AACzE,sCAAsC,kBAAkB;;AAExD;AACA;;AAEA;AACA,qBAAqB,oBAAoB;AACzC,0BAA0B,uEAAC,4CAA4C,kBAAkB,GAAG,uBAAuB;AACnH;AACA;;AAEA,sCAAsC,kBAAkB;AACxD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,uEAAC;;AAEnB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH,iBAAiB,yBAAyB;AAC1C,qBAAqB,uEAAC;AACtB;;AAEA,wCAAwC,QAAQ;AAChD,sBAAsB,uEAAC;AACvB;AACA,C;;;;;;;AC1DA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,qDAAqD;;AAErD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,C;;;;;;;ACxCA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,0BAA0B,kBAAkB,GAAG,2BAA2B,IAAI,kBAAkB,GAAG,uBAAuB;AAC1H;AACA,C;;;;;;;ACTA;AAAA;AAA+C;AACI;AACpC;AACf,EAAE,iFAAa;AACf,EAAE,qFAAe;AACjB,CAAC,E;;;;;;;ACLD;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;ACRA;AAAe;AACf;;AAEA;AACA;AACA;;AAEA;AACA,C;;;;;;;ACRA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAyC;AACI;AACF;AACF;AACJ;AACF;AACE;AACrC;;AAEA;;AAEA;AACA,mBAAmB,uEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA,6HAA6H,6DAAQ;AACrI,GAAG;AACH,2CAA2C,6DAAQ;AACnD;AACA;;AAEA;AACA;AACA,mBAAmB,uEAAW;AAC9B;AACA;AACA;AACA,GAAG;AACH,wBAAwB,iEAAY;AACpC,uBAAuB,gEAAW;AAClC,sBAAsB,+DAAU;;AAEhC;AACA,sBAAsB,6DAAQ;AAC9B;;AAEA,mBAAmB,4DAAO;;AAE1B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA,CAAC,E;;;;;;;AChGD;AAAA;AAAA;AAAA;AAAoD;AAChB;AACQ;;AAE5C;AACA;AACA,sBAAsB,uEAAW,aAAa,qEAAS;AACvD;AACA;AACA;AACA;;AAEA;AACA;;AAEe;AACf;AACA,mBAAmB,uEAAW;AAC9B,iBAAiB,qEAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,uEAAC;;AAEnB;AACA;AACA;;AAEA;AACA;AACA;AACA,6CAA6C;;AAE7C;;AAEA;AACA,gBAAgB,uEAAC;AACjB;;AAEA,sFAAsF,sBAAsB;AAC5G,6DAA6D;;AAE7D;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,wBAAwB,qEAAG;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kCAAkC,uEAAC;AACnC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,C;;;;;;;ACjHA;AAAA;AAAA;AAAA;AAAyC;AACL;AACQ;AAC7B;AACf,mBAAmB,uEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,4BAA4B,qEAAG;AAC/B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,+CAA+C,uEAAC;AAChD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,qDAAqD;;AAErD;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH,+CAA+C;;AAE/C;AACA,C;;;;;;;AC7NA;AAAA;AAAsD;AACvC;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;;;AAGH,uBAAuB,qEAAG;AAC1B,sDAAsD;;AAEtD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uBAAuB,qEAAG;AAC1B,EAAE,0EAAQ;AACV;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;;AAGH;AACA;;AAEA,iBAAiB,uBAAuB;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iFAAiF;AACjF;;AAEA;AACA,oFAAoF;AACpF;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA,C;;;;;;;AC9IA;AAAe;AACf;AACA;AACA;AACA;AACA,GAAG;AACH,yCAAyC;;AAEzC;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA,GAAG,UAAU;;AAEb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA;AACA,C;;;;;;;AC1CA;AAAe;AACf;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;ACZA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA,C;;;;;;;AClCA;AAAA;AAA+C;AACA;AAChC;AACf,EAAE,iFAAa;AACf,EAAE,iFAAa;AACf,CAAC,E;;;;;;;ACLD;AAAA;AAA+C;;AAE/C;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,mFAAmF;;AAEnF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,8BAA8B,OAAO,8BAA8B;AAC1F;AACA,GAAG;AACH,oBAAoB,8BAA8B;;AAElD;AACA,sBAAsB,8BAA8B;AACpD;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE,wEAAM;AACR;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,C;;;;;;;ACvEA;AAAA;AAAuC;AACxB;AACf;AACA;AACA,iBAAiB,qEAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA,KAAK;;AAEL;AACA,2CAA2C,MAAM;AACjD;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,C;;;;;;;ACvCA;AAAA;AAAyC;AACM;AAChC;AACf,EAAE,2EAAU;AACZ,EAAE,iFAAa;AACf,CAAC,E;;;;;;;ACLD;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,UAAU;;AAEb;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,C;;;;;;;ACnDA;AAAe;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,C;;;;;;;ACRA;AAAA;AAAuC;AACQ;AAChC;AACf,EAAE,yEAAS;AACX,EAAE,iFAAa;AACf,CAAC,E;;;;;;;ACLD;AAAA;AAAA;AAAuC;AACH;AACrB;AACf,iBAAiB,qEAAS;AAC1B;;AAEA;AACA;AACA;;AAEA,oBAAoB,uEAAC;;AAErB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,C;;;;;;;ACpCA;AAAe;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,gCAAgC;AACjD;AACA;AACA;AACA,C;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC,E;;;;;;;ACrCc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,E;;;;;;;ACvHD;AAAA;AAA4C;AAC7B;AACf,uCAAuC;AACvC;AACA;;AAEA;AACA,MAAM,wEAAM;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,wEAAM;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,wEAAM;AACV;AACA,C;;;;;;;ACrCA;AAAA;AAAA;AAAoC;AACmB;AACxC;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,0CAA0C,uEAAC,kDAAkD,uEAAC,gBAAgB,yBAAyB,6BAA6B,MAAM,IAAI,MAAM;AACpL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,kDAAkD;AAClD;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,yCAAyC,OAAO;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,SAAS;AACrC;AACA;;AAEA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,iCAAiC,yBAAyB;AAC1D,KAAK;AACL,gCAAgC,iBAAiB;AACjD;AACA,qCAAqC,yBAAyB,4BAA4B,EAAE;AAC5F;AACA;AACA;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,mEAAmE,OAAO;AAC1E;AACA;;AAEA;AACA;AACA,qBAAqB,mBAAmB;AACxC;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,mBAAmB;AACxC;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C,QAAQ;AACpD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,qCAAqC;AACnE;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,MAAM,gFAAc,+CAA+C,mBAAmB;AACtF;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AClSA;AAAA;AAAA;AAAA;AACoD;AAChB;AACrB;AACf;AACA;AACA;AACA;AACA,CAAC;AACD,mBAAmB,uEAAW;AAC9B,iBAAiB,qEAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,6CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAyB;;AAEzB,iCAAiC,yBAAyB,wCAAwC,+BAA+B;AACjI;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,wBAAwB;AAC7C;;AAEA;AACA,yDAAyD;;AAEzD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iDAAiD;AACjD;;AAEA;AACA;AACA,KAAK;AACL;AACA,iDAAiD;AACjD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI,uEAAC;AACL;AACA;;AAEA;AACA;AACA,IAAI,uEAAC;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AClIA;AAAA;AAAA;AAAA;AAAA;AACuC;AACH;AACkB;AACvC;AACf;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,qEAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,uBAAuB,qEAAG;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA,eAAe;AACf;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kDAAkD,qEAAG;AACrD;AACA;AACA,KAAK;AACL;AACA;;;AAGA,+BAA+B,qEAAG;AAClC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;;AAGL,iDAAiD;;AAEjD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,eAAe,uEAAC;AAChB;;AAEA;AACA,6CAA6C;;AAE7C;AACA;AACA;;AAEA;AACA;AACA,4FAA4F;AAC5F,OAAO,8EAA8E;AACrF,KAAK;AACL;AACA;;AAEA;AACA,sCAAsC;;AAEtC;AACA;AACA,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,qEAAG;AACjB;AACA;AACA;AACA,QAAQ;;AAER;AACA,kCAAkC;AAClC;;AAEA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;;AAGA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,qEAAG;AACjB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC;AACtC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0EAAQ;AAC9B;AACA,aAAa,KAAK,aAAa;AAC/B;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,0EAAQ;AAC9B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;;;AAGT,kDAAkD;;AAElD,yGAAyG;;AAEzG;AACA;AACA;;AAEA,6CAA6C;AAC7C;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,uEAAC;AAChB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACraA;AAAA;AAAA;AAAsF;AAClD;AACrB;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,YAAY,uEAAC;;AAEb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B,iGAAyB;AACxD;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,iDAAiD,uEAAC,2BAA2B,uEAAC;AAC9E;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACxLA;AAAA;AAAA;AAAA;AAAoC;AACgC;AACkB;AACvE;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,IAAI;AAC1B,4BAA4B,IAAI;AAChC,wBAAwB,IAAI;AAC5B,uBAAuB,IAAI;AAC3B,qBAAqB,IAAI;AACzB,sBAAsB,IAAI;AAC1B,+BAA+B,IAAI;AACnC,mCAAmC,IAAI;AACvC,yBAAyB,IAAI;AAC7B,oBAAoB,IAAI;AACxB,0BAA0B,IAAI;AAC9B,wBAAwB,IAAI;AAC5B;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,sCAAsC,kBAAkB,GAAG,SAAS,2BAA2B,kBAAkB,GAAG,SAAS,GAAG,SAAS;AACzI;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;;AAEtC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+DAA+D,6CAA6C;;AAE5G;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uGAAuG,yBAAyB,EAAE,OAAO;;AAEzI;AACA;AACA,0BAA0B,uEAAC;AAC3B;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kCAAkC,gBAAgB;AAClD,sCAAsC,yBAAyB;AAC/D;;AAEA;AACA;AACA,qDAAqD,QAAQ;AAC7D,2DAA2D,yBAAyB;AACpF;;AAEA,qFAAqF,yBAAyB;AAC9G,aAAa;AACb;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mEAAmE,cAAc;AACjF;AACA;;AAEA;AACA,eAAe,uFAAiB;AAChC,eAAe,uFAAiB;AAChC;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA,eAAe,uFAAiB,sEAAsE,OAAO,WAAW,OAAO;AAC/H;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,qBAAqB;AAC1C;AACA;AACA,SAAS;AACT,gCAAgC,qBAAqB,UAAU,mBAAmB,MAAM,qBAAqB;AAC7G;AACA;;AAEA;AACA,2CAA2C,uFAAiB;AAC5D;;AAEA;AACA;AACA;AACA,OAAO;AACP,yCAAyC,oBAAoB,qCAAqC,kBAAkB;AACpH;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,yCAAyC,4BAA4B;AACrE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,iGAAyB;AACxD;AACA,KAAK;AACL;AACA;AACA,cAAc,uEAAC;AACf;;AAEA;AACA,uCAAuC;;AAEvC;AACA;AACA,cAAc,uEAAC;AACf;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAsB,qBAAqB,EAAE,YAAY;AACzD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sBAAsB,uFAAiB;AACvC;AACA,oBAAoB,uEAAC;AACrB;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,uFAAiB;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;;AAEL,kGAAkG,uEAAC;AACnG;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACzZA;AAAA;AAAA;AAAA;AAAA;AAAyC;AACL;AACa;AACqC;AACvE;AACf;AACA;AACA;AACA;AACA,CAAC;AACD,mBAAmB,uEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,uCAAuC,OAAO;AAC9C,kCAAkC,QAAQ;AAC1C,KAAK;AACL,4CAA4C,OAAO;AACnD,mCAAmC,QAAQ;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C,KAAK;AACL,mCAAmC,SAAS;AAC5C;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,0EAAQ;AAC5B;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,8BAA8B,iGAAyB;AACvD;AACA,KAAK;AACL;AACA;AACA,cAAc,uEAAC;;AAEf;AACA;AACA;;AAEA,+BAA+B,kCAAkC;;AAEjE;AACA,gBAAgB,uEAAC,gBAAgB,kCAAkC;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACxWA;AAAA;AAAoC;AACrB;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,gBAAgB,uEAAC;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,aAAa,uCAAuC;AACpD,KAAK;AACL,aAAa,yBAAyB;AACtC;;AAEA;AACA,aAAa,2BAA2B;AACxC,KAAK;AACL,aAAa,aAAa;AAC1B;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,EAAE,IAAI,EAAE;AAC3C,KAAK;AACL;AACA,mCAAmC,EAAE,IAAI,EAAE,eAAe,aAAa;AACvE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAM,uEAAC;AACP;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,0BAA0B,uEAAC;AAC3B;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACjHA;AAAA;AAAA;AAAA;AAAuC;AACH;AACiB;AACtC;AACf;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,qEAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAyB,uEAAC,uBAAuB,yBAAyB;AAC1E;AACA,mDAAmD,sBAAsB;AACzE,yDAAyD,sBAAsB;AAC/E;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2DAA2D,WAAW;AACtE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2FAA2F,WAAW;AACtG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,8EAAY;AACjC,qBAAqB,8EAAY;AACjC;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,eAAe,MAAM,eAAe;AACtF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;;AAE5D;AACA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,eAAe,MAAM,eAAe;AACnH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,uEAAC,uBAAuB,yBAAyB;AAC5E;;AAEA;AACA;AACA,4DAA4D,+BAA+B;AAC3F,SAAS;AACT;AACA;AACA;;AAEA,mDAAmD,sBAAsB;AACzE,yDAAyD,sBAAsB;AAC/E;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,iCAAiC,wBAAwB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,kEAAkE,WAAW,MAAM,WAAW;AAC9F,2EAA2E,WAAW;AACtF;;AAEA;AACA;AACA;;AAEA;AACA;AACA,0DAA0D,+BAA+B;AACzF,OAAO;AACP;AACA;;AAEA,mDAAmD,sBAAsB;AACzE,yDAAyD,sBAAsB;AAC/E;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC,wBAAwB;AAC5D;AACA,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,yBAAyB;AACxC;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,6CAA6C;;AAE7C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;;AAGL,sDAAsD,kCAAkC;AACxF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,6CAA6C;;AAE7C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;;AAGL,uDAAuD,kCAAkC;AACzF;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACnmBA;AAAA;AAAA;AAAuC;AACH;AACrB;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gEAAgE,yBAAyB,4BAA4B,MAAM;AAC3H,sCAAsC,oBAAoB,QAAQ,mBAAmB,SAAS,oBAAoB;;AAElH;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,uEAAC;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAmD,WAAW;AAC9D;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,8BAA8B,uEAAC;;AAE/B;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,sBAAsB;;AAEhD;AACA;;AAEA;AACA,0FAA0F,mBAAmB,UAAU,kCAAkC;AACzJ;AACA,WAAW;AACX,mEAAmE,kCAAkC,4BAA4B,mBAAmB;AACpJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC,wBAAwB,4BAA4B,MAAM;AAC9F;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA,eAAe,uEAAC;AAChB;;AAEA,aAAa,uEAAC;AACd;;AAEA;;AAEA;AACA,8BAA8B,+BAA+B;AAC7D,kCAAkC,uEAAC,4CAA4C,uEAAC;AAChF;AACA,OAAO;AACP,KAAK;AACL,+BAA+B,iCAAiC;AAChE;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0EAA0E;;AAE1E,iDAAiD,cAAc;AAC/D;AACA,SAAS;;;AAGT,8BAA8B,iBAAiB;AAC/C;AACA;AACA,OAAO;AACP,kDAAkD,4BAA4B;AAC9E;AACA,kDAAkD,4BAA4B;AAC9E;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,qEAAS;AAC5B;AACA,iEAAiE,uEAAC,wCAAwC,uEAAC;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,mBAAmB,wBAAwB;AAC3C;;AAEA;AACA,uDAAuD;;AAEvD;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AC1RA;AAAA;AAAA,iCAAiC,kBAAkB;AACF;AAClC;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,kCAAkC;AAClC;AACA;;AAEA;AACA;;AAEA;AACA,wBAAwB;;AAExB;AACA,kBAAkB;AAClB;;AAEA;AACA;;AAEA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC;AAClC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU,0EAAQ;AAClB;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;;AAEA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AC9LA;AAAA;AAAA;AAAoE;AAChC;AACrB;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD,4BAA4B,OAAO,KAAK,cAAc;AACtD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,uEAAC;;AAEvB;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,0CAA0C,uFAAiB;AAC3D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,0BAA0B,uEAAC;AAC3B;;AAEA;AACA;AACA,0EAA0E,EAAE,OAAO,EAAE;AACrF;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;;AAElC;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA,iEAAiE,oBAAoB;AACrF;AACA;AACA,gCAAgC;;AAEhC;AACA,2BAA2B,uEAAC;AAC5B;;AAEA,cAAc,uEAAC;AACf;AACA;AACA,uBAAuB,uEAAC;AACxB;AACA,mEAAmE,EAAE,OAAO,EAAE,8BAA8B,EAAE,cAAc,EAAE;AAC9H;AACA,KAAK,EAAE;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA,0CAA0C,uFAAiB;AAC3D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA,2CAA2C,uFAAiB;AAC5D;AACA;;AAEA;AACA,iBAAiB,uEAAC,iBAAiB,qCAAqC;AACxE,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AC1RA;AAAA;AAAuC;AACxB;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB,qEAAS;AAC5B;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,qEAAS;AAC5B;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,KAAK,GAAG,IAAI,GAAG,MAAM;AACtC,KAAK;AACL,iBAAiB,IAAI,GAAG,MAAM;AAC9B;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,oDAAoD,YAAY;AAChE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,qEAAS;AAC5B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,qEAAS;;AAE5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACrJA;AAAA;AAAA;AAAoD;AAChB;AACrB;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,mBAAmB,uEAAW;AAC9B,iBAAiB,qEAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,sDAAsD,yBAAyB,cAAc,QAAQ;AACrG;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kDAAkD,uDAAuD;AACzG;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,oDAAoD,YAAY;AAChE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,uEAAC;AACP;AACA;;AAEA;AACA;AACA,MAAM,uEAAC;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AC/FA;AAAA;AAAA;AAAA;;AAEA;AACyC;AACQ;AAClC;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc,0EAAQ;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;;AAEA,kEAAkE;AAClE;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,qBAAqB,uEAAW;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,uEAAW;AAClC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,uEAAW;AAChC;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AC7NA;AAAA;AAAA;AAAiD;AACb;AACrB;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uEAAC;AACzB;AACA;;AAEA;AACA,8BAA8B,uEAAC;AAC/B,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA,yBAAyB;;AAEzB;AACA;AACA;;AAEA,4FAA4F,aAAa;AACzG,4FAA4F,aAAa;AACzG,qEAAqE,oEAAoE,uFAAuF;AAChO;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP,KAAK,UAAU,0EAAQ;AACvB,iDAAiD;AACjD;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA,SAAS;;;AAGT,gHAAgH,iBAAiB;AACjI,gHAAgH,iBAAiB;;AAEjI;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS,4FAA4F;AACrG;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,sBAAsB;AAC3C,sEAAsE,qBAAqB;AAC3F;AACA,KAAK;AACL,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AC3MA;AAAA;AAA4C;AAC7B;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK,UAAU;;AAEf;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,YAAY,qEAAG;AACf,KAAK;AACL;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,UAAU;;AAEf,yBAAyB,qEAAG;AAC5B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;;AAGA,0BAA0B,qEAAG;AAC7B;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,OAAO;AACP;;AAEA,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;;;AAGP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACpPA;AAAe;AACf;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK,sBAAsB;;AAE3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,8EAA8E,aAAa;AAC3F;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uCAAuC,kCAAkC;AACzE,KAAK;;AAEL;AACA;AACA;;AAEA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;ACnHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACE;AACR;AACM;AACQ;AAC5C;AACf;AACA,CAAC;AACD;AACA,iBAAiB,wEAAW;AAC5B,kBAAkB,yEAAY;AAC9B,cAAc,qEAAQ;AACtB,iBAAiB,wEAAW;AAC5B,qBAAqB,4EAAe;AACpC,GAAG;AACH,C;;;;;;;ACfA;AAAe;AACf;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,C;;;;;;;AC1BA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA,mBAAmB,mBAAmB;AACtC;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,C;;;;;;;ACjCA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,4CAA4C,kBAAkB;AAC9D;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8BAA8B,YAAY;AAC1C;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,mBAAmB;AACtC;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA,iBAAiB,yBAAyB;AAC1C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,C;;;;;;;AC/DA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,4CAA4C,kBAAkB;AAC9D;;AAEA;AACA;;AAEA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,C;;;;;;;AC9CA;AAAe;AACf;AACA;;AAEA,iBAAiB,0BAA0B;AAC3C;AACA;;AAEA;AACA,C;;;;;;;ACTA;AAAA;AAAA;AAAA;AAAqD;AACI;AAC8B;AACxE;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,iFAAY;AACpC;AACA;AACA,OAAO,2BAA2B,GAAG,MAAM,GAAG;AAC9C;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI,iGAA0B;AAC9B;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,EAAE,+EAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,C;;;;;;;ACrEA;AAAA;AAAA;AAAoC;AACiB;AACtC;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0BAA0B,uEAAC;AAC3B;AACA;;AAEA;AACA,qBAAqB,YAAY;AACjC,SAAS;AACT,OAAO;AACP;;AAEA;AACA,0BAA0B,uEAAC;AAC3B;AACA;AACA;AACA;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mCAAmC,+BAA+B,eAAe,8BAA8B,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG;;AAEvJ;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,uEAAC,oCAAoC,8BAA8B;AAC5F;AACA;;AAEA;AACA,wBAAwB,uEAAC,oCAAoC,kCAAkC;AAC/F;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C,eAAe;AAC7D,sCAAsC,eAAe;AACrD,KAAK;;AAEL;AACA;AACA,oDAAoD,sCAAsC,MAAM,iBAAiB,yCAAyC,mBAAmB;AAC7K,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,2CAA2C,OAAO,OAAO,OAAO,qBAAqB,0BAA0B,MAAM,2BAA2B;AAChJ;AACA;;AAEA;AACA,8CAA8C,QAAQ,cAAc,0CAA0C,eAAe,2CAA2C;AACxK;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA,EAAE,+EAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,C;;;;;;;ACnLA;AAAA;AAAA;AAAA;AAAA;AAAyD;AACJ;AACI;AAC8B;AACxE;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,iFAAY;AACrC;;AAEA;AACA,wBAAwB,iFAAY;AACpC;;AAEA;AACA;AACA;;AAEA,uCAAuC,GAAG,MAAM,GAAG,mBAAmB,QAAQ,eAAe,QAAQ;AACrG,wBAAwB,iFAAY;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI,iGAA0B;AAC9B;AACA;AACA;AACA,KAAK;AACL;;AAEA,EAAE,+EAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,C;;;;;;;ACrGA;AAAA;AAAA;AAAA;AAAyD;AACJ;AACI;AAC1C;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,mCAAmC;;AAEnC,2CAA2C,YAAY;AACvD;AACA;AACA;AACA;AACA;AACA,iEAAiE;;AAEjE;AACA,mCAAmC;;AAEnC;AACA;AACA;;AAEA;AACA;AACA,sEAAsE;;AAEtE;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,WAAW,KAAK,WAAW,KAAK,WAAW,eAAe,QAAQ,eAAe,QAAQ,aAAa,MAAM;AACxJ,wBAAwB,iFAAY;AACpC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,iFAAY;AACxC;;AAEA;AACA,2BAA2B,iFAAY;AACvC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,EAAE,+EAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,C;;;;;;;ACtGA;AAAA;AAAA;AAAA;AAAA;AAAyD;AACJ;AACI;AAC8B;AACxE;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,cAAc,MAAM;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,oDAAoD,OAAO;AAC3D;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;;;AAGP;AACA,2BAA2B,MAAM,QAAQ,yCAAyC,KAAK,gCAAgC;AACvH,OAAO,EAAE;;AAET;AACA;AACA,OAAO;AACP;AACA;AACA,sCAAsC,KAAK,eAAe,KAAK,eAAe,KAAK;AACnF,0DAA0D,qDAAqD,cAAc,qDAAqD;AAClL;AACA,uCAAuC,gBAAgB,IAAI,aAAa,GAAG,YAAY,EAAE;;AAEzF;AACA;;AAEA;AACA,sBAAsB,iFAAY;AAClC;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,iFAAY;AACpC;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI,iGAA0B;AAC9B;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,EAAE,+EAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,C;;;;;;;ACzJA;AAAA;AAAA;AAAA;AAAA;AAAyD;AACJ;AACI;AAC8B;AACxE;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;;AAEA;AACA,kDAAkD,sBAAsB;AACxE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uCAAuC;AACvD;;AAEA;AACA;AACA,qBAAqB,GAAG,QAAQ,2BAA2B;AAC3D,OAAO;AACP;AACA,qBAAqB,GAAG,SAAS,2BAA2B;AAC5D,OAAO;AACP,gBAAgB,GAAG;AACnB;;AAEA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,2BAA2B,OAAO,2BAA2B;AACzG;AACA,sBAAsB,GAAG,IAAI,GAAG,IAAI,GAAG;AACvC,kBAAkB,OAAO;AACzB,gBAAgB,YAAY;AAC5B;;AAEA;AACA;AACA;;AAEA;AACA,sBAAsB,iFAAY;AAClC;;AAEA;AACA;;AAEA;AACA,wBAAwB,iFAAY;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI,iGAA0B;AAC9B;AACA;AACA;AACA,KAAK;AACL;;AAEA,EAAE,+EAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,C;;;;;;AC5HA,kDAAC,CAAC,EAAE,CAAC,WAAW,GAAG,UAAU,SAAS,EAAE;EACtC,IAAI,OAAO,GAAG;MACV,MAAM,EAAE,IAAI;KACb;IACD,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;;EAEpB,IAAI,SAAS,EAAE,QAAM,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;;EAEjD,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;IACV,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI;GACpD,CAAC,CAAC;;EAEH,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY;IAC3B,OAAO,CAAC,GAAG,CAAC;MACV,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI;KACpD,CAAC,CAAC;GACJ,CAAC,CAAC;CACJ,CAAC;;;;;;;;ACjBF;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,uBAAuB;AAC7B,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,oBAAoB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;AC5SD;;;AAGA,IAAI,KAAK,GAAG,EAAE,CAAC;;AAEf,CAAC,WAAW,CAAC,GAAG;IACZ,IAAI,MAAM,GAAG,CAAC,EAAE,WAAW,EAAE;QACzB,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,iBAAiB,EAAE;QACxC,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,iBAAiB,EAAE;QACxC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,gBAAgB,EAAE;QACtC,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,kBAAkB,EAAE,CAAC;;IAE/C,KAAK,CAAC,IAAI,GAAG,WAAW,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG;QACxD,KAAK,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG;YACvB,OAAO;SACV;;QAED,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,GAAG;YAChD,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE;YAC3C,WAAW,GAAG,EAAE,CAAC;;QAErB,SAAS,IAAI;YACT,KAAK,SAAS;gBACV,UAAU,IAAI,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC;gBAC5C,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC;gBAC5C,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC;gBAC1C,MAAM;YACV,KAAK,SAAS;gBACV,UAAU,IAAI,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC;gBAC5C,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC;gBAC1C,MAAM;YACV,KAAK,QAAQ;gBACT,UAAU,IAAI,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC;gBAC3C,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;gBACzC,MAAM;YACV;gBACI,OAAO;SACd;;QAED,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;;QAEjC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;;QAElD,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;;QAEhD,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;;QAEpC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;KAC9B,CAAC;;IAEF,CAAC,EAAE,YAAY;QACX,KAAK,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG;YACvB,OAAO;SACV;;QAED,MAAM,CAAC,KAAK,EAAE,YAAY;YACtB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;SAC5B,EAAE,CAAC;KACP,EAAE;;CAEN,CAAC,EAAE,MAAM,EAAE,CAAC;;AAEb,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;;AAErB,MAAM,CAAC,OAAO,GAAG,KAAK,C;;;;;;;;;;;;;;;;ACpEtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACgB;;;AAGhB,mBAAO,CAAC,GAAmD,CAAC;AAC5D,mBAAO,CAAC,GAAmC,CAAC,CAAC;AAC7C,mBAAO,CAAC,GAA6B,CAAC,CAAC;;;;AAIN;;;;AAIE;AACE;AACJ;AACI;AACU;AACP;AACxC,mBAAO,CAAC,GAAiB,CAAC,CAAC;AAC3B,mBAAO,CAAC,GAAsB,CAAC,CAAC;AAChC,mBAAO,CAAC,GAAoB,CAAC,CAAC;AAC9B,mBAAO,CAAC,GAAiB,CAAC,CAAC;AAC3B,mBAAO,CAAC,GAA2B,CAAC,CAAC;AACrC,mBAAO,CAAC,GAAsB,CAAC,CAAC;AAChC,mBAAO,CAAC,GAAmB,CAAC,CAAC;;;AAG7B,mBAAO,CAAC,GAAkB,CAAC,CAAC;AAC5B,mBAAO,CAAC,GAAuB,CAAC,CAAC;AACjC,mBAAO,CAAC,GAAqB,CAAC,CAAC;AAC/B,mBAAO,CAAC,GAAuB,CAAC,CAAC;AACjC,mBAAO,CAAC,GAAqB,CAAC,CAAC;AAC/B,mBAAO,CAAC,GAAwB,CAAC,CAAC;AAClC,mBAAO,CAAC,GAAoB,CAAC,CAAC;AAC9B,mBAAO,CAAC,GAAsB,CAAC,CAAC;AAChC,mBAAO,CAAC,GAAwB,CAAC,CAAC;AAClC,mBAAO,CAAC,GAAyB,CAAC,CAAC;AACnC,mBAAO,CAAC,GAAoB,CAAC,CAAC;AAC9B,mBAAO,CAAC,GAAuB,CAAC,CAAC;AACjC,mBAAO,CAAC,GAA+B,CAAC,CAAC;AACzC,mBAAO,CAAC,GAAsB,CAAC,CAAC;AAChC,mBAAO,CAAC,GAAmB,CAAC,CAAC;AAC7B,mBAAO,CAAC,GAAqB,CAAC,CAAC;AAC/B,mBAAO,CAAC,GAAuB,CAAC,CAAC;AACjC,mBAAO,CAAC,GAAqB,CAAC,CAAC;AAC/B,mBAAO,CAAC,GAA+B,CAAC,CAAC;AACzC,mBAAO,CAAC,GAAuB,CAAC,CAAC;AACjC,mBAAO,CAAC,GAAoB,CAAC,CAAC;AAC9B,mBAAO,CAAC,GAA0B,CAAC,CAAC;AACpC,mBAAO,CAAC,GAAwB,CAAC,CAAC;AAClC,mBAAO,CAAC,GAA2B,CAAC,CAAC;;;AAGrCD,GAAK,CAAC,MAAM,GAAG,IAAI,6DAAM,CAAC;;EAExB,uEAAM;;EAEN,mEAAI;;EAEJ,uEAAO;CACR,CAAC,CAAC;;;AAGH,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,YAAM;EAC3B,MAAM,CAAC,UAAU,EAAE,CAAC;EACpB,oEAAO,CAAC,IAAI,EAAE,CAAC;;EAEf,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE;IAC7B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE;MAC1C,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;KAClB,CAAC,CAAC;GACJ;;EAED,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;IAC5C,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC;MACpB,MAAM,EAAE,CAAC,CAAC,kBAAkB,CAAC;KAC9B,CAAC,CAAC;GACJ;;OAEI;GACJ,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC;MACnB,MAAM,EAAE,CAAC,CAAC,YAAY,CAAC;KACxB,CAAC,CAAC;GACJ;;EAEDC,GAAG,CAAC,OAAO,GAAG;IACZ,SAAS,EAAE,wBAAwB;IACnC,OAAO,EAAE,OAAO;GACjB;;EAED,IAAI,UAAU,CAAC,qBAAqB,CAAC,CAAC,OAAO,EAAE;IAC7C,OAAO,GAAG;MACR,SAAS,EAAE,MAAM;MACjB,OAAO,EAAE,OAAO;KACjB;GACF,MAAM;IACL,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;MACxC,OAAO,GAAG;QACR,SAAS,EAAE,MAAM;QACjB,OAAO,EAAE,OAAO;OACjB;KACF;GACF;;EAED,CAAC,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;;EAE9CA,GAAG,CAAC,gBAAgB,GAAG,IAAI,wDAAQ,CAAC;IAClC,SAAS,EAAE,GAAG;IACd,iBAAiB,EAAE,OAAO;GAC3B,CAAC,CAAC;;EAEH,IAAI,gBAAgB,EAAE;IACpB,gBAAgB,CAAC,MAAM,EAAE,CAAC;GAC3B;;EAED,MAAM,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;;EAE3C,UAAU,CAAC,WAAW;IACpBA,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC5FA,GAAG,CAAC,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;;IAE/D,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;;IAE/E,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;QAC/CA,GAAG,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC;QACxE,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,EAAE,cAAc,GAAG,IAAI,CAAC,CAAC;KACzF;;IAED,IAAI,aAAa,EAAE;MACjB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;MAC3C,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;KAC5E;CACJ,EAAE,IAAI,CAAC,CAAC;;CAER,CAAC,CAAC;;;;;;;;ACxIH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAwC,EAAE,sBAAQ,EAAE,mCAAE;AAC1D;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gDAAgD,IAAI;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gDAAgD,UAAU;AAC1D;AACA;AACA;AACA;AACA,wBAAwB,UAAU;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,uCAAgC,OAAO,6jBAAE;AAC7C,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,CAAC;;;;AAID;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,uCAA4B,OAAO,yjBAAE;AACzC,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,uCAAqD,OAAO,klBAAE;AAClE,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,qBAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAA+B;AACnC,MAAM,0BAA4C;AAClD,KAAK,iCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;AAID;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uBAAuB;AACzC;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,GAAG;AACH;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAA2B;AAC/B,MAAM,0BAAmB;AACzB,KAAK,iCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;AAID;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,uCAA4B,OAAO,yjBAAE;AACzC,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAA8B;AAClC,MAAM,0BAAsB;AAC5B,KAAK,iCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;AAID;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAA+B;AACnC,MAAM,0BAAuB;AAC7B,MAAM,0BAAmB;AACzB,MAAM,0BAAsB;AAC5B,MAAM,0BAAQ;AACd,MAAM,0BAAS;AACf,MAAM,0BAAW;AACjB,KAAK,iCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iCAAiC;AACjC,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,iCAAiC;AAC5C,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,cAAc;AAC3B;AACA;AACA;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC,wBAAwB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,oCAAoC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,sBAAsB;AAC5C;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAgC;AACpC,MAAM,0BAAuB;AAC7B,KAAK,iCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;AAID;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,oBAAoB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAgC;AACpC,MAAM,0BAAuB;AAC7B,KAAK,kCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;AAID;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yBAAyB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAA2B;AAC/B,MAAM,0BAAY;AAClB,MAAM,2BAAuB;AAC7B,MAAM,0BAAsB;AAC5B,KAAK,kCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;AAID;;AAEA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO,IAAI,YAAY,OAAO,UAAU,QAAQ;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB,EAAE,sBAAsB,eAAe;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAuC;AAC3C,MAAM,0BAAY;AAClB,MAAM,0BAAuB;AAC7B,MAAM,0BAAsB;AAC5B,KAAK,kCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAgC;AACpC,MAAM,0BAAY;AAClB,MAAM,0BAAuB;AAC7B,MAAM,0BAAsB;AAC5B,KAAK,kCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;;;AAIA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAA6B;AACjC,MAAM,0BAAuB;AAC7B,MAAM,0BAAsB;AAC5B,MAAM,0BAAY;AAClB,KAAK,kCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;AAID;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAsC;AAC1C,MAAM,0BAAY;AAClB,MAAM,0BAAsB;AAC5B,KAAK,kCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;AAID;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAA+B;AACnC,MAAM,0BAAY;AAClB,MAAM,0BAAsB;AAC5B,KAAK,kCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAA4B;AAChC,MAAM,0BAAY;AAClB,MAAM,2BAAQ;AACd,MAAM,2BAAoB;AAC1B,MAAM,2BAAa;AACnB,MAAM,2BAAU;AAChB,MAAM,2BAAmB;AACzB,MAAM,2BAAY;AAClB,KAAK,oCAAE,OAAO;AAAA;AAAA,oHAAE;AAChB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAyC;AAC7C,MAAM,2BAAmB;AACzB,MAAM,0BAAsB;AAC5B,KAAK,oCAAE,OAAO;AAAA;AAAA;AAAA,oGAAE;AAChB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;AAID;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA,+BAA+B;AAC/B;;AAEA;;AAEA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAoC;AACxC,MAAM,0BAAuB;AAC7B,KAAK,kCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;;;AAIA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,WAAW,iCAAiC;AAC5C,WAAW,mBAAmB;AAC9B,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,KAAK;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,2BAAmB;AACzB,MAAM,2BAA2B;AACjC,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAA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AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,IAAI;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;AAMD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA,oBAAoB;AACpB;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;;AAEA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,GAAG;AACH;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA,cAAc;AACd;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,mBAAmB;AACnB,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,gBAAgB;;AAE5D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,gBAAgB;;AAEtF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB,yDAAyD;;AAE9E;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B;AAC/B,2BAA2B;AAC3B,gCAAgC;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gDAAgD;;AAEhD;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,uCAAuC;;AAEvC;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,cAAc;AAC5B;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA;AACA,wBAAwB;AACxB,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B,4BAA4B;AAC5B;;AAEA,qCAAqC;AACrC;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,WAAW;AACzB,cAAc,OAAO;AACrB,aAAa,WAAW;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,eAAe,mBAAmB;AAClC;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA;AACA,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,IAAI;AACJ;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kBAAkB;AAC9B;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,kCAAkC;;AAElC;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA,WAAW,WAAW;AACtB;;AAEA;AACA;AACA,WAAW,WAAW;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,4BAA4B;AACzC,aAAa,YAAY;AACzB,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B;AAC3B,iDAAiD,uCAAuC,kDAAkD;AAC1I,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA,cAAc,OAAO;AACrB;AACA,cAAc,OAAO;AACrB;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CA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,oCAAQ,OAAO;AAAA;AAAA;AAAA;AAAA,oGAAE;AACrB,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,qBAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,CAAC;;;;;;;ACpDD;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,uBAAmB;AACzB,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;ACrGD;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,oCAAQ,OAAO;AAAA;AAAA;AAAA;AAAA,oGAAE;AACrB,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA,CAAC;;;;;;;ACzED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,sBAAsB;AAC5B,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;ACxMD;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,uBAAY;AAClB,MAAM,wBAAuB;AAC7B,MAAM,sBAAsB;AAC5B,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO,IAAI,YAAY,OAAO,UAAU,QAAQ;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB,EAAE,sBAAsB,eAAe;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;ACxYD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,wBAAuB;AAC7B,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yBAAyB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;ACtRD;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,uBAAY;AAClB,MAAM,wBAAuB;AAC7B,MAAM,sBAAsB;AAC5B,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;AClND;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,uBAAY;AAClB,MAAM,wBAAuB;AAC7B,MAAM,sBAAsB;AAC5B,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;AC3LD;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,uBAAuB;AAC7B,MAAM,sBAAsB;AAC5B,MAAM,uBAAY;AAClB,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;AC9LD;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,uBAAY;AAClB,MAAM,sBAAsB;AAC5B,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA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AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;AC9ID;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,QAAQ,wBAAmB;AAC3B,QAAQ,uBAAmB;AAC3B,OAAO,oCACD,OAAO;AAAA;AAAA;AAAA,oGAAE;AACf,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,eAAe;AACjC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,YAAY;AAC9C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,cAAc;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;AC9OD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,QAAQ,uBAAuB;AAC/B,QAAQ,uBAAmB;AAC3B,QAAQ,sBAAsB;AAC9B,QAAQ,wBAAQ;AAChB,OAAO,mCACD;AACN;AACA,OAAO;AAAA,oGACF;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA,WAAW,gBAAgB;AAC3B,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;;AAEA;AACA;AACA,iCAAiC;AACjC,yBAAyB;;AAEzB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,iCAAiC;AAC5C,aAAa,MAAM;AACnB;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,iCAAiC;AAC5C,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,QAAQ;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;;AAEA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,oCAAoC;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,4BAA4B;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,WAAW,oCAAoC;AAC/C,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,6BAA6B;AACxC,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,6BAA6B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,6BAA6B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,wBAAwB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,WAAW,wBAAwB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,WAAW,MAAM,GAAG,QAAQ,GAAG,SAAS;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM,GAAG,QAAQ,GAAG,SAAS;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,aAAa,cAAc;AAC3B;AACA;AACA;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA,WAAW,6BAA6B;AACxC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA,yCAAyC;;AAEzC;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA,CAAC;;;;;;;AC16BD;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,QAAQ,uBAAuB;AAC/B,QAAQ,uBAAmB;AAC3B,OAAO,oCACD,OAAO;AAAA;AAAA;AAAA,oGACR;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB,aAAa;AACb;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,YAAY,cAAc;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,YAAY,cAAc;;AAE1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,cAAc;;AAE1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,cAAc,kBAAkB;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA,CAAC;;;;;;;ACziBD,6CAAI,SAAS,GAAG,EAAE,CAAC;;AAEnB,SAAS,iBAAiB,GAAG;EAC3B,IAAI,cAAc,GAAG,CAAC,CAAC,uCAAuC,CAAC,CAAC,WAAW,EAAE,CAAC;EAC9E,IAAI,UAAU,GAAG,CAAC,CAAC,oCAAoC,CAAC,CAAC,WAAW,EAAE,CAAC;EACvE,IAAI,aAAa,GAAG,CAAC,CAAC,wBAAwB,CAAC,CAAC;;EAEhD,IAAI,cAAc,GAAG,UAAU,EAAE;IAC/B,aAAa,CAAC,GAAG,CAAC;MAChB,eAAe,EAAE,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI;MAC7C,aAAa,EAAE,EAAE,cAAc,GAAG,UAAU,CAAC,GAAG,IAAI;KACrD,CAAC,CAAC;IACH,CAAC,CAAC,oBAAoB,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;GAC5D,MAAM;IACL,aAAa,CAAC,GAAG,CAAC;MAChB,eAAe,EAAE,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI;MAC7C,aAAa,EAAE,GAAG;KACnB,CAAC,CAAC;IACH,CAAC,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;GACzD;CACF;;AAED,SAAS,CAAC,YAAY,GAAG,WAAW;EAClC,iBAAiB,EAAE,CAAC;;EAEpB,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY;IAC3B,iBAAiB,EAAE,CAAC;GACrB,CAAC,CAAC;CACJ,CAAC;;AAEF,SAAS,CAAC,YAAY,EAAE,C;;;;;;;;AC9BxB;AAAA;AAAA;AAA2C;AACX;AAChC,IAAI,KAAK,GAAG,mBAAO,CAAC,GAAqB,CAAC,CAAC;;AAE3C,IAAI,UAAU,GAAG,EAAE,CAAC;;AAEpB,CAAC,SAAS,CAAC,CAAC;;CAEX,UAAU,CAAC,eAAe,GAAG,WAAW;EACvC,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;;EAEhE,IAAI,CAAC,SAAS,EAAE;GACf,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;GACvE;;EAED,IAAI,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;GAChD,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;GAC3B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;GACpD;EACD,CAAC;;CAEF,UAAU,CAAC,YAAY,GAAG,UAAU,SAAS,EAAE;EAC9C,IAAI,MAAM,GAAG,SAAS,CAAC,gBAAgB,EAAE,OAAO,EAAE,CAAC;;EAEnD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;GACxB,OAAO;GACP;;EAED,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;GACrC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,OAAO,EAAE,UAAU,CAAC,eAAe,EAAE,CAAC;GAClE,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,OAAO,EAAE,UAAU,CAAC,eAAe,EAAE,CAAC;GAClE;EACD,CAAC;;CAEF,UAAU,CAAC,aAAa,GAAG,UAAU,KAAK,GAAG;EAC5C,IAAI,EAAE,GAAG,oFAAoF,CAAC;EAC9F,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;EACxB,CAAC;;CAEF,UAAU,CAAC,cAAc,GAAG,UAAU,SAAS,GAAG;EACjD,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,YAAY,EAAE,eAAe,EAAE,EAAE,CAAC;EAC5E,IAAI,KAAK,GAAG,SAAS,CAAC,aAAa,EAAE,yBAAyB,EAAE,CAAC;EACjE,IAAI,KAAK,GAAG,SAAS,CAAC,aAAa,EAAE,4BAA4B,EAAE,CAAC;EACpE,IAAI,MAAM,GAAG,EAAE,CAAC;;;EAGhB,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG;GAC9B,MAAM,CAAC,KAAK,GAAG,EAAE,aAAa,IAAI,aAAa,CAAC,cAAc,EAAE,GAAG,aAAa,CAAC,cAAc,GAAG,0BAA0B,CAAC;GAC7H,MAAM,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG;GACtD,MAAM,CAAC,KAAK,GAAG,EAAE,aAAa,IAAI,aAAa,CAAC,aAAa,EAAE,GAAG,aAAa,CAAC,aAAa,GAAG,0BAA0B,CAAC;GAC3H;;EAED,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,GAAG;GAC7B,MAAM,CAAC,KAAK,GAAG,EAAE,aAAa,IAAI,aAAa,CAAC,cAAc,EAAE,GAAG,aAAa,CAAC,cAAc,GAAG,0BAA0B,CAAC;GAC7H;;;EAGD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;GACrC,OAAO,KAAK,CAAC;GACb;;;EAGD,KAAK,IAAI,GAAG,IAAI,MAAM,GAAG;GACxB,IAAI,OAAO,GAAG,SAAS,CAAC,aAAa,EAAE,6BAA6B,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;GAClF,IAAI,OAAO,EAAE;IACZ,OAAO,CAAC,SAAS,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC;IAClC;;GAED,IAAI,YAAY,GAAG,GAAG,KAAK,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC;GACnD,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;GACzD;;EAED,OAAO,IAAI,CAAC;EACZ,CAAC;;CAEF,UAAU,CAAC,UAAU,GAAG,WAAW,IAAI,GAAG;EACzC,KAAK,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE;;EAExB,IAAI,QAAQ,GAAG,IAAI,QAAQ,EAAE,IAAI,EAAE,CAAC;EACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;;EAE7B,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;EACzD,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;;EAEvD,IAAI,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;EAClD,IAAI,SAAS,EAAE;GACd,OAAO,UAAU,EAAE,YAAY;IAC9B,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;IAC1D,EAAE,GAAG,EAAE,CAAC;GACT;;EAED,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,aAAa,GAAG;GAC7C,UAAU,CAAC,sBAAsB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;GAC1D,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;GACzC,UAAU,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;GACtD,MAAM;GACN,IAAI,QAAQ,GAAG,EAAE,CAAC;;GAElB,QAAQ,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE,GAAG,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;IAC3E,CAAC,CAAC;;GAEH,IAAI,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;GAC/B,GAAG,CAAC,kBAAkB,GAAG,WAAW;IACnC,IAAI,GAAG,CAAC,UAAU,IAAI,cAAc,CAAC,IAAI,GAAG;KAC3C,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;MACtB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;;MAExC,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI,EAAE;OAClD,UAAU,EAAE,YAAY;QACvB,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QAC1D,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC7B,EAAE,IAAI,EAAE,CAAC;;OAEV,IAAI,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;OACxC,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,qBAAqB,EAAE;QAC9D,IAAI,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;;QAEhD,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,OAAO,EAAE;SAC1C,WAAW,GAAG,CAAC,CAAC;SAChB;;QAED,UAAU,CAAC,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;QACpD;OACD;MACD;KACD;IACD,CAAC;;GAEF,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;GAC9B,GAAG,CAAC,gBAAgB,EAAE,QAAQ,EAAE,gDAAgD,EAAE,CAAC;GACnF,GAAG,CAAC,gBAAgB,EAAE,cAAc,EAAE,iDAAiD,EAAE,CAAC;GAC1F,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;GAC/B;EACD,CAAC;;CAEF,UAAU,CAAC,kBAAkB,GAAG,SAAS,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;EAChE,IAAI,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;;EAE1B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;EAChD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;EAClD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;EAC1D,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;;EAE/C,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;GACrB,MAAM,EAAE,MAAM;GACd,IAAI,EAAE,IAAI;GACV,CAAC,CAAC,IAAI,CAAC,SAAS,QAAQ,EAAE;GAC1B,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;GACvB,CAAC,CAAC,IAAI,CAAC,SAAS,YAAY,EAAE;GAC9B,UAAU,EAAE,YAAY;IACvB,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;IAC1D,EAAE,IAAI,EAAE,CAAC;;GAEV,IAAI,YAAY,CAAC,OAAO,EAAE;IACzB,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;IAC1D,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpC,MAAM;IACN,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACxC;GACD,CAAC,CAAC;EACH,CAAC;;CAEF,UAAU,CAAC,sBAAsB,GAAG,SAAS,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;EACpED,GAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;EACxCA,GAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;EAC1CA,GAAK,CAAC,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;EACvDA,GAAK,CAAC,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;;EAEvDC,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC;EACnB,IAAI,iBAAiB,CAAC,MAAM,EAAE;GAC7B,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;GAC/C;;EAEDD,GAAK,CAAC,IAAI,GAAG,IAAI,2DAAI,EAAE,CAAC;;EAExB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,QAAQ,GAAG;GACzF,UAAU,EAAE,YAAY;IACvB,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;IAC1D,EAAE,IAAI,EAAE,CAAC;;GAEV,IAAI,QAAQ,CAAC,OAAO,EAAE;IACrB,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;IAC1D,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM;IACN,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC;GACD,CAAC,CAAC;EACH,CAAC;;CAEF,UAAU,CAAC,eAAe,GAAG,UAAU,EAAE,EAAE,WAAW,GAAG;EACxD,UAAU,EAAE,YAAY;GACvB,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;GACjB,EAAE,WAAW,GAAG,IAAI,EAAE,CAAC;EACxB,CAAC;;CAEF,UAAU,CAAC,WAAW,GAAG,SAAS,IAAI,EAAE,KAAU,EAAE,CAAP;+BAAA,CAAC,IAAI;AAAG;EACpD,IAAI,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;EAClE,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;;EAE5C,IAAI,eAAe,IAAI,WAAW,KAAK,iBAAiB,EAAE;GACzD,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;GAC5C,UAAU,CAAC,qBAAqB,EAAE,eAAe,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,CAAC;;GAExG,MAAM,IAAI,WAAW,KAAK,OAAO,GAAG;GACpC,IAAI,GAAG,GAAG,QAAQ,CAAC,cAAc,EAAE,iBAAiB,EAAE,CAAC;GACvD,IAAI,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;;GAE1C,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;GAC/E;;EAED,IAAI,KAAK,EAAE;GACV,UAAU,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;GACzD;EACD,CAAC;;CAEF,UAAU,CAAC,SAAS,GAAG,UAAU,eAAe,EAAE,IAAI,EAAE,WAAW,GAAG;EACrE,IAAI,CAAC,aAAa,EAAE,yBAAyB,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;EAC3D,IAAI,CAAC,aAAa,EAAE,4BAA4B,EAAE,CAAC,OAAO,GAAG,KAAK,CAAC;;EAEnE,IAAI,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,uBAAuB,EAAE,CAAC;EAClE,IAAI,UAAU,CAAC,MAAM,EAAE;GACtB,UAAU,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE;IAClC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACrB,CAAC,CAAC;GACH;;EAED,IAAI,WAAW,KAAK,iBAAiB,EAAE;GACtC,UAAU,EAAE,YAAY;IACvB,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC/C,UAAU,CAAC,qBAAqB,EAAE,eAAe,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,CAAC;IACxG,EAAE,KAAK,EAAE,CAAC;GACX;EACD,CAAC;;CAEF,UAAU,CAAC,qBAAqB,GAAG,UAAU,eAAe,EAAE,cAAc,EAAE,WAAW,IAAI;EAC5F,IAAI,CAAC,eAAe,EAAE;GACrB,OAAO;GACP;;EAED,IAAI,gBAAgB,GAAG,eAAe,CAAC,gBAAgB,EAAE,cAAc,EAAE,CAAC;EAC1E,IAAI,aAAa,GAAG,eAAe,CAAC,gBAAgB,EAAE,WAAW,EAAE,CAAC;;EAEpE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,GAAG;GAC9B,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,OAAO,GAAG;IACjE,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;IACrD,EAAE,CAAC;GACJ;;EAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,GAAG;GACjC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,EAAE,WAAW,OAAO,GAAG;IACpE,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;IACxD,EAAE,CAAC;GACJ;EACD,CAAC;;CAEF,UAAU,CAAC,KAAK,GAAG,UAAU,KAAK,GAAG;EACpC,IAAI,CAAC,KAAK,GAAG;GACZ,OAAO;GACP;;EAED,IAAI,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;EACxC,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;;EAElC,IAAI,CAAC,+DAAS,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG;;GAExC,UAAU,EAAE,YAAY;IACvB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpB,+DAAS,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAC7C,EAAE,KAAK,GAAG,IAAI,EAAE,CAAC;GAClB;EACD,CAAC;;CAEF,UAAU,CAAC,IAAI,GAAG,WAAW,WAAW,EAAE,OAAO,GAAG;EACnD,IAAI,SAAS,GAAG,QAAQ,CAAC,gBAAgB,EAAE,WAAW,EAAE,CAAC;EACzD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;GAC3B,OAAO;GACP;;EAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;;GAG1C,IAAI,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;GACxB,IAAI,CAAC,gBAAgB,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE;IAC7C,CAAC,CAAC,cAAc,EAAE,CAAC;IACnB,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;IAC9B,CAAC,CAAC;;;GAGH,UAAU,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;GAChC;;;EAGD,IAAI,KAAK,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC;EACzB,IAAI,KAAK,CAAC,MAAM,EAAE;GACjB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;GAC1B;EACD,CAAC;;CAEF,QAAQ,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,YAAY;EAC1D,UAAU,CAAC,SAAS,GAAG;GACtB,MAAM,EAAE,QAAQ;GAChB,SAAS,EAAE,YAAY;GACvB,UAAU,EAAE,aAAa;GACzB,KAAK,EAAE,YAAY;GACnB,CAAC;;EAEF,UAAU,CAAC,IAAI,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,CAAC;EAC5D,EAAE,CAAC;;CAEJ,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;CAC/B,CAAC,CAAC,MAAM,CAAC,C;;;;;;;;ACvTK,IAAM,IAAI,GACvB,aAAW,GAAG;EACZ,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AACD,4BAAa,2BAAC,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,QAAe,EAAE,CAAT;uCAAA,GAAG,IAAI;AAAG;EAChE,OAAO,KAAK,CAAC,oCAAkC,GAAE,KAAK,CAAE,EAAE;IACxD,MAAM,EAAE,MAAM;IACd,OAAO,EAAE;MACP,cAAc,EAAE,iCAAiC;IACnD,CAAC;IACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;MACnB,SAAS,EAAE,SAAS;MACpB,QAAQ,EAAE,QAAQ;MAClB,cAAc,EAAE,cAAc;IAChC,CAAC,CAAC;EACJ,CAAC,CAAC;IACA,CAAC,IAAI,CAAC,UAAC,IAAI,EAAK,aAAI,CAAC,IAAI,EAAE,IAAC;IAC5B,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE;MACpB,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,IAAI,CAAC,CAAC;MAC1D,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,CAAC,KAAK,CAAC,UAAU,KAAK,EAAE;MACtB,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACP,CAAC,CACF;;+DAAA;;;;;;;ACzBD;;AAEA,EAAE,WAAW,CAAC,GAAG;;IAEb,IAAI,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI;QACtC,WAAW,GAAG,CAAC,EAAE,kBAAkB,EAAE;QACrC,aAAa,GAAG,CAAC,EAAE,oBAAoB,EAAE;QACzC,MAAM,GAAG,CAAC,EAAE,2BAA2B,EAAE;QACzC,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,EAAE;QACnE,QAAQ,GAAG,CAAC,EAAE,gBAAgB,EAAE;QAChC,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE;QACtC,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE;QAClC,WAAW,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE;QAC7C,sBAAsB,GAAG,eAAe;QACxC,SAAS,CAAC;;IAEd,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG;QACzB,SAAS,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACtC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC9B;;IAED,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;;IAE5B,IAAI,CAAC,EAAE,iBAAiB,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG;QAC3C,cAAc,EAAE,CAAC;KACpB;;IAED,KAAK,eAAe,IAAI,EAAE,GAAG;QACzB,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;QAClB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC9B,CAAC,EAAE,eAAe,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC;;KAEhD;;IAED,QAAQ,CAAC,KAAK,EAAE,YAAY;QACxB,IAAI,WAAW,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC;QAClD,IAAI,QAAQ,GAAG,WAAW,GAAG,CAAC,CAAC;QAC/B,eAAe,EAAE,QAAQ,EAAE,CAAC;QAC5B,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;KAC7C,EAAE,CAAC;;IAEJ,CAAC,EAAE,kBAAkB,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;QACxC,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3F,CAAC,EAAE,iBAAiB,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QAC1C,CAAC,EAAE,oBAAoB,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC;QAClD,CAAC,EAAE,cAAc,EAAE,CAAC,IAAI,EAAE,YAAY;YAClC,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,mBAAmB,EAAE,CAAC;YACtC,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC;SAC9D,EAAE,CAAC;;QAEJ,cAAc,EAAE,CAAC;;;KAGpB,EAAE,CAAC;;IAEJ,CAAC,EAAE,oBAAoB,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG;QAC5C,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,EAAE,2BAA2B,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC;QACzD,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC/B,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;KACxC,EAAE,CAAC;;IAEJ,CAAC,EAAE,mBAAmB,EAAE,CAAC,KAAK,EAAE,YAAY;QACxC,cAAc,EAAE,CAAC;KACpB,CAAC,CAAC;;IAEH,SAAS,cAAc,GAAG;;QAEtB,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,cAAc,GAAG,EAAE,CAAC;QACxB,IAAI,gBAAgB,GAAG,EAAE,CAAC;;QAE1B,IAAI,OAAO,GAAG,CAAC,EAAE,2BAA2B,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,2BAA2B,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QACvH,IAAI,KAAK,GAAG,EAAE,CAAC;;QAEf,CAAC,EAAE,mBAAmB,EAAE,CAAC,IAAI,EAAE,YAAY;YACvC,IAAI,SAAS,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YACzC,IAAI,UAAU,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;YACjC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,GAAG;gBACvC,SAAS,SAAS;oBACd,KAAK,OAAO;wBACR,KAAK,GAAG,EAAE,CAAC;wBACX,KAAK,SAAS,IAAI,EAAE,GAAG;4BACnB,KAAK,GAAG,GAAG,CAAC;yBACf;wBACD,SAAS,IAAI,KAAK,GAAG,UAAU,CAAC;wBAChC,MAAM;oBACV,KAAK,MAAM;wBACP,KAAK,GAAG,EAAE,CAAC;wBACX,KAAK,QAAQ,IAAI,EAAE,GAAG;4BAClB,KAAK,GAAG,GAAG,CAAC;yBACf;wBACD,QAAQ,IAAI,KAAK,GAAG,UAAU,CAAC;wBAC/B,MAAM;oBACV,KAAK,UAAU;wBACX,KAAK,GAAG,EAAE,CAAC;wBACX,KAAK,YAAY,IAAI,EAAE,GAAG;4BACtB,KAAK,GAAG,GAAG,CAAC;yBACf;wBACD,YAAY,IAAI,KAAK,GAAG,UAAU,CAAC;wBACnC,MAAM;oBACV,KAAK,UAAU;wBACX,KAAK,GAAG,EAAE,CAAC;wBACX,KAAK,YAAY,IAAI,EAAE,GAAG;4BACtB,KAAK,GAAG,GAAG,CAAC;yBACf;wBACD,YAAY,IAAI,KAAK,GAAG,UAAU,CAAC;wBACnC,MAAM;oBACV,KAAK,OAAO;wBACR,KAAK,GAAG,EAAE,CAAC;wBACX,KAAK,SAAS,IAAI,EAAE,GAAG;4BACnB,KAAK,GAAG,GAAG,CAAC;yBACf;wBACD,SAAS,IAAI,KAAK,GAAG,UAAU,CAAC;wBAChC,MAAM;oBACV,KAAK,MAAM;wBACP,KAAK,GAAG,EAAE,CAAC;wBACX,KAAK,QAAQ,IAAI,EAAE,GAAG;4BAClB,KAAK,GAAG,GAAG,CAAC;yBACf;wBACD,QAAQ,IAAI,KAAK,GAAG,UAAU,CAAC;wBAC/B,MAAM;oBACV,KAAK,YAAY;wBACb,KAAK,GAAG,EAAE,CAAC;wBACX,KAAK,cAAc,IAAI,EAAE,GAAG;4BACxB,KAAK,GAAG,GAAG,CAAC;yBACf;wBACD,cAAc,IAAI,KAAK,GAAG,UAAU,CAAC;wBACrC,gBAAgB,IAAI,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACnD,MAAM;iBACb;aACJ;SACJ,EAAE,CAAC;;;;;;;;;QASJ,IAAI,SAAS,GAAG,EAAE,CAAC;;QAEnB,KAAK,YAAY,IAAI,EAAE,GAAG;YACtB,SAAS,IAAI,WAAW,GAAG,YAAY,CAAC;SAC3C,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE;YAC1C,SAAS,IAAI,WAAW,GAAG,QAAQ,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC;SACjE;;QAED,KAAK,SAAS,IAAI,EAAE,GAAG;YACnB,KAAK,SAAS,IAAI,EAAE,GAAG;gBACnB,SAAS,IAAI,GAAG,CAAC;aACpB;YACD,SAAS,IAAI,QAAQ,GAAG,SAAS,CAAC;YAClC,IAAI,WAAW,GAAG,IAAI,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;SACpE;QACD,KAAK,QAAQ,IAAI,EAAE,GAAG;YAClB,KAAK,SAAS,IAAI,EAAE,GAAG;gBACnB,SAAS,IAAI,GAAG,CAAC;aACpB;YACD,SAAS,IAAI,OAAO,GAAG,QAAQ,CAAC;YAChC,IAAI,UAAU,GAAG,IAAI,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;SAClE;QACD,KAAK,YAAY,IAAI,EAAE,GAAG;YACtB,KAAK,SAAS,IAAI,EAAE,GAAG;gBACnB,SAAS,IAAI,GAAG,CAAC;aACpB;YACD,SAAS,IAAI,WAAW,GAAG,YAAY,CAAC;YACxC,IAAI,cAAc,GAAG,IAAI,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;SAC1E;QACD,KAAK,SAAS,IAAI,EAAE,GAAG;YACnB,KAAK,SAAS,IAAI,EAAE,GAAG;gBACnB,SAAS,IAAI,GAAG,CAAC;aACpB;YACD,SAAS,IAAI,QAAQ,GAAG,SAAS,CAAC;YAClC,IAAI,WAAW,GAAG,IAAI,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;SACpE;QACD,KAAK,QAAQ,IAAI,EAAE,GAAG;YAClB,KAAK,SAAS,IAAI,EAAE,GAAG;gBACnB,SAAS,IAAI,GAAG,CAAC;aACpB;YACD,SAAS,IAAI,OAAO,GAAG,QAAQ,CAAC;YAChC,IAAI,UAAU,GAAG,IAAI,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;SAClE;QACD,KAAK,cAAc,IAAI,EAAE,GAAG;YACxB,KAAK,SAAS,IAAI,EAAE,GAAG;gBACnB,SAAS,IAAI,GAAG,CAAC;aACpB;YACD,SAAS,IAAI,aAAa,GAAG,cAAc,CAAC;YAC5C,gBAAgB,GAAG,IAAI,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;SAC5E;QACD,KAAK,OAAO,IAAI,EAAE,IAAI,OAAO,OAAO,KAAK,WAAW,GAAG;YACnD,KAAK,SAAS,IAAI,EAAE,GAAG;gBACnB,SAAS,IAAI,GAAG,CAAC;aACpB;YACD,SAAS,IAAI,UAAU,GAAG,OAAO,CAAC;SACrC;;QAED,SAAS,GAAG,GAAG,GAAG,SAAS,CAAC;QAC5B,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;;QAEnD,IAAI,cAAc,CAAC;;QAEnB,KAAK,YAAY,IAAI,EAAE,GAAG;YACtB,cAAc,GAAG,IAAI,MAAM,EAAE,MAAI,IAAG,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,SAAK,CAAC,EAAE,GAAG,CAAC,CAAC;SACzF,MAAM;YACH,cAAc,GAAG,IAAI,MAAM,EAAE,MAAI,IAAG,QAAQ,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAK,CAAC,EAAE,GAAG,CAAC,CAAC;SACtF;;QAED,CAAC,CAAC,oBAAoB,CAAC,CAAC,MAAM,EAAE,CAAC;;QAEjC,IAAI,cAAc,GAAG,EAAE,CAAC;;QAExB,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC;;;;;QAKvJ,IAAI,WAAW,GAAG;YACd,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;SAC5I;QACD,IAAI,UAAU,GAAG;YACb,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;SACpJ;QACD,IAAI,cAAc,GAAG;YACjB,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;SACrJ;QACD,IAAI,WAAW,GAAG;YACd,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;SAC5I;QACD,IAAI,UAAU,GAAG;YACb,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;SACzI;QACD,IAAI,gBAAgB,GAAG;YACnB,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;SAC3J;;QAED,IAAI,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;YAC9B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YACpC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YACpC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACN,OAAO,CAAC,CAAC,CAAC;aACb,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE;gBACb,OAAO,CAAC,CAAC;aACZ,MAAM;gBACH,OAAO,CAAC,CAAC;aACZ;SACJ,CAAC;;QAEF,IAAI,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;YAC7B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YACpC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YACpC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACN,OAAO,CAAC,CAAC,CAAC;aACb,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE;gBACb,OAAO,CAAC,CAAC;aACZ,MAAM;gBACH,OAAO,CAAC,CAAC;aACZ;SACJ,CAAC;;QAEF,IAAI,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;YAC9B,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACN,OAAO,CAAC,CAAC,CAAC;aACb,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE;gBACb,OAAO,CAAC,CAAC;aACZ,MAAM;gBACH,OAAO,CAAC,CAAC;aACZ;SACJ,CAAC;;QAEF,IAAI,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;YAC7B,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACN,OAAO,CAAC,CAAC,CAAC;aACb,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE;gBACb,OAAO,CAAC,CAAC;aACZ,MAAM;gBACH,OAAO,CAAC,CAAC;aACZ;SACJ,CAAC;;QAEF,IAAI,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;YAC7B,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACN,OAAO,CAAC,CAAC,CAAC;aACb,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE;gBACb,OAAO,CAAC,CAAC;aACZ,MAAM;gBACH,OAAO,CAAC,CAAC;aACZ;SACJ,CAAC;;QAEF,SAAS,OAAO;YACZ,KAAK,WAAW;gBACZ,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACnD,MAAM;YACV,KAAK,YAAY;gBACb,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACpD,MAAM;YACV,KAAK,YAAY;gBACb,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACpD,MAAM;YACV,KAAK,WAAW;gBACZ,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACnD,MAAM;YACV;gBACI,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACnD,MAAM;SACb;;;QAGD,IAAI,SAAS,EAAE;YACX,SAAS,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;SACrD;;QAED,CAAC,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,GAAG,EAAE,IAAI,EAAE;YACxC,CAAC,EAAE,6BAA6B,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;SACrD,EAAE,CAAC;;QAEJ,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,WAAW,GAAG;;YAEhD,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;YAC5C,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE;gBAC5B,YAAY,EAAE,UAAU;gBACxB,eAAe,EAAE,IAAI;aACxB,EAAE,CAAC;SACP;;;;;QAKD,IAAI,MAAM,CAAC,gBAAgB,IAAI,OAAO,MAAM,CAAC,gBAAgB,CAAC,MAAM,KAAK,WAAW,EAAE;YAClF,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;SACpC;;;QAGD,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG;YACzC,CAAC,EAAE,WAAW,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC;SAC5C;;;QAGD,IAAI,gBAAgB,GAAG,UAAU,EAAE,+BAA+B,EAAE,CAAC,OAAO,CAAC;QAC7E,IAAI,gBAAgB,KAAK,KAAK,EAAE;YAC5B,IAAI,aAAa,GAAG,CAAC,EAAE,+BAA+B,EAAE,CAAC;;YAEzD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1B,CAAC,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW;oBAC9B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE;wBACpC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,kBAAkB,EAAE,CAAC;wBACnD,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;qBACpB;iBACJ,EAAE,CAAC;aACP;SACJ;;;QAGD,IAAI,CAAC,EAAE,sBAAsB,EAAE,CAAC,MAAM,EAAE;YACpC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,sBAAsB,EAAE,EAAE,WAAW;gBAC5C,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC;aACzC,EAAE,CAAC;SACP;;;;QAID,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;KACrC;;IAED,SAAS,cAAc,IAAI;QACvB,IAAI,OAAO,GAAG,CAAC,EAAE,iBAAiB,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QACvD,IAAI,eAAe,GAAG,QAAQ,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC;QACzD,IAAI,aAAa,GAAG,QAAQ,CAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC;;QAEtD,IAAI,eAAe,IAAI,aAAa,EAAE;YAClC,OAAO,IAAI,YAAY,GAAG,eAAe,GAAG,UAAU,GAAG,aAAa,CAAC;SAC1E;;QAED,KAAK,MAAM,GAAG;YACV,OAAO,IAAI,UAAU,GAAG,kBAAkB,EAAE,MAAM,EAAE,CAAC;SACxD;;QAED,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI,EAAE;YACzC,OAAO,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;SACrC;;QAED,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;;QAEhE,CAAC,CAAC,IAAI,EAAE;YACJ,GAAG,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ;YAClC,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,WAAW,IAAI,EAAE,UAAU,GAAG;gBACjC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;aAC7B;YACD,OAAO,EAAE,WAAW,IAAI,GAAG;;gBAEvB,IAAI,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;oBAC7B,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC1B,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC1B,GAAG,CAAC,GAAG,CAAC,EAAE;wBACN,OAAO,CAAC,CAAC,CAAC;qBACb,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE;wBACb,OAAO,CAAC,CAAC;qBACZ,MAAM;wBACH,OAAO,CAAC,CAAC;qBACZ;iBACJ,CAAC;gBACF,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;;gBAE/B,IAAI,IAAI,GAAG,EAAE,CAAC;gBACd,IAAI,oBAAoB,GAAG,EAAE,CAAC;;gBAE9B,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG;oBACxB,IAAI,GAAG,EAAE,CAAC;oBACV,oBAAoB,GAAG,EAAE,CAAC;;oBAE1B,CAAC,EAAE,eAAe,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;oBAC1C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;oBAC9BC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;;oBAEhB,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,EAAE,GAAG,GAAG;wBAClC,IAAI,GAAG,CAAC,KAAK,IAAI,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,KAAK,EAAE;4BAC/C,OAAO;yBACV;;wBAED,OAAO,EAAE,CAAC;;;wBAGV,KAAK,OAAO,IAAI,CAAC,GAAG;4BAChB,IAAI,IAAI,SAAS,CAAC;4BAClB,oBAAoB,IAAI,SAAS,CAAC;yBACrC;;wBAED,oBAAoB,IAAI,GAAG,CAAC,YAAY,CAAC;;wBAEzC,IAAI,IAAI,GAAG,CAAC,YAAY,CAAC;qBAC5B,EAAE,CAAC;;oBAEJ,WAAW,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;;oBAEhC,KAAK,eAAe,IAAI,EAAE,GAAG;;wBAEzB,sBAAsB,EAAE,CAAC;wBACzB,cAAc,EAAE,CAAC;;qBAEpB,MAAM;;;;;wBAKH,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;wBACzB,aAAa,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC;;;wBAG7C,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,WAAW,GAAG;4BAChD,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;4BAC5C,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE;gCAC5B,YAAY,EAAE,UAAU;gCACxB,eAAe,EAAE,IAAI;6BACxB,EAAE,CAAC;4BACJ,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;yBACjD;;;;;wBAKD,IAAI,MAAM,CAAC,gBAAgB,IAAI,OAAO,MAAM,CAAC,gBAAgB,CAAC,MAAM,KAAK,WAAW,EAAE;4BAClF,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;yBACpC;;wBAED,aAAa,CAAC,MAAM,EAAE,CAAC;wBACvB,MAAM,CAAC,cAAc,EAAE,CAAC;;;wBAGxB,IAAI,CAAC,EAAE,sBAAsB,EAAE,CAAC,MAAM,EAAE;4BACpC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,sBAAsB,EAAE,EAAE,WAAW;gCAC5C,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;6BACpC,EAAE,CAAC;yBACP;;;wBAGD,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG;4BACzC,CAAC,EAAE,WAAW,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC;yBAC5C;qBACJ;;iBAEJ,MAAM;oBACH,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,CAAC;iBACxD;;;aAGJ;SACJ,EAAE,CAAC;KACP;;IAED,SAAS,eAAe,GAAG,QAAQ,GAAG;;QAElC,sBAAsB,EAAE,CAAC;;QAEzB,IAAI,OAAO,GAAG,CAAC,EAAE,iBAAiB,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QACvD,IAAI,eAAe,GAAG,QAAQ,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC;QACzD,IAAI,aAAa,GAAG,QAAQ,CAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC;QACtD,IAAI,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC3C,IAAI,kBAAkB,CAAC;QACvB,eAAe,GAAG,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;;QAEtD,KAAK,eAAe,IAAI,EAAE,GAAG;YACzB,OAAO,GAAG,OAAO,GAAG,eAAe,CAAC;SACvC,MAAM;YACH,OAAO,GAAG,OAAO,GAAG,YAAY,GAAG,eAAe,GAAG,UAAU,GAAG,aAAa,CAAC;SACnF;;;;QAID,KAAK,MAAM,GAAG;YACV,OAAO,IAAI,UAAU,GAAG,kBAAkB,EAAE,MAAM,EAAE,CAAC;SACxD;;QAED,CAAC,CAAC,IAAI,EAAE;YACJ,GAAG,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ;YACxD,IAAI,EAAE,KAAK;YACX,UAAU,EAAE,YAAY;gBACpB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;gBAC9B,CAAC,EAAE,eAAe,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC;gBAC7C,kBAAkB,GAAG,MAAM,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC;aACrD;YACD,KAAK,EAAE,WAAW,IAAI,EAAE,UAAU,GAAG;;gBAEjC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;aAC7B;YACD,OAAO,EAAE,WAAW,IAAI,EAAE,UAAU,EAAE,KAAK,GAAG;gBAC1C,KAAK,IAAI,GAAG;oBACR,QAAQ,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC;oBACjC,CAAC,EAAE,eAAe,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;;;oBAG1C,KAAK,QAAQ,IAAI,CAAC,GAAG;wBACjB,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;qBACrB;;oBAED,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG;wBACxB,IAAI,IAAI,GAAG,EAAE,CAAC;;wBAEd,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,EAAE,GAAG,GAAG;;4BAElC,KAAK,QAAQ,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG;gCAC9B,IAAI,IAAI,SAAS,CAAC;6BACrB;;4BAED,IAAI,IAAI,GAAG,CAAC,YAAY,CAAC;yBAC5B,EAAE,CAAC;;wBAEJ,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;;;wBAGtB,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;wBAC5C,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE;4BAC5B,YAAY,EAAE,UAAU;4BACxB,eAAe,EAAE,IAAI;yBACxB,EAAE,CAAC;;;;;wBAKJ,IAAI,MAAM,CAAC,gBAAgB,IAAI,OAAO,MAAM,CAAC,gBAAgB,CAAC,MAAM,KAAK,WAAW,EAAE;4BAClF,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;yBACpC;;;wBAGD,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG;4BACzC,CAAC,EAAE,WAAW,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC;yBAC5C;qBACJ,MAAM;wBACH,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,CAAC;qBACxD;;oBAED,IAAI,SAAS,GAAG,QAAQ,EAAE,KAAK,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,CAAC;oBAC7E,KAAK,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;wBAChE,UAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;iBACrC,MAAM;oBACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;iBACjC;;gBAED,MAAM,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,kBAAkB,EAAE,CAAC;aACpD;SACJ,EAAE,CAAC;KACP;;IAED,SAAS,sBAAsB,IAAI;QAC/B,IAAI,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAChC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAC/B,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;QAChC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG;YACtB,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,EAAE,SAAS,GAAG;gBAC3C,IAAI,YAAY,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;;gBAE1C,KAAK,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG;oBAC3B,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,WAAW,YAAY,EAAE,cAAc,GAAG;wBAC9D,IAAI,iBAAiB,GAAG,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;;wBAEpD,KAAK,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG;4BACxC,iBAAiB,GAAG,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;yBACnD;;wBAED,KAAK,iBAAiB,CAAC,MAAM,GAAG,CAAC,GAAG;4BAChC,CAAC,EAAE,iBAAiB,EAAE,CAAC,IAAI,EAAE,WAAW,oBAAoB,EAAE,sBAAsB,GAAG;gCACnF,KAAK,sBAAsB,IAAI,EAAE,GAAG;oCAChC,IAAI,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;;oCAEhC,KAAK,SAAS,IAAI,SAAS,GAAG;wCAC1B,IAAI,gBAAgB,GAAG,CAAC,EAAE,eAAe,GAAG,sBAAsB,GAAG,GAAG,EAAE,CAAC;wCAC3E,CAAC,EAAE,2BAA2B,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC;wCACzD,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;wCACtC,WAAW,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC;qCAC/C,MAAM;wCACH,CAAC,EAAE,cAAc,GAAG,SAAS,GAAG,qBAAqB,GAAG,sBAAsB,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;qCACrH;iCACJ;6BACJ,EAAE,CAAC;yBACP;qBACJ,EAAE,CAAC;iBACP;aACJ,EAAE,CAAC;SACP;KACJ;;;IAGD,IAAI,SAAS,GAAG,QAAQ,CAAC,cAAc,EAAE,eAAe,EAAE;QACtD,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAAE,cAAc,EAAE;QACpD,SAAS,GAAG,IAAI;QAChB,OAAO,GAAG,KAAK,CAAC;;IAEpB,KAAK,CAAC,SAAS,IAAI,CAAC,QAAQ,GAAG;QAC3B,OAAO;KACV;;IAED,IAAI,OAAO,GAAG,YAAY;QACtB,IAAI,gBAAgB,GAAG,UAAU,EAAE,+BAA+B,EAAE,CAAC,OAAO,CAAC;;QAE7E,KAAK,SAAS,KAAK,gBAAgB,GAAG;YAClC,CAAC,EAAE,mBAAmB,EAAE,CAAC,MAAM,EAAE,CAAC;;YAElC,KAAK,gBAAgB,GAAG;gBACpB,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC;aAC3D,MAAM;gBACH,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;aACzD;SACJ;;QAED,SAAS,GAAG,gBAAgB,CAAC;KAChC,CAAC;;IAEF,OAAO,EAAE,CAAC;IACV,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,YAAY;QAC5B,KAAK,OAAO,GAAG;YACX,YAAY,EAAE,OAAO,EAAE,CAAC;SAC3B;;QAED,OAAO,GAAG,UAAU,EAAE,YAAY;YAC9B,OAAO,EAAE,CAAC;SACb,EAAE,GAAG,EAAE,CAAC;KACZ,EAAE,CAAC;;;CAGP,EAAE,EAAE,MAAM,EAAE,CAAC;;;;;;;;AClqBd;AACA,CAAC,CAAC,iEAAiE,CAAC,CAAC,QAAQ;EAC3E,MAAM;CACP,CAAC;AACF,CAAC,CAAC,+DAA+D,CAAC,CAAC,WAAW;EAC5E,WAAW;CACZ,CAAC;;AAEF,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE;EAC1C,CAAC,CAAC,cAAc,EAAE,CAAC;EACnB,CAAC,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;EAC/C,CAAC,CAAC,sBAAsB,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;CACjD,CAAC,CAAC;;AAEH,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,uBAAuB,EAAE,UAAU,CAAC,EAAE;EAC5D,CAAC,CAAC,cAAc,EAAE,CAAC;EACnBA,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC;EACzCA,GAAG,CAAC,OAAO,CAAC;EACZ,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;IACnC,OAAO,GAAG,SAAS,GAAG,EAAE,CAAC;GAC1B,MAAM;IACL,OAAO,GAAG,SAAS,CAAC;GACrB;EACD,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO;IACrB;MACE,SAAS,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,OAAO;KACvD;IACD,IAAI;GACL,CAAC;CACH,CAAC,CAAC;;;;;;;;;AC7BH;AAAA;AAAA;AAC2C;;;;AAI3CD,GAAK,CAAC,OAAO,GAAG,EAAE,CAAC;;AAEnBC,GAAG,CAAC,wBAAwB,GAAG,QAAQ,CAAC,cAAc,EAAE,8BAA8B,EAAE;IACpF,oBAAoB,GAAG,QAAQ,CAAC,cAAc,EAAE,0BAA0B,EAAE;IAC5E,qBAAqB,GAAG,mBAAmB;IAC3C,mBAAmB,GAAG,gBAAgB;IACtC,iBAAiB,GAAG,gBAAgB;IACpC,mBAAmB,GAAG,UAAU;IAChC,iBAAiB,GAAG,IAAI,CAAC;;AAE7B,OAAO,CAAC,oBAAoB,GAAG,UAAC,EAAE,EAAK;IACnCA,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;;IAE1C,IAAI,OAAO,CAAC,WAAW,EAAE;QACrB,GAAG,GAAG,GAAG,GAAG,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;KAC9C;;IAED,OAAO,CAAC,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;CACxD;;AAED,OAAO,CAAC,cAAc,GAAG,UAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAK;;;IAGjD,IAAI,CAAC,iBAAiB,GAAG;QACrB,OAAO;KACV;;IAEDA,GAAG,CAAC,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;;IAE/B,iBAAiB,GAAG,KAAK,CAAC;;CAE7B,GAAG,CAAC,kBAAkB,GAAG,YAAY;EACpC,KAAK,GAAG,CAAC,UAAU,KAAK,cAAc,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE;;EAEzD,KAAK,GAAG,CAAC,MAAM,KAAK,GAAG,GAAG;GACzB,IAAI;gBACSA,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;;gBAEtC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;gBACxC,iBAAiB,GAAG,IAAI,CAAC;IACrC;GACD,QAAQ,GAAG,GAAG;gBACD,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IAC/B;;GAED;EACD,CAAC;;IAEC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAC9B,GAAG,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC;IAC7D,GAAG,CAAC,IAAI,EAAE,CAAC;CACd;;AAED,OAAO,CAAC,YAAY,GAAG,UAAC,IAAI,EAAE,SAAS,EAAK;IACxC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG;QAChB,OAAO;KACV;;IAED,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;IAChD,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;CAC9B;;AAED,OAAO,CAAC,UAAU,GAAG,UAAC,IAAI,EAAK;IAC3B,oBAAoB,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACnD,wBAAwB,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;;IAE3D,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE;QACjC,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KACxD;;IAED,IAAI,SAAS,GAAG,CAAC,EAAE,6BAA6B,EAAE,CAAC;CACtD,IAAI,UAAU,GAAG,CAAC,EAAE,iBAAiB,EAAE,CAAC;;IAErC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;QACrB,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAChE,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;EAC3F,SAAS,CAAC,IAAI,CAAC,OAAO,GAAG,eAAe,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,gBAAgB,CAAC,CAAC,CAAC;;QAE1F,IAAI,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9C,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;;QAE5C,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,KAAK,UAAU,EAAE;YACnD,IAAI,SAAS,CAAC,MAAM,EAAE,WAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,QAAQ,CAAC,MAAM,EAAE,UAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SACvD,MAAM;YACH,IAAI,SAAS,CAAC,MAAM,EAAE,WAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACtD,IAAI,QAAQ,CAAC,MAAM,EAAE,UAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SACpD;EACP;;CAED,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;EACzB,UAAU,CAAC,IAAI,CAAC,OAAO,GAAG,eAAe,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,gBAAgB,CAAC,CAAC,CAAC;EACjG;;IAEE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;CACxB;;AAED,OAAO,CAAC,aAAa,GAAG,UAAC,KAAK,EAAK;IAC/B,IAAI,CAAC,KAAK,EAAE;QACR,OAAO;KACV;;IAED,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,IAAI,EAAE;EACvD,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,YAAY;YAClCA,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;gBACvC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;aACzB;;YAED,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;GAC5C,CAAC,CAAC;EACH,EAAE,CAAC;CACJ;;AAED,OAAO,CAAC,UAAU,GAAG,UAAC,KAAK,EAAK;IAC5B,IAAI,CAAC,KAAK,EAAE;QACR,OAAO;KACV;;IAED,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,IAAI,EAAE;EACvD,IAAI,CAAC,gBAAgB,EAAE,QAAQ,EAAE,YAAY;YACnCA,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;gBACnC,MAAM,GAAG,+DAAS,CAAC,YAAY,CAAC,KAAK,EAAE,wBAAwB,CAAC;gBAChE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,uBAAuB,CAAC,GAAG,IAAI;gBACtE,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU;gBACvC,SAAS,GAAG,+DAAS,CAAC,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;;YAE/D,IAAI,MAAM,EAAE;gBACR,IAAI,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;;gBAE1D,IAAI,SAAS,EAAE,GAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;;gBAEhF,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;oBAC/C,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC;oBAC5D,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;;oBAEtCD,GAAK,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;;KAEnD,IAAI,MAAM,EAAE;wBACOC,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC;wBACvD,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;wBAClD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;;wBAE9B,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBACnD,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;MACtE;iBACW,MAAM;oBACH,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,aAAa,CAAC;oBAC7D,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;;oBAEnC,IAAI,SAAS,EAAE,GAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;iBACrD;aACJ;GACV,CAAC,CAAC;EACH,EAAE,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;;AAqBD,OAAO,CAAC,IAAI,GAAG,UAAC,MAAM,EAAK;IACvB,IAAI,CAAC,oBAAoB,IAAI,CAAC,wBAAwB,EAAE;QACpD,OAAO;KACV;;IAED,OAAO,CAAC,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC;IACnD,OAAO,CAAC,WAAW,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC;IACxD,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,EAAE,CAAC;IAC5F,OAAO,CAAC,UAAU,EAAE,oBAAoB,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,EAAE,CAAC;;;IAGvF,KAAK,MAAM,GAAG;;QAEV,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE;YAC3B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE;gBACxC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;eAClB,CAAC,CAAC;SACR;QACD,IAAI,MAAM,CAAC,gBAAgB,IAAI,OAAO,MAAM,CAAC,gBAAgB,CAAC,MAAM,KAAK,WAAW,EAAE;YAClF,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;SACpC;;QAED,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;QACnC,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,CAAC;;QAEnE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EACrC,GAAG,CAAC,cAAc,EAAE,CAAC;KAClB;CACJ;;AAED,QAAQ,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,YAAY;CAC1D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;CAEpB,KAAK,OAAO,OAAO,CAAC,SAAS,KAAK,WAAW,GAAG;EAC/C,KAAK,OAAO,CAAC,aAAa,GAAG;;GAE5BA,GAAG,CAAC,gBAAgB,GAAG,EAAE,CAAC;YACjB,gBAAgB,CAAC,OAAO,GAAG,EAAE,CAAC;YAC9B,gBAAgB,CAAC,OAAO,CAAC,IAAI,GAAG,oBAAoB,CAAC,SAAS,CAAC;YAC/D,gBAAgB,CAAC,OAAO,CAAC,QAAQ,GAAG,wBAAwB,CAAC,SAAS,CAAC;;YAEvE,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,gBAAgB,EAAE,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;GAChF;;EAED,MAAM,CAAC,gBAAgB,EAAE,UAAU,EAAE,WAAW,CAAC,GAAG;YAC1CA,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC;;GAE5B,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,GAAG;;gBAE3B,UAAU,EAAE,UAAU;oBAClB,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;iBAC9B,EAAE,GAAG,EAAE,CAAC;IACrB,MAAM;;IAEN;GACD,EAAE,CAAC;EACJ;CACD,EAAE,CAAC;;AAEJ,MAAM,CAAC,OAAO,GAAG,OAAO,C;;;;;;;;ACvPxB;AAAA;AAAA;;AAE8D;;;AAG9D,IAAI,IAAI,GAAG,EAAE,CAAC;;AAEd,CAAC,UAAU,CAAC,EAAE;IACV,IAAI,QAAQ,GAAG,yBAAyB,CAAC;IACzC,IAAI,OAAO,GAAG,kBAAkB,CAAC;IACjC,IAAI,UAAU,GAAG,sBAAsB,CAAC;IACxC,IAAI,aAAa,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACxC,IAAI,SAAS,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACpC,IAAI,kBAAkB,GAAG,uBAAuB,CAAC;;IAEjD,IAAI,UAAU,GAAG,iBAAiB,CAAC;IACnC,IAAI,eAAe,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC;IACvC,IAAI,qBAAqB,GAAG,IAAI,CAAC;;IAEjC,IAAI,CAAC,QAAQ,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE;;QAE/C,IAAI,CAAC,qBAAqB,EAAE;YACxB,OAAO;SACV;;QAED,CAAC,CAAC,IAAI,CAAC;YACH,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,YAAY;gBACpB,qBAAqB,GAAG,KAAK,CAAC;;gBAE9B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7B,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;oBACpC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;iBACjC;aACJ;YACD,OAAO,EAAE,UAAU,MAAM,EAAE;;;gBAGvB,IAAI,aAAa,EAAE;oBACf,aAAa,CAAC,IAAI,EAAE,YAAY;wBAC5B,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;;;wBAGhC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;4BACpB,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;4BAC7B,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;yBACnC,MAAM;4BACH,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC;4BAChC,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC;yBACtC;qBACJ,CAAC,CAAC;iBACN;;gBAED,IAAI,MAAM,CAAC,MAAM,EAAE;oBACf,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC9B,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;iBAC7B;aACJ;YACD,QAAQ,EAAE,YAAY;gBAClB,UAAU,CAAC,YAAY;oBACnB,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;;oBAE3B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC7B,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;wBAC9B,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;qBACpC;;oBAED,qBAAqB,GAAG,IAAI,CAAC;iBAChC,EAAE,IAAI,CAAC,CAAC;;;gBAGT,IAAI,CAAC,IAAI,EAAE,CAAC;aACf;YACD,KAAK,EAAE,UAAU,OAAO,EAAE;gBACtB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aAC1B;SACJ,CAAC,CAAC;KACN,CAAC;;IAEF,IAAI,CAAC,UAAU,GAAG,SAAS,MAAM,EAAE;QAC/B,IAAI,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;;QAErB,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE;;QAE/B,IAAI,MAAM,GAAG,MAAM,EAAE;;YAEjB,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC;;SAEnC,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE;;YAExB,aAAa,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,CAAC;;SAEtC;;KAEJ,CAAC;;IAEF,IAAI,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;QACxB,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,kBAAkB,EAAE,CAAC;;QAEhD,IAAI,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,GAAG,EAAE,EAAE;YACxH,IAAI,IAAI,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;;YAE7B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;SAEjD,MAAM;;YAEH,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;;YAE3C,IAAI,QAAQ,GAAG,+DAAS,CAAC,QAAQ,EAAE,IAAI,uEAAiB,CAAC,aAAa,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC;YACrF,IAAI,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,WAAW,GAAG,CAAC,CAAC;;;YAGpB,IAAI,QAAQ,EAAE;gBACV,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;aAC3H;;;YAGD,IAAI,eAAe,CAAC,MAAM,EAAE;gBACxB,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;oBACpB,SAAS,EAAE,WAAW;iBACzB,EAAE,IAAI,CAAC,CAAC;aACZ;SACJ;KACJ,CAAC;;IAEF,IAAI,CAAC,gBAAgB,GAAG,UAAU,QAAQ,EAAE,QAAQ,GAAG;QACnD,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE;;QAE1B,IAAI,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;QACxC,IAAI,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;;QAE/C,IAAI,YAAY,EAAE;YACd,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC9B;KACJ,CAAC;;IAEF,IAAI,CAAC,IAAI,GAAG,YAAY;;;QAGpB,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;YACnE,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;SACvB,CAAC,CAAC;;;QAGH,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE;YACpE,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;SAC1D,CAAC,CAAC;;;QAGH,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,iEAAiE,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE;YAC7H,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,EAAE,CAAC;SAC7E,CAAC,CAAC;;KAEN,CAAC;;IAEF,IAAI,CAAC,IAAI,EAAE,CAAC;;CAEf,CAAC,CAAC,MAAM,CAAC,CAAC;;AAEX,MAAM,CAAC,IAAI,GAAG,IAAI,C;;;;;;;AC1KlBA,4CAAG,CAAC,MAAM,GAAG,EAAE,CAAC;AAChB,mBAAO,CAAC,GAAqB,CAAC,CAAC;;;AAG/B,MAAM,CAAC,uBAAuB,GAAG,UAAU,EAAE,EAAE,OAAO,EAAE;EACtD,GAAG,CAAC,OAAO,EAAE;IACX,OAAO,GAAG,GAAG,CAAC;IACd;;GAED,GAAG,EAAE,EAAE;;;IAGN,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACjD,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;IACvC,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;IACjD,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC;IAC7C,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5B,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;;IAE7B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACtC,UAAU,CAAC,KAAK,EAAE,CAAC;;IAEnB,UAAU,CAAC,WAAW;KACrB,EAAE,CAAC,KAAK,EAAE,CAAC;KACX,EAAE,CAAC,KAAK,EAAE,CAAC;;KAEX,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;KACtC,EAAE,OAAO,CAAC,CAAC;IACZ;CACH;;AAED,MAAM,CAAC,gBAAgB,GAAG,YAAY;EACpC,IAAI,UAAU,CAAC,gCAAgC,CAAC,CAAC,OAAO,EAAE;IACxD,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;MAC/C,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;MACpC,UAAU,CAAC,YAAY;QACrB,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;UAC5C,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC;YACpB,MAAM,EAAE,CAAC,CAAC,kBAAkB,CAAC;WAC9B,CAAC,CAAC;SACJ,MAAM;UACL,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC;YACpB,MAAM,EAAE,CAAC,CAAC,YAAY,CAAC;WACxB,CAAC,CAAC;SACJ;OACF,EAAE,GAAG,CAAC,CAAC;KACT;GACF;CACF,CAAC;;AAEF,MAAM,CAAC,MAAM,GAAG,YAAY;EAC1BA,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC;EACtCA,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC;EACxCA,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC;;EAEtC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY;IACjC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;;IAEpCA,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;;IAExC,IAAI,QAAQ,EAAE;MACZ,UAAU,CAAC,YAAY;QACrB,QAAQ,CAAC,KAAK,EAAE,CAAC;OAClB,EAAE,GAAG,CAAC,CAAC;KACT;;IAED,MAAM,CAAC,gBAAgB,EAAE,CAAC;;IAE1B,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;MAChE,MAAM,CAAC,uBAAuB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;KACzD;;GAEF,CAAC,CAAC;;EAEH,WAAW,CAAC,KAAK,CAAC,YAAY;IAC5B,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IACvC,MAAM,CAAC,gBAAgB,EAAE,CAAC;GAC3B,CAAC,CAAC;CACJ;;AAED,MAAM,CAAC,UAAU,GAAG,WAAW;EAC7BA,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC;EAC1CA,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;;EAElC,aAAa,CAAC,KAAK,CAAC,YAAY;IAC9B,UAAU,EAAE,CAAC;GACd,CAAC,CAAC;;EAEH,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,UAAU,KAAK,EAAE;IACzC,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE;;MAEvB,KAAK,CAAC,cAAc,EAAE,CAAC;MACvB,UAAU,EAAE,CAAC;KACd;GACF,CAAC,CAAC;;EAEH,QAAQ,CAAC,KAAK,CAAC,YAAY;IACzB,CAAC,CAAC,kCAAkC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC,CAAC,sBAAsB,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;GAChD,CAAC,CAAC;;EAEH,SAAS,UAAU,GAAG;IACpBA,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,GAAG,EAAE,CAAC;IAC/CA,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,CAAC;;;IAGvC,CAAC,CAAC,IAAI,CAAC;MACL,GAAG,EAAE,MAAM,CAAC,OAAO;MACnB,IAAI,EAAE;QACJ,MAAM,EAAE,qBAAqB;QAC7B,UAAU,EAAE,UAAU;QACtB,IAAI,EAAE,SAAS;OAChB;MACD,IAAI,EAAE,MAAM;MACZ,QAAQ,EAAE,MAAM;MAChB,UAAU,EAAE,YAAY;QACtB,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjC,CAAC,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;OAC5C;MACD,OAAO,EAAE,UAAU,IAAI,EAAE;QACvB,IAAI,IAAI,CAAC,MAAM,EAAE;UACf,IAAI,iBAAiB,GAAG,QAAQ,CAAC,cAAc;YAC7C,iCAAiC;WAClC,CAAC;UACF,iBAAiB,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;;UAE9C,IAAI,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC;UAChE,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC;;UAEpC,CAAC,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;UAC7C,CAAC,CAAC,wBAAwB,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;UAClD,CAAC,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;SAC5C,MAAM;UACL,IAAI,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;UAC5D,IAAI,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC;UAC1C,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;UACrC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;UACjC,CAAC,CAAC,oBAAoB,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SAC/C;OACF;KACF,CAAC,CAAC;GACJ;CACF;;AAED,MAAM,CAAC,IAAI,GAAG,YAAY;EACxB,MAAM,CAAC,MAAM,EAAE,CAAC;EAChB,MAAM,CAAC,UAAU,EAAE,CAAC;CACrB,CAAC;;AAEF,MAAM,CAAC,IAAI,EAAE,CAAC;;;;;;;;;ACzJd;AAAA;AAAA;AAAA;AAC+D;;AAE/D,CAAC,SAAS,CAAC,EAAE;IACT,IAAI,QAAQ,GAAG,EAAE,CAAC;;IAElB,IAAI,WAAW,GAAG,eAAe,CAAC;IAClC,IAAI,aAAa,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,mBAAmB,EAAE,CAAC;IAC5D,IAAI,sBAAsB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,8BAA8B,EAAE,CAAC;IAChF,IAAI,uBAAuB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,oBAAoB,EAAE,CAAC;IACvE,IAAI,gBAAgB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC/D,IAAI,sBAAsB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,2BAA2B,EAAE,CAAC;IAC7E,IAAI,mBAAmB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,wBAAwB,EAAE,CAAC;IACvE,IAAI,aAAa,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,sBAAsB,EAAE,CAAC;IAC/D,IAAI,sBAAsB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,mBAAmB,EAAE,CAAC;IACrE,IAAI,gBAAgB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC/D,IAAI,uBAAuB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,4BAA4B,EAAE,CAAC;IAC/E,IAAI,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,sBAAsB,EAAE,CAAC;IACvD,IAAI,YAAY,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,sBAAsB,EAAE,CAAC;IAC9D,IAAI,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,6BAA6B,EAAE,CAAC;IACpE,IAAI,uBAAuB,GAAG,QAAQ,CAAC,cAAc,EAAE,+BAA+B,EAAE,CAAC;IACzF,IAAI,SAAS,CAAC;;;CAGjB,QAAQ,CAAC,IAAI,GAAG,WAAW;QACpB,SAAS,GAAG,IAAI,CAAC;QACjB,QAAQ,CAAC,uBAAuB,EAAE,CAAC;;;QAGnC,IAAI,oBAAoB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,kCAAkC,EAAE,CAAC;QAClF,IAAI,oBAAoB,EAAE;YACtB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,YAAY;gBAC3D,IAAI,QAAQ,GAAG,QAAQ,CAAC,4BAA4B,EAAE,CAAC;;gBAEvD,IAAI,QAAQ,KAAK,KAAK,EAAE;oBACpB,OAAO,QAAQ,CAAC;iBACnB;aACJ,CAAC,CAAC;SACN;;;QAGD,IAAI,kBAAkB,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;QAChE,IAAI,kBAAkB,EAAE;YACpB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY;gBACvD,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC;aACvC,CAAC,CAAC;SACN;;;QAGD,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE;YACjC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE;gBACrE,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;aACpC,CAAC,CAAC;SACN;;;QAGD,IAAI,YAAY,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,8BAA8B,EAAE,CAAC;QACtE,IAAI,YAAY,EAAE;YACd,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE;gBACrD,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE;;gBAEjC,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;aACtD,CAAC,CAAC;SACN;;QAED,IAAI,aAAa,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,wCAAwC,EAAE,CAAC;QACjF,IAAI,aAAa,EAAE;YACf,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE;gBAClD,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;aACtC,CAAC,CAAC;SACN;;;QAGD,IAAI,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE;YACzC,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;gBAC9E,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,QAAQ,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAC;aACzC,CAAC,CAAC;SACN;;;QAGD,IAAI,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE;YACnC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;gBACxE,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,QAAQ,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC;aACtC,CAAC,CAAC;SACN;;;QAGD,IAAI,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;YACrC,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE;gBACtE,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,QAAQ,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC;aACtC,CAAC,CAAC;SACN;;;QAGD,IAAI,cAAc,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAC1E,IAAI,cAAc,EAAE;YAChB,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;gBACrD,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,QAAQ,CAAC,oBAAoB,EAAE,sBAAsB,EAAE,CAAC;aAC3D,CAAC,CAAC;SACN;;;QAGD,IAAI,eAAe,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAC5E,IAAI,eAAe,EAAE;YACjB,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;gBACtD,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,QAAQ,CAAC,qBAAqB,EAAE,uBAAuB,EAAE,CAAC;aAC7D,CAAC,CAAC;SACN;;;QAGD,IAAI,cAAc,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,sCAAsC,EAAE,CAAC;QAChF,IAAI,cAAc,EAAE;YAChB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE;gBACnD,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;aACjE,EAAE,CAAC;SACP;;;QAGD,IAAI,YAAY,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,kCAAkC,EAAE,CAAC;QAC1E,IAAI,YAAY,EAAE;YACd,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE;gBACjD,CAAC,CAAC,cAAc,EAAE,CAAC;;gBAEnB,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aAClD,EAAE,CAAC;SACP;;;;;IAKLA,GAAG,CAAC,QAAQ,GAAG,WAAW,EAAE,YAAM;;;QAG9B,KAAK,OAAO,MAAM,CAAC,eAAe,KAAK,WAAW,GAAG;UACnD,OAAO;SACR;;QAED,aAAa,EAAE,QAAQ,EAAE,CAAC;;QAE1B,MAAM,CAAC,eAAe,EAAE,WAAW,GAAG,GAAG;UACvC,GAAG,CAAC,EAAE,EAAE;YACN,yBAAyB,EAAE,WAAW,IAAI,GAAG;;;;cAI3CA,GAAG,CAAC,OAAO,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;;cAErG,KAAK,OAAO,GAAG;gBACb,CAAC,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;eACxD;cACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;cAC5C,KAAK,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,GAAG;gBAClD,CAAC,CAAC,IAAI,EAAE;kBACN,GAAG,EAAE,0BAA0B;kBAC/B,QAAQ,EAAE,MAAM;kBAChB,IAAI,EAAE,MAAM;kBACZ,IAAI,EAAE;oBACJ,MAAM,EAAE,yBAAyB;oBACjC,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,OAAO;mBAClB;kBACD,KAAK,EAAE,WAAW,OAAO,GAAG;oBAC1B,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;mBAC1B;iBACF,EAAE,CAAC;eACL;aACF;WACF,EAAE,CAAC;SACL,EAAE,CAAC;OACL,EAAE,IAAI,EAAE,CAAC;KACX,CAAC;;IAEF,QAAQ,CAAC,uBAAuB,GAAG,WAAW;QAC1C,KAAK,CAAC,YAAY,IAAI,CAAC,WAAW,GAAG;YACjC,OAAO;SACV;;QAED,IAAI,gBAAgB,GAAG,UAAU,EAAE,gCAAgC,EAAE,CAAC,OAAO,CAAC;QAC9E,IAAI,aAAa,GAAG,SAAS,IAAI,EAAE,EAAE,EAAE;YACnC,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;;YAE9B,IAAI,OAAO,EAAE;gBACT,OAAO,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC;aACnC;SACJ,CAAC;;QAEF,KAAK,SAAS,KAAK,gBAAgB,GAAG;YAClC,IAAI,gBAAgB,EAAE;gBAClB,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;aAC9C,MAAM;gBACH,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;aAC9C;SACJ;;QAED,SAAS,GAAG,gBAAgB,CAAC;KAChC,CAAC;;CAEL,QAAQ,CAAC,UAAU,GAAG,UAAU,IAAI,GAAG;QAChC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;;QAE/B,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;;YAEvB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC;;SAE5C,MAAM;;YAEH,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;YACnD,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;YACrD,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7C,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAClC,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;YAC1C,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5C,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,EAAE,CAAC;;SAEnB;;QAED,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;KAChC,CAAC;;IAEF,QAAQ,CAAC,UAAU,GAAG,UAAU,UAAU,GAAG;QACzC,IAAI,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5C,IAAI,WAAW,GAAG,QAAQ,CAAC;;QAE3B,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;SACV;;QAED,IAAI,UAAU,EAAE;YACZ,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC;SACrC,MAAM;YACH,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;SAClC;KACJ,CAAC;;IAEF,QAAQ,CAAC,aAAa,GAAG,UAAU,KAAK,GAAG;;QAEvC,IAAI,EAAE,GAAG,wJAAwJ,CAAC;QAClK,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;KAC3B,CAAC;;IAEF,QAAQ,CAAC,4BAA4B,GAAG,WAAW;;QAE/C,IAAI,QAAQ,GAAG,KAAK,CAAC;;QAErB,IAAI,UAAU,GAAG;YACb,OAAO;YACP,aAAa;YACb,WAAW;YACX,UAAU;YACV,UAAU;YACV,MAAM;YACN,SAAS;YACT,oBAAoB,CACxB,CAAC,CAAC;;QAEF,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,KAAK,EAAE,KAAK,GAAG;;YAE1C,IAAI,SAAS,GAAG,CAAC,EAAE,WAAW,GAAG,KAAK,GAAG,UAAU,EAAE,CAAC;;YAEtD,SAAS,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC;;YAEtC,KAAK,OAAO,EAAE,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,WAAW,GAAG;;gBAE9C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG;oBACpB,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC;oBACnC,QAAQ,GAAG,IAAI,CAAC;iBACnB,MAAM,KAAK,KAAK,KAAK,OAAO,GAAG;oBAC5B,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG;wBAC9C,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC;wBACnC,QAAQ,GAAG,IAAI,CAAC;qBACnB;iBACJ,MAAM,KAAK,KAAK,KAAK,oBAAoB,GAAG;oBACzC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG;wBAC7B,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC;wBACnC,QAAQ,GAAG,IAAI,CAAC;qBACnB;iBACJ;aACJ;SACJ,EAAE,CAAC;;;QAGJ,KAAK,QAAQ,GAAG;YACZ,OAAO,KAAK,CAAC;SAChB;;;QAGD,IAAI,OAAO,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,CAAC;QAC1C,IAAI,KAAK,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,EAAE,CAAC;;IAE1C,IAAI,uBAAuB,CAAC,KAAK,IAAI,CAAC,CAAC;MACrC,CAAC,CAAC,IAAI,EAAE;QACN,GAAG,EAAE,0BAA0B;QAC/B,QAAQ,EAAE,MAAM;QAChB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE;UACJ,MAAM,EAAE,yBAAyB;UACjC,KAAK,EAAE,KAAK;UACZ,QAAQ,GAAG,OAAO;SACnB;QACD,KAAK,EAAE,WAAW,OAAO,GAAG;UAC1B,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;SAC1B;OACF,EAAE,CAAC;KACL;KACA,CAAC;;IAEF,QAAQ,CAAC,YAAY,GAAG,UAAU,EAAE,GAAG;QACnC,KAAK,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE;;QAEtB,CAAC,CAAC,IAAI,CAAC;YACH,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,MAAM;YAChB,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE;YACtB,UAAU,EAAE,WAAW;gBACnB,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;aAC/B;YACD,OAAO,EAAE,SAAS,IAAI,EAAE;;gBAEpB,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,GAAG;oBACxB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC;iBAC5C,MAAM;oBACH,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;iBAC/B;;aAEJ;YACD,KAAK,EAAE,UAAU,OAAO,EAAE;gBACtB,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;gBAC7B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aAC1B;SACJ,CAAC,CAAC;KACN,CAAC;;IAEF,QAAQ,CAAC,oBAAoB,GAAG,WAAW,OAAO,GAAG;QACjD,IAAI,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,CAAC;;QAE1D,IAAI,QAAQ,GAAG,CAAC,EAAE,eAAe,EAAE,CAAC,SAAS,EAAE,CAAC;;QAEhD,QAAQ,IAAI,kBAAkB,GAAG,YAAY,GAAG,SAAS,CAAC;;QAE1D,OAAO,CAAC,GAAG,EAAE,sBAAsB,EAAE,CAAC;;QAEtC,CAAC,CAAC,IAAI,EAAE;YACJ,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,WAAW;gBACnB,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;aAC/B;YACD,OAAO,EAAE,WAAW,IAAI,GAAG;gBACvB,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;gBAC7B,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;aAC/B;YACD,KAAK,EAAE,WAAW,KAAK,GAAG;gBACtB,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;aACxB;SACJ,EAAE,CAAC;KACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCJ,QAAQ,CAAC,cAAc,GAAG,UAAU,OAAO,GAAG;EAC7C,IAAI,QAAQ,GAAG,CAAC,EAAE,eAAe,EAAE,CAAC,SAAS,EAAE,CAAC;EAChD,IAAI,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACtC,IAAI,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;EAExC,QAAQ,IAAI,GAAG,GAAG,UAAU,GAAG,GAAG,GAAG,WAAW,GAAG,SAAS,CAAC;;;EAG7D,CAAC,CAAC,IAAI,EAAE;GACP,IAAI,EAAE,QAAQ;GACd,IAAI,EAAE,MAAM;YACH,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,WAAW;gBACnB,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;aAC/B;GACV,OAAO,EAAE,SAAS,IAAI,EAAE;IACvB,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;aACnB;YACD,KAAK,EAAE,UAAU,OAAO,EAAE;gBACtB,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;gBAC7B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aAC1B;GACV,EAAE,CAAC;EACJ,CAAC;;IAEC,QAAQ,CAAC,oBAAoB,GAAG,WAAW,WAAW,EAAE,KAAK,EAAE,UAAU,GAAG;QACxE,OAAO,CAAC,GAAG,EAAE,sBAAsB,EAAE,CAAC;;QAEtC,IAAI,QAAQ,GAAG,+BAA+B,CAAC;;QAE/C,KAAK,CAAC,KAAK,GAAG;YACV,KAAK,GAAG,EAAE,CAAC;SACd;;QAED,QAAQ,IAAI,eAAe,GAAG,WAAW,GAAG,SAAS,CAAC;QACtD,QAAQ,IAAI,kBAAkB,GAAG,KAAK,CAAC;;;QAGvC,CAAC,CAAC,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,WAAW;gBACnB,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;aAC/B;YACD,OAAO,EAAE,WAAW,IAAI,GAAG;gBACvB,KAAK,UAAU,GAAG;oBACd,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;iBAClC,MAAM;oBACH,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;iBAC/B;aACJ;YACD,KAAK,EAAE,WAAW,OAAO,GAAG;gBACxB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;gBAC/B,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;aAC5B;SACJ,EAAE,CAAC;KACP,CAAC;;IAEF,QAAQ,CAAC,kBAAkB,GAAG,UAAU,KAAK,EAAE;QAC3C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;;;QAGlC,CAAC,CAAC,IAAI,EAAE;UACN,GAAG,EAAE,0BAA0B;UAC/B,IAAI,EAAE;YACJ,MAAM,EAAE,sBAAsB;YAC9B,KAAK,EAAE,KAAK;WACb;UACD,IAAI,EAAE,MAAM;UACZ,QAAQ,EAAE,MAAM;UAChB,UAAU,EAAE,YAAY;YACtB,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;WAC3B;UACD,OAAO,EAAE,WAAW,IAAI,GAAG;YACzB,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;WAC3B;SACF,EAAE,CAAC;OACL,CAAC;;IAEJ,QAAQ,CAAC,qBAAqB,GAAG,UAAU,OAAO,GAAG;;QAEjD,IAAI,aAAa,GAAG,OAAO,CAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,CAAC;;QAE3D,IAAI,QAAQ,GAAG,CAAC,EAAE,eAAe,EAAE,CAAC,SAAS,EAAE,CAAC;;QAEhD,QAAQ,IAAI,mBAAmB,GAAG,aAAa,GAAG,SAAS,CAAC;;QAE5D,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;;QAErC,CAAC,CAAC,IAAI,EAAE;YACJ,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,WAAW;gBACnB,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;aAC/B;YACD,OAAO,EAAE,WAAW,IAAI,GAAG;gBACvB,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;aAC/B;YACD,KAAK,EAAE,UAAU,OAAO,EAAE;gBACtB,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;gBAC7B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aAC1B;SACJ,EAAE,CAAC;;KAEP,CAAC;;IAEF,QAAQ,CAAC,cAAc,GAAG,UAAU,MAAM,GAAG;;QAEzC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;;QAE5B,IAAI,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,mBAAmB,EAAE,CAAC,MAAM,CAAC;QAC7D,IAAI,IAAI,GAAG,CAAC,EAAE,eAAe,EAAE,CAAC;QAChC,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,0BAA0B,EAAE,CAAC,GAAG,EAAE,CAAC;;QAE5D,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW;YACzB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,GAAG;gBAC1B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;aACxB;SACJ,CAAC,CAAC;;QAEH,QAAQ,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;;QAE/B,IAAI,KAAK,KAAK,CAAC,GAAG;YACd,QAAQ,IAAI,8BAA8B,CAAC;SAC9C;;QAED,QAAQ,KAAK,iBAAiB,EAAE,GAAG,GAAG,KAAK,EAAE,SAAS,CAAC;;;QAGvD,CAAC,CAAC,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,WAAW;gBACnB,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;aAC/B;YACD,OAAO,EAAE,UAAU,IAAI,GAAG;gBACtB,IAAI,MAAM,KAAK,OAAO,GAAG;oBACrB,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;iBAC/B;aACJ;YACD,KAAK,EAAE,UAAU,OAAO,EAAE;gBACtB,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;gBAC7B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aAC1B;SACJ,EAAE,CAAC;KACP,CAAC;;;CAGL,QAAQ,CAAC,iBAAiB,GAAG,UAAU,MAAM,GAAG;QACzC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;;EAEhC,IAAI,KAAK,GAAG,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,EAAE,CAAC,MAAM,CAAC;QAC7D,IAAI,IAAI,GAAG,CAAC,EAAE,eAAe,EAAE,CAAC;QAChC,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,0BAA0B,EAAE,CAAC,GAAG,EAAE,CAAC;;QAE5D,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW;YACxB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,GAAG;gBAC1B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;aACxB;SACJ,CAAC,CAAC;;QAEH,QAAQ,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;;QAE/B,IAAI,KAAK,KAAK,CAAC,GAAG;YACd,QAAQ,IAAI,wBAAwB,CAAC;SACxC;;QAED,QAAQ,KAAK,oBAAoB,EAAE,GAAG,GAAG,KAAK,EAAE,SAAS,CAAC;;;QAG1D,CAAC,CAAC,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,WAAW;gBACnB,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;aAC/B;YACD,OAAO,EAAE,UAAU,IAAI,GAAG;gBACtB,IAAI,MAAM,KAAK,OAAO,GAAG;oBACrB,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;iBAC/B;aACJ;YACD,KAAK,EAAE,UAAU,OAAO,EAAE;gBACtB,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;gBAC7B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aAC1B;SACJ,EAAE,CAAC;KACP,CAAC;;IAEF,QAAQ,CAAC,YAAY,GAAG,WAAW;QAC/B,IAAI,eAAe,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC;QAChD,IAAI,cAAc,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC;QAC9C,IAAI,YAAY,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAC1C,MAAM,CAAC,QAAQ,GAAG,YAAY;YAC1B,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,IAAI,GAAG,EAAE;gBAC/B,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,IAAI,QAAQ,CAAC,eAAe,CAAC,SAAS,GAAG,EAAE,EAAE;oBACzE,cAAc,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;oBAC1C,cAAc,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;oBAC7C,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;oBACtC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC5B,QAAQ,CAAC,OAAO,EAAE,CAAC;qBACtB;iBACJ,MAAM;oBACH,cAAc,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;oBAC1C,cAAc,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;oBAC7C,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;iBACzC;aACJ;;iBAEI;gBACD,cAAc,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;gBAC1C,cAAc,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;gBAC7C,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;aACzC;SACJ,CAAC;KACL;;IAED,QAAQ,CAAC,OAAO,GAAG,WAAW;QAC1B,IAAI,iBAAiB,CAAC;;;;;;QAMtB,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACjC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,IAAI,IAAI,EAAE;;;;;;;;gBAQhC,iBAAiB,GAAG,GAAG,CAAC;aAC3B,MAAM;;;;;;;;gBAQH,iBAAiB,GAAG,GAAG,CAAC;aAC3B;SACJ,MAAM;;YAEH,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,IAAI,IAAI,EAAE;;;;;;;;gBAQhC,iBAAiB,GAAG,GAAG,CAAC;aAC3B,MAAM;;;;;;;;gBAQH,iBAAiB,GAAG,GAAG,EAAE;aAC5B;SACJ;;QAED,IAAI,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;QAC7D,IAAI,0EAAa,CAAC,OAAO,EAAE;YACvB,UAAU,EAAE,iBAAiB;YAC7B,iBAAiB,EAAE,YAAY;YAC/B,oBAAoB,EAAE,iBAAiB;YACvC,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC;KACN;;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QAClB,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,WAAW;YAC1B,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChB,QAAQ,CAAC,YAAY,EAAE,CAAC;SAC3B,EAAE,CAAC;;QAEJ,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,YAAY;YAC1B,QAAQ,CAAC,uBAAuB,EAAE,CAAC;YACnC,QAAQ,CAAC,YAAY,EAAE,CAAC;SAC3B,EAAE,CAAC;KACP;;SAEI;QACD,QAAQ,CAAC,YAAY,EAAE,CAAC;KAC3B;;CAEJ,CAAC,CAAC,MAAM,CAAC,CAAC;;;;;;;;ACvrBX;AACA,CAAC,KAA4D;AAC7D;AACA;AACA,CAAC,qBAAqB;;AAEtB,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,eAAe,mBAAmB;AAClC,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA,iDAAiD,gCAAgC;AACjF,iDAAiD,gCAAgC;;AAEjF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,OAAO;AACxB;;AAEA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAa;AAC/B;;AAEA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,kBAAkB;AAClB;;AAEA,KAAK;AACL;AACA;AACA;;AAEA,qBAAqB,UAAU,WAAW;AAC1C;;AAEA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;;AAEA,0CAA0C,wBAAwB,oBAAoB;AACtF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;;AAEA,4CAA4C,2BAA2B;AACvE,4CAA4C;AAC5C,kEAAkE;;AAElE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,wGAAwG;;AAExG;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,kBAAkB;AAClB;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA,4FAA4F,0EAA0E;AACtK;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA,oDAAoD,iBAAiB;AACrE,oDAAoD,iBAAiB;;AAErE;AACA;;AAEA;;AAEA,0BAA0B,UAAU,WAAW;;AAE/C,4BAA4B;AAC5B,4BAA4B;;AAE5B;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB,kBAAkB;AAClB;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,UAAU;AAC3B,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB;;AAEA,KAAK;AACL;AACA;AACA;AACA,kDAAkD,eAAe;AACjE,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA,+EAA+E;AAC/E;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,UAAU;AAC3B,iBAAiB,OAAO;AACxB;;AAEA,KAAK;AACL;AACA;AACA;AACA,kEAAkE;AAClE;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,UAAU;AAC3B,iBAAiB,OAAO;AACxB;;AAEA,KAAK;AACL;AACA;AA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","file":"scripts/main.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/wp-content/themes/stinaaj/dist/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 111);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap e0592bba9aec2e209f47","module.exports = jQuery;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"jQuery\"\n// module id = 0\n// module chunks = 0 1 2","/**\n * SSR Window 4.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/ssr-window/ssr-window.esm.js\n// module id = 1\n// module chunks = 0 1","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/dom.js\n// module id = 2\n// module chunks = 0 1","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/utils.js\n// module id = 3\n// module chunks = 0 1","export default function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/effect-init.js\n// module id = 4\n// module chunks = 0 1","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden'\n });\n }\n\n return $slideEl;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/effect-target.js\n// module id = 5\n// module chunks = 0 1","export default function effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides\n}) {\n const {\n slides,\n activeIndex,\n $wrapperEl\n } = swiper;\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);\n }\n\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/effect-virtual-transition-end.js\n// module id = 6\n// module chunks = 0 1","import $ from './dom.js';\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`<div class=\"swiper-slide-shadow${side ? `-${side}` : ''}\"></div>`);\n $shadowContainer.append($shadowEl);\n }\n\n return $shadowEl;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/create-shadow.js\n// module id = 7\n// module chunks = 0 1","/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n'use strict';\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) {\n return [];\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n clearTimeout( timeout );\n\n var args = arguments;\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( callback );\n } else {\n document.addEventListener( 'DOMContentLoaded', callback );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n var dashedNamespace = utils.toDashed( namespace );\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n var elems = utils.makeArray( dataAttrElems )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\n// ----- ----- //\n\nreturn utils;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/fizzy-ui-utils/utils.js\n// module id = 8\n// module chunks = 0","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/create-element-if-not-defined.js\n// module id = 9\n// module chunks = 0 1","// Flickity main\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './cell',\n './slide',\n './animate'\n ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\n return factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./cell'),\n require('./slide'),\n require('./animate')\n );\n } else {\n // browser global\n var _Flickity = window.Flickity;\n\n window.Flickity = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n _Flickity.Cell,\n _Flickity.Slide,\n _Flickity.animatePrototype\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize,\n utils, Cell, Slide, animatePrototype ) {\n\n'use strict';\n\n// vars\nvar jQuery = window.jQuery;\nvar getComputedStyle = window.getComputedStyle;\nvar console = window.console;\n\nfunction moveElements( elems, toElem ) {\n elems = utils.makeArray( elems );\n while ( elems.length ) {\n toElem.appendChild( elems.shift() );\n }\n}\n\n// -------------------------- Flickity -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Flickity intances\nvar instances = {};\n\nfunction Flickity( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // do not initialize twice on same element\n if ( this.element.flickityGUID ) {\n var instance = instances[ this.element.flickityGUID ];\n instance.option( options );\n return instance;\n }\n\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // kick things off\n this._create();\n}\n\nFlickity.defaults = {\n accessibility: true,\n // adaptiveHeight: false,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075, // friction when free-scrolling\n friction: 0.28, // friction when selecting\n namespaceJQueryEvents: true,\n // initialIndex: 0,\n percentPosition: true,\n resize: true,\n selectedAttraction: 0.025,\n setGallerySize: true\n // watchCSS: false,\n // wrapAround: false\n};\n\n// hash of methods triggered on _create()\nFlickity.createMethods = [];\n\nvar proto = Flickity.prototype;\n// inherit EventEmitter\nutils.extend( proto, EvEmitter.prototype );\n\nproto._create = function() {\n // add id for Flickity.data\n var id = this.guid = ++GUID;\n this.element.flickityGUID = id; // expando\n instances[ id ] = this; // associate via id\n // initial properties\n this.selectedIndex = 0;\n // how many frames slider has been in same position\n this.restingFrames = 0;\n // initial physics properties\n this.x = 0;\n this.velocity = 0;\n this.originSide = this.options.rightToLeft ? 'right' : 'left';\n // create viewport & slider\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n this._createSlider();\n\n if ( this.options.resize || this.options.watchCSS ) {\n window.addEventListener( 'resize', this );\n }\n\n // add listeners from on option\n for ( var eventName in this.options.on ) {\n var listener = this.options.on[ eventName ];\n this.on( eventName, listener );\n }\n\n Flickity.createMethods.forEach( function( method ) {\n this[ method ]();\n }, this );\n\n if ( this.options.watchCSS ) {\n this.watchCSS();\n } else {\n this.activate();\n }\n\n};\n\n/**\n * set options\n * @param {Object} opts\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\nproto.activate = function() {\n if ( this.isActive ) {\n return;\n }\n this.isActive = true;\n this.element.classList.add('flickity-enabled');\n if ( this.options.rightToLeft ) {\n this.element.classList.add('flickity-rtl');\n }\n\n this.getSize();\n // move initial cell elements so they can be loaded as cells\n var cellElems = this._filterFindCellElements( this.element.children );\n moveElements( cellElems, this.slider );\n this.viewport.appendChild( this.slider );\n this.element.appendChild( this.viewport );\n // get cells from children\n this.reloadCells();\n\n if ( this.options.accessibility ) {\n // allow element to focusable\n this.element.tabIndex = 0;\n // listen for key presses\n this.element.addEventListener( 'keydown', this );\n }\n\n this.emitEvent('activate');\n this.selectInitialIndex();\n // flag for initial activation, for using initialIndex\n this.isInitActivated = true;\n // ready event. #493\n this.dispatchEvent('ready');\n};\n\n// slider positions the cells\nproto._createSlider = function() {\n // slider element does all the positioning\n var slider = document.createElement('div');\n slider.className = 'flickity-slider';\n slider.style[ this.originSide ] = 0;\n this.slider = slider;\n};\n\nproto._filterFindCellElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.cellSelector );\n};\n\n// goes through all children\nproto.reloadCells = function() {\n // collection of item elements\n this.cells = this._makeCells( this.slider.children );\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n};\n\n/**\n * turn elements into Flickity.Cells\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - collection of new Flickity Cells\n */\nproto._makeCells = function( elems ) {\n var cellElems = this._filterFindCellElements( elems );\n\n // create new Flickity for collection\n var cells = cellElems.map( function( cellElem ) {\n return new Cell( cellElem, this );\n }, this );\n\n return cells;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.getLastSlide = function() {\n return this.slides[ this.slides.length - 1 ];\n};\n\n// positions all cells\nproto.positionCells = function() {\n // size all cells\n this._sizeCells( this.cells );\n // position all cells\n this._positionCells( 0 );\n};\n\n/**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\nproto._positionCells = function( index ) {\n index = index || 0;\n // also measure maxCellHeight\n // start 0 if positioning all cells\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n var cellX = 0;\n // get cellX\n if ( index > 0 ) {\n var startCell = this.cells[ index - 1 ];\n cellX = startCell.x + startCell.size.outerWidth;\n }\n var len = this.cells.length;\n for ( var i=index; i < len; i++ ) {\n var cell = this.cells[i];\n cell.setPosition( cellX );\n cellX += cell.size.outerWidth;\n this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );\n }\n // keep track of cellX for wrap-around\n this.slideableWidth = cellX;\n // slides\n this.updateSlides();\n // contain slides target\n this._containSlides();\n // update slidesWidth\n this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n};\n\n/**\n * cell.getSize() on multiple cells\n * @param {Array} cells\n */\nproto._sizeCells = function( cells ) {\n cells.forEach( function( cell ) {\n cell.getSize();\n });\n};\n\n// -------------------------- -------------------------- //\n\nproto.updateSlides = function() {\n this.slides = [];\n if ( !this.cells.length ) {\n return;\n }\n\n var slide = new Slide( this );\n this.slides.push( slide );\n var isOriginLeft = this.originSide == 'left';\n var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\n\n var canCellFit = this._getCanCellFit();\n\n this.cells.forEach( function( cell, i ) {\n // just add cell if first cell in slide\n if ( !slide.cells.length ) {\n slide.addCell( cell );\n return;\n }\n\n var slideWidth = ( slide.outerWidth - slide.firstMargin ) +\n ( cell.size.outerWidth - cell.size[ nextMargin ] );\n\n if ( canCellFit.call( this, i, slideWidth ) ) {\n slide.addCell( cell );\n } else {\n // doesn't fit, new slide\n slide.updateTarget();\n\n slide = new Slide( this );\n this.slides.push( slide );\n slide.addCell( cell );\n }\n }, this );\n // last slide\n slide.updateTarget();\n // update .selectedSlide\n this.updateSelectedSlide();\n};\n\nproto._getCanCellFit = function() {\n var groupCells = this.options.groupCells;\n if ( !groupCells ) {\n return function() {\n return false;\n };\n } else if ( typeof groupCells == 'number' ) {\n // group by number. 3 -> [0,1,2], [3,4,5], ...\n var number = parseInt( groupCells, 10 );\n return function( i ) {\n return ( i % number ) !== 0;\n };\n }\n // default, group by width of slide\n // parse '75%\n var percentMatch = typeof groupCells == 'string' &&\n groupCells.match(/^(\\d+)%$/);\n var percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;\n return function( i, slideWidth ) {\n return slideWidth <= ( this.size.innerWidth + 1 ) * percent;\n };\n};\n\n// alias _init for jQuery plugin .flickity()\nproto._init =\nproto.reposition = function() {\n this.positionCells();\n this.positionSliderAtSelected();\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n this.setCellAlign();\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\n};\n\nvar cellAlignShorthands = {\n // cell align, then based on origin side\n center: {\n left: 0.5,\n right: 0.5\n },\n left: {\n left: 0,\n right: 1\n },\n right: {\n right: 0,\n left: 1\n }\n};\n\nproto.setCellAlign = function() {\n var shorthand = cellAlignShorthands[ this.options.cellAlign ];\n this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\n};\n\nproto.setGallerySize = function() {\n if ( this.options.setGallerySize ) {\n var height = this.options.adaptiveHeight && this.selectedSlide ?\n this.selectedSlide.height : this.maxCellHeight;\n this.viewport.style.height = height + 'px';\n }\n};\n\nproto._getWrapShiftCells = function() {\n // only for wrap-around\n if ( !this.options.wrapAround ) {\n return;\n }\n // unshift previous cells\n this._unshiftCells( this.beforeShiftCells );\n this._unshiftCells( this.afterShiftCells );\n // get before cells\n // initial gap\n var gapX = this.cursorPosition;\n var cellIndex = this.cells.length - 1;\n this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\n // get after cells\n // ending gap between last cell and end of gallery viewport\n gapX = this.size.innerWidth - this.cursorPosition;\n // start cloning at first cell, working forwards\n this.afterShiftCells = this._getGapCells( gapX, 0, 1 );\n};\n\nproto._getGapCells = function( gapX, cellIndex, increment ) {\n // keep adding cells until the cover the initial gap\n var cells = [];\n while ( gapX > 0 ) {\n var cell = this.cells[ cellIndex ];\n if ( !cell ) {\n break;\n }\n cells.push( cell );\n cellIndex += increment;\n gapX -= cell.size.outerWidth;\n }\n return cells;\n};\n\n// ----- contain ----- //\n\n// contain cell targets so no excess sliding\nproto._containSlides = function() {\n if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\n return;\n }\n var isRightToLeft = this.options.rightToLeft;\n var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\n var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\n var contentWidth = this.slideableWidth - this.getLastCell().size[ endMargin ];\n // content is less than gallery size\n var isContentSmaller = contentWidth < this.size.innerWidth;\n // bounds\n var beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];\n var endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\n // contain each cell target\n this.slides.forEach( function( slide ) {\n if ( isContentSmaller ) {\n // all cells fit inside gallery\n slide.target = contentWidth * this.cellAlign;\n } else {\n // contain to bounds\n slide.target = Math.max( slide.target, beginBound );\n slide.target = Math.min( slide.target, endBound );\n }\n }, this );\n};\n\n// ----- ----- //\n\n/**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\n if ( jQuery && this.$element ) {\n // default trigger with type if no event\n type += this.options.namespaceJQueryEvents ? '.flickity' : '';\n var $event = type;\n if ( event ) {\n // create jQuery event\n var jQEvent = jQuery.Event( event );\n jQEvent.type = type;\n $event = jQEvent;\n }\n this.$element.trigger( $event, args );\n }\n};\n\n// -------------------------- select -------------------------- //\n\n/**\n * @param {Integer} index - index of the slide\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\n * @param {Boolean} isInstant - will immediately set position at selected cell\n */\nproto.select = function( index, isWrap, isInstant ) {\n if ( !this.isActive ) {\n return;\n }\n index = parseInt( index, 10 );\n this._wrapSelect( index );\n\n if ( this.options.wrapAround || isWrap ) {\n index = utils.modulo( index, this.slides.length );\n }\n // bail if invalid index\n if ( !this.slides[ index ] ) {\n return;\n }\n var prevIndex = this.selectedIndex;\n this.selectedIndex = index;\n this.updateSelectedSlide();\n if ( isInstant ) {\n this.positionSliderAtSelected();\n } else {\n this.startAnimation();\n }\n if ( this.options.adaptiveHeight ) {\n this.setGallerySize();\n }\n // events\n this.dispatchEvent( 'select', null, [ index ] );\n // change event if new index\n if ( index != prevIndex ) {\n this.dispatchEvent( 'change', null, [ index ] );\n }\n // old v1 event name, remove in v3\n this.dispatchEvent('cellSelect');\n};\n\n// wraps position for wrapAround, to move to closest slide. #113\nproto._wrapSelect = function( index ) {\n var len = this.slides.length;\n var isWrapping = this.options.wrapAround && len > 1;\n if ( !isWrapping ) {\n return index;\n }\n var wrapIndex = utils.modulo( index, len );\n // go to shortest\n var delta = Math.abs( wrapIndex - this.selectedIndex );\n var backWrapDelta = Math.abs( ( wrapIndex + len ) - this.selectedIndex );\n var forewardWrapDelta = Math.abs( ( wrapIndex - len ) - this.selectedIndex );\n if ( !this.isDragSelect && backWrapDelta < delta ) {\n index += len;\n } else if ( !this.isDragSelect && forewardWrapDelta < delta ) {\n index -= len;\n }\n // wrap position so slider is within normal area\n if ( index < 0 ) {\n this.x -= this.slideableWidth;\n } else if ( index >= len ) {\n this.x += this.slideableWidth;\n }\n};\n\nproto.previous = function( isWrap, isInstant ) {\n this.select( this.selectedIndex - 1, isWrap, isInstant );\n};\n\nproto.next = function( isWrap, isInstant ) {\n this.select( this.selectedIndex + 1, isWrap, isInstant );\n};\n\nproto.updateSelectedSlide = function() {\n var slide = this.slides[ this.selectedIndex ];\n // selectedIndex could be outside of slides, if triggered before resize()\n if ( !slide ) {\n return;\n }\n // unselect previous selected slide\n this.unselectSelectedSlide();\n // update new selected slide\n this.selectedSlide = slide;\n slide.select();\n this.selectedCells = slide.cells;\n this.selectedElements = slide.getCellElements();\n // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n // Remove in v3?\n this.selectedCell = slide.cells[0];\n this.selectedElement = this.selectedElements[0];\n};\n\nproto.unselectSelectedSlide = function() {\n if ( this.selectedSlide ) {\n this.selectedSlide.unselect();\n }\n};\n\nproto.selectInitialIndex = function() {\n var initialIndex = this.options.initialIndex;\n // already activated, select previous selectedIndex\n if ( this.isInitActivated ) {\n this.select( this.selectedIndex, false, true );\n return;\n }\n // select with selector string\n if ( initialIndex && typeof initialIndex == 'string' ) {\n var cell = this.queryCell( initialIndex );\n if ( cell ) {\n this.selectCell( initialIndex, false, true );\n return;\n }\n }\n\n var index = 0;\n // select with number\n if ( initialIndex && this.slides[ initialIndex ] ) {\n index = initialIndex;\n }\n // select instantly\n this.select( index, false, true );\n};\n\n/**\n * select slide from number or cell element\n * @param {Element or Number} elem\n */\nproto.selectCell = function( value, isWrap, isInstant ) {\n // get cell\n var cell = this.queryCell( value );\n if ( !cell ) {\n return;\n }\n\n var index = this.getCellSlideIndex( cell );\n this.select( index, isWrap, isInstant );\n};\n\nproto.getCellSlideIndex = function( cell ) {\n // get index of slides that has cell\n for ( var i=0; i < this.slides.length; i++ ) {\n var slide = this.slides[i];\n var index = slide.cells.indexOf( cell );\n if ( index != -1 ) {\n return i;\n }\n }\n};\n\n// -------------------------- get cells -------------------------- //\n\n/**\n * get Flickity.Cell, given an Element\n * @param {Element} elem\n * @returns {Flickity.Cell} item\n */\nproto.getCell = function( elem ) {\n // loop through cells to get the one that matches\n for ( var i=0; i < this.cells.length; i++ ) {\n var cell = this.cells[i];\n if ( cell.element == elem ) {\n return cell;\n }\n }\n};\n\n/**\n * get collection of Flickity.Cells, given Elements\n * @param {Element, Array, NodeList} elems\n * @returns {Array} cells - Flickity.Cells\n */\nproto.getCells = function( elems ) {\n elems = utils.makeArray( elems );\n var cells = [];\n elems.forEach( function( elem ) {\n var cell = this.getCell( elem );\n if ( cell ) {\n cells.push( cell );\n }\n }, this );\n return cells;\n};\n\n/**\n * get cell elements\n * @returns {Array} cellElems\n */\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n });\n};\n\n/**\n * get parent cell from an element\n * @param {Element} elem\n * @returns {Flickit.Cell} cell\n */\nproto.getParentCell = function( elem ) {\n // first check if elem is cell\n var cell = this.getCell( elem );\n if ( cell ) {\n return cell;\n }\n // try to get parent cell elem\n elem = utils.getParent( elem, '.flickity-slider > *' );\n return this.getCell( elem );\n};\n\n/**\n * get cells adjacent to a slide\n * @param {Integer} adjCount - number of adjacent slides\n * @param {Integer} index - index of slide to start\n * @returns {Array} cells - array of Flickity.Cells\n */\nproto.getAdjacentCellElements = function( adjCount, index ) {\n if ( !adjCount ) {\n return this.selectedSlide.getCellElements();\n }\n index = index === undefined ? this.selectedIndex : index;\n\n var len = this.slides.length;\n if ( 1 + ( adjCount * 2 ) >= len ) {\n return this.getCellElements();\n }\n\n var cellElems = [];\n for ( var i = index - adjCount; i <= index + adjCount ; i++ ) {\n var slideIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;\n var slide = this.slides[ slideIndex ];\n if ( slide ) {\n cellElems = cellElems.concat( slide.getCellElements() );\n }\n }\n return cellElems;\n};\n\n/**\n * select slide from number or cell element\n * @param {Element, Selector String, or Number} selector\n */\nproto.queryCell = function( selector ) {\n if ( typeof selector == 'number' ) {\n // use number as index\n return this.cells[ selector ];\n }\n if ( typeof selector == 'string' ) {\n // do not select invalid selectors from hash: #123, #/. #791\n if ( selector.match(/^[#\\.]?[\\d\\/]/) ) {\n return;\n }\n // use string as selector, get element\n selector = this.element.querySelector( selector );\n }\n // get cell from element\n return this.getCell( selector );\n};\n\n// -------------------------- events -------------------------- //\n\nproto.uiChange = function() {\n this.emitEvent('uiChange');\n};\n\n// keep focus on element when child UI elements are clicked\nproto.childUIPointerDown = function( event ) {\n // HACK iOS does not allow touch events to bubble up?!\n if ( event.type != 'touchstart' ) {\n event.preventDefault();\n }\n this.focus();\n};\n\n// ----- resize ----- //\n\nproto.onresize = function() {\n this.watchCSS();\n this.resize();\n};\n\nutils.debounceMethod( Flickity, 'onresize', 150 );\n\nproto.resize = function() {\n if ( !this.isActive ) {\n return;\n }\n this.getSize();\n // wrap values\n if ( this.options.wrapAround ) {\n this.x = utils.modulo( this.x, this.slideableWidth );\n }\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n this.emitEvent('resize');\n // update selected index for group slides, instant\n // TODO: position can be lost between groups of various numbers\n var selectedElement = this.selectedElements && this.selectedElements[0];\n this.selectCell( selectedElement, false, true );\n};\n\n// watches the :after property, activates/deactivates\nproto.watchCSS = function() {\n var watchOption = this.options.watchCSS;\n if ( !watchOption ) {\n return;\n }\n\n var afterContent = getComputedStyle( this.element, ':after' ).content;\n // activate if :after { content: 'flickity' }\n if ( afterContent.indexOf('flickity') != -1 ) {\n this.activate();\n } else {\n this.deactivate();\n }\n};\n\n// ----- keydown ----- //\n\n// go previous/next if left/right keys pressed\nproto.onkeydown = function( event ) {\n // only work if element is in focus\n var isNotFocused = document.activeElement && document.activeElement != this.element;\n if ( !this.options.accessibility ||isNotFocused ) {\n return;\n }\n\n var handler = Flickity.keyboardHandlers[ event.keyCode ];\n if ( handler ) {\n handler.call( this );\n }\n};\n\nFlickity.keyboardHandlers = {\n // left arrow\n 37: function() {\n var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n this.uiChange();\n this[ leftMethod ]();\n },\n // right arrow\n 39: function() {\n var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n this.uiChange();\n this[ rightMethod ]();\n },\n};\n\n// ----- focus ----- //\n\nproto.focus = function() {\n // TODO remove scrollTo once focus options gets more support\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#Browser_compatibility\n var prevScrollY = window.pageYOffset;\n this.element.focus({ preventScroll: true });\n // hack to fix scroll jump after focus, #76\n if ( window.pageYOffset != prevScrollY ) {\n window.scrollTo( window.pageXOffset, prevScrollY );\n }\n};\n\n// -------------------------- destroy -------------------------- //\n\n// deactivate all Flickity functionality, but keep stuff available\nproto.deactivate = function() {\n if ( !this.isActive ) {\n return;\n }\n this.element.classList.remove('flickity-enabled');\n this.element.classList.remove('flickity-rtl');\n this.unselectSelectedSlide();\n // destroy cells\n this.cells.forEach( function( cell ) {\n cell.destroy();\n });\n this.element.removeChild( this.viewport );\n // move child elements back into element\n moveElements( this.slider.children, this.element );\n if ( this.options.accessibility ) {\n this.element.removeAttribute('tabIndex');\n this.element.removeEventListener( 'keydown', this );\n }\n // set flags\n this.isActive = false;\n this.emitEvent('deactivate');\n};\n\nproto.destroy = function() {\n this.deactivate();\n window.removeEventListener( 'resize', this );\n this.allOff();\n this.emitEvent('destroy');\n if ( jQuery && this.$element ) {\n jQuery.removeData( this.element, 'flickity' );\n }\n delete this.element.flickityGUID;\n delete instances[ this.guid ];\n};\n\n// -------------------------- prototype -------------------------- //\n\nutils.extend( proto, animatePrototype );\n\n// -------------------------- extras -------------------------- //\n\n/**\n * get Flickity instance from element\n * @param {Element} elem\n * @returns {Flickity}\n */\nFlickity.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.flickityGUID;\n return id && instances[ id ];\n};\n\nutils.htmlInit( Flickity, 'flickity' );\n\nif ( jQuery && jQuery.bridget ) {\n jQuery.bridget( 'flickity', Flickity );\n}\n\n// set internal jQuery, for Webpack + jQuery v3, #478\nFlickity.setJQuery = function( jq ) {\n jQuery = jq;\n};\n\nFlickity.Cell = Cell;\nFlickity.Slide = Slide;\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/flickity.js\n// module id = 10\n// module chunks = 0","// Create Element.remove() function if not exist // BECAUSE IE 11\r\nif (!('remove' in Element.prototype)) {\r\n Element.prototype.remove = function() {\r\n if (this.parentNode) {\r\n this.parentNode.removeChild(this);\r\n }\r\n };\r\n}\r\n\r\n// var stokpress = {};\r\n\r\nexport const stokpress = {\r\n init() {\r\n return true\r\n },\r\n\r\n strToBool(str) {\r\n console.log(typeof str);\r\n if(typeof str == 'boolean') {\r\n return str;\r\n }\r\n switch(str.toLowerCase().trim()){\r\n case 'true': case 'yes': case '1': return true;\r\n case 'false': case 'no': case '0': case null: return false;\r\n default: return Boolean(str);\r\n }\r\n },\r\n\r\n findAncestor(el, cls) {\r\n while ((el = el.parentElement) && !el.classList.contains(cls));\r\n return el;\r\n },\r\n\r\n isMobile() {\r\n let result = false;\r\n ( function ( a ) {\r\n result = /Android|webOS|iPhone|iPad|BlackBerry|Windows Phone|Opera Mini|IEMobile|Mobile/i.test( a );\r\n } )( navigator.userAgent || navigator.vendor || window.opera );\r\n\r\n return result;\r\n },\r\n\r\n isInView(el, view) {\r\n var rect = el.getBoundingClientRect();\r\n var html = document.documentElement;\r\n\r\n if(view == 'completely') {\r\n // to check if completely visible\r\n return (\r\n rect.top >= 0 &&\r\n rect.bottom <= (window.innerHeight || html.clientHeight)\r\n );\r\n } else if(view == 'partially') {\r\n // to check if partially visible\r\n return (\r\n rect.bottom >= 0 &&\r\n rect.top < (window.innerHeight || html.clientHeight)\r\n );\r\n } else {\r\n // if partially visible or above current fold,\r\n return (\r\n rect.top < (window.innerHeight || html.clientHeight)\r\n );\r\n }\r\n },\r\n\r\n getScript(source, callback) {\r\n var script = document.createElement( 'script' );\r\n var prior = document.getElementsByTagName( 'script' )[0];\r\n script.async = 1;\r\n\r\n script.onload = script.onreadystatechange = function ( _, isAbort ) {\r\n if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\r\n script.onload = script.onreadystatechange = null;\r\n script = undefined;\r\n\r\n if ( !isAbort ) {\r\n if ( callback ) {\r\n callback();\r\n }\r\n }\r\n }\r\n };\r\n\r\n script.src = source;\r\n prior.parentNode.insertBefore( script, prior );\r\n },\r\n\r\n setCookie(cname, cvalue, exdays) {\r\n var d = new Date();\r\n d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));\r\n var expires = 'expires=' + d.toUTCString();\r\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\r\n },\r\n\r\n getCookie(cname) {\r\n var name = cname + '=';\r\n var decodedCookie = decodeURIComponent(document.cookie);\r\n var ca = decodedCookie.split(';');\r\n for(var i = 0; i <ca.length; i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) == ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) == 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return '';\r\n },\r\n}\r\n\r\nexport const stokpressViewPort = {\r\n init() {\r\n return true\r\n },\r\n\r\n documentWidth() {\r\n let e = window, a = 'inner';\r\n\r\n if( !( 'innerWidth' in window ) ) {\r\n a = 'client';\r\n e = document.documentElement || document.body;\r\n }\r\n\r\n return { width : e[ a+'Width' ] , height : e[ a+'Height' ] };\r\n },\r\n}\r\n\r\n// stokpress.cartItems;\r\n\r\n// stokpress.cartHeight = function() {\r\n// var e = window, a = 'inner';\r\n\r\n// if( !( 'innerHeight' in window ) ) {\r\n// a = 'client';\r\n// e = document.documentElement || document.body;\r\n// }\r\n\r\n// (function () {\r\n// if ( typeof NodeList.prototype.forEach === 'function' ) return false;\r\n// NodeList.prototype.forEach = Array.prototype.forEach;\r\n// })();\r\n\r\n// stokpress.cartItems.forEach(function(element) {\r\n// element.style.setProperty('--cartheight', e[ a+'Height' ]+'px');\r\n// });\r\n// }\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/helper.js","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/get-support.js\n// module id = 12\n// module chunks = 0 1","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/transition/transitionEmit.js\n// module id = 13\n// module chunks = 0 1","export default function classesToSelector(classes = '') {\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/classes-to-selector.js\n// module id = 14\n// module chunks = 0 1","/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\"use strict\";\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( listeners.indexOf( listener ) == -1 ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n var index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( var i=0; i < listeners.length; i++ ) {\n var listener = listeners[i]\n var isOnce = onceListeners && onceListeners[ listener ];\n if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/ev-emitter/ev-emitter.js\n// module id = 15\n// module chunks = 0","/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n /* jshint strict: false */ /* globals define, module */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n }\n\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/get-size/get-size.js\n// module id = 16\n// module chunks = 0","/**\n * Swiper 7.2.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2021 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: October 27, 2021\n */\n\nexport { default as Swiper, default } from './core/core.js';\nexport { default as Virtual } from './modules/virtual/virtual.js';\nexport { default as Keyboard } from './modules/keyboard/keyboard.js';\nexport { default as Mousewheel } from './modules/mousewheel/mousewheel.js';\nexport { default as Navigation } from './modules/navigation/navigation.js';\nexport { default as Pagination } from './modules/pagination/pagination.js';\nexport { default as Scrollbar } from './modules/scrollbar/scrollbar.js';\nexport { default as Parallax } from './modules/parallax/parallax.js';\nexport { default as Zoom } from './modules/zoom/zoom.js';\nexport { default as Lazy } from './modules/lazy/lazy.js';\nexport { default as Controller } from './modules/controller/controller.js';\nexport { default as A11y } from './modules/a11y/a11y.js';\nexport { default as History } from './modules/history/history.js';\nexport { default as HashNavigation } from './modules/hash-navigation/hash-navigation.js';\nexport { default as Autoplay } from './modules/autoplay/autoplay.js';\nexport { default as Thumbs } from './modules/thumbs/thumbs.js';\nexport { default as FreeMode } from './modules/free-mode/free-mode.js';\nexport { default as Grid } from './modules/grid/grid.js';\nexport { default as Manipulation } from './modules/manipulation/manipulation.js';\nexport { default as EffectFade } from './modules/effect-fade/effect-fade.js';\nexport { default as EffectCube } from './modules/effect-cube/effect-cube.js';\nexport { default as EffectFlip } from './modules/effect-flip/effect-flip.js';\nexport { default as EffectCoverflow } from './modules/effect-coverflow/effect-coverflow.js';\nexport { default as EffectCreative } from './modules/effect-creative/effect-creative.js';\nexport { default as EffectCards } from './modules/effect-cards/effect-cards.js';\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/swiper.esm.js\n// module id = 17\n// module chunks = 0 1","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/core.js\n// module id = 18\n// module chunks = 0 1","/**\n * Dom7 4.0.1\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n super(...(items || []));\n makeReactive(this);\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf('<li') === 0) toCreate = 'ul';\n if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n if (html.indexOf('<tbody') === 0) toCreate = 'table';\n if (html.indexOf('<option') === 0) toCreate = 'select';\n const tempParent = document.createElement(toCreate);\n tempParent.innerHTML = html;\n\n for (let i = 0; i < tempParent.childNodes.length; i += 1) {\n arr.push(tempParent.childNodes[i]);\n }\n } else {\n arr = qsa(selector.trim(), context || document);\n } // arr = qsa(selector, document);\n\n } else if (selector.nodeType || selector === window || selector === document) {\n arr.push(selector);\n } else if (Array.isArray(selector)) {\n if (selector instanceof Dom7) return selector;\n arr = selector;\n }\n\n return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\n// eslint-disable-next-line\n\nfunction addClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/dom7/dom7.esm.js\n// module id = 19\n// module chunks = 0 1","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/get-device.js\n// module id = 20\n// module chunks = 0 1","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/get-browser.js\n// module id = 21\n// module chunks = 0 1","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/modules/resize/resize.js\n// module id = 22\n// module chunks = 0 1","import { getWindow } from 'ssr-window';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/modules/observer/observer.js\n// module id = 23\n// module chunks = 0 1","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events-emitter.js\n// module id = 24\n// module chunks = 0 1","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/index.js\n// module id = 25\n// module chunks = 0 1","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateSize.js\n// module id = 26\n// module chunks = 0 1","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateSlides.js\n// module id = 27\n// module chunks = 0 1","export default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateAutoHeight.js\n// module id = 28\n// module chunks = 0 1","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateSlidesOffset.js\n// module id = 29\n// module chunks = 0 1","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateSlidesProgress.js\n// module id = 30\n// module chunks = 0 1","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateProgress.js\n// module id = 31\n// module chunks = 0 1","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateSlidesClasses.js\n// module id = 32\n// module chunks = 0 1","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateActiveIndex.js\n// module id = 33\n// module chunks = 0 1","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateClickedSlide.js\n// module id = 34\n// module chunks = 0 1","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/index.js\n// module id = 35\n// module chunks = 0 1","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/getTranslate.js\n// module id = 36\n// module chunks = 0 1","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/setTranslate.js\n// module id = 37\n// module chunks = 0 1","export default function minTranslate() {\n return -this.snapGrid[0];\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/minTranslate.js\n// module id = 38\n// module chunks = 0 1","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/maxTranslate.js\n// module id = 39\n// module chunks = 0 1","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/translateTo.js\n// module id = 40\n// module chunks = 0 1","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/transition/index.js\n// module id = 41\n// module chunks = 0 1","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/transition/setTransition.js\n// module id = 42\n// module chunks = 0 1","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/transition/transitionStart.js\n// module id = 43\n// module chunks = 0 1","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/transition/transitionEnd.js\n// module id = 44\n// module chunks = 0 1","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/index.js\n// module id = 45\n// module chunks = 0 1","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideTo.js\n// module id = 46\n// module chunks = 0 1","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideToLoop.js\n// module id = 47\n// module chunks = 0 1","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideNext.js\n// module id = 48\n// module chunks = 0 1","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slidePrev.js\n// module id = 49\n// module chunks = 0 1","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideReset.js\n// module id = 50\n// module chunks = 0 1","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideToClosest.js\n// module id = 51\n// module chunks = 0 1","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideToClickedSlide.js\n// module id = 52\n// module chunks = 0 1","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/loop/index.js\n// module id = 53\n// module chunks = 0 1","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $($wrapperEl.children()[0].parentNode);\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/loop/loopCreate.js\n// module id = 54\n// module chunks = 0 1","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/loop/loopFix.js\n// module id = 55\n// module chunks = 0 1","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/loop/loopDestroy.js\n// module id = 56\n// module chunks = 0 1","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/grab-cursor/index.js\n// module id = 57\n// module chunks = 0 1","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/grab-cursor/setGrabCursor.js\n// module id = 58\n// module chunks = 0 1","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/grab-cursor/unsetGrabCursor.js\n// module id = 59\n// module chunks = 0 1","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/index.js\n// module id = 60\n// module chunks = 0 1","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, e.target) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n swiper.emit('touchStart', e);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onTouchStart.js\n// module id = 61\n// module chunks = 0 1","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onTouchMove.js\n// module id = 62\n// module chunks = 0 1","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onTouchEnd.js\n// module id = 63\n// module chunks = 0 1","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onResize.js\n// module id = 64\n// module chunks = 0 1","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onClick.js\n// module id = 65\n// module chunks = 0 1","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === -0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onScroll.js\n// module id = 66\n// module chunks = 0 1","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/breakpoints/index.js\n// module id = 67\n// module chunks = 0 1","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/breakpoints/setBreakpoint.js\n// module id = 68\n// module chunks = 0 1","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/breakpoints/getBreakpoint.js\n// module id = 69\n// module chunks = 0 1","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/classes/index.js\n// module id = 70\n// module chunks = 0 1","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/classes/addClasses.js\n// module id = 71\n// module chunks = 0 1","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/classes/removeClasses.js\n// module id = 72\n// module chunks = 0 1","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/images/index.js\n// module id = 73\n// module chunks = 0 1","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/images/loadImage.js\n// module id = 74\n// module chunks = 0 1","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/images/preloadImages.js\n// module id = 75\n// module chunks = 0 1","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/check-overflow/index.js\n// module id = 76\n// module chunks = 0 1","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/defaults.js\n// module id = 77\n// module chunks = 0 1","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/moduleExtendParams.js\n// module id = 78\n// module chunks = 0 1","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n\n const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`<div class=\"${swiper.params.slideClass}\" data-swiper-slide-index=\"${index}\">${slide}</div>`);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides\n } = swiper.params;\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n\n swiper.updateProgress();\n return;\n }\n\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n\n return slidesToRender;\n }()\n });\n\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n }\n\n return;\n }\n\n const prependIndexes = [];\n const appendIndexes = [];\n\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n\n appendIndexes.forEach(index => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach(index => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n\n update(true);\n }\n\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n\n function removeAllSlides() {\n swiper.virtual.slides = [];\n\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/virtual/virtual.js\n// module id = 79\n// module chunks = 0 1","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Keyboard({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40; // Directions locks\n\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false; // Check that swiper should be inside of visible area of window\n\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n if (!inView) return undefined;\n }\n\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n\n emit('keyPress', kc);\n return undefined;\n }\n\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/keyboard/keyboard.js\n// module id = 80\n// module chunks = 0 1","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\nexport default function Mousewheel({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n // Legacy\n\n if ('detail' in e) {\n sY = e.detail;\n }\n\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n } // side scrolling on FF with DOMMouseScroll\n\n\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n } // Fall-back if spin cannot be determined\n\n\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n } // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n\n\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n } // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n\n\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n } // If you got here is because an animation has been triggered so store the current time\n\n\n lastScrollTime = new window.Date().getTime(); // Return false as a default\n\n return false;\n }\n\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n\n return false;\n }\n\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n if (params.invert) delta = -delta; // Get the scroll positions\n\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n }; // Keep the most recent events\n\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n } // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n\n\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n } // Emit event\n\n\n if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay\n\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\n\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/mousewheel/mousewheel.js\n// module id = 81\n// module chunks = 0 1","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning);\n toggleEl($nextEl, swiper.isEnd);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n init();\n update();\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n Object.assign(swiper.navigation, {\n update,\n init,\n destroy\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/navigation/navigation.js\n// module id = 82\n// module chunks = 0 1","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - swiper.previousIndex;\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = current - dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(params.modifierClass + swiper.params.direction);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(params.modifierClass + swiper.params.direction);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n init();\n render();\n update();\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n Object.assign(swiper.pagination, {\n render,\n update,\n init,\n destroy\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/pagination/pagination.js\n// module id = 83\n// module chunks = 0 1","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag'\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl,\n progress\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n\n if (rtl) {\n newPos = -newPos;\n\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n }\n\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n }\n\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n $el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n clearTimeout(dragTimeout);\n $el.transition(0);\n\n if (params.hide) {\n $el.css('opacity', 1);\n }\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n\n emit('scrollbarDragStart', e);\n }\n\n function onDragMove(e) {\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n\n emit('scrollbarDragEnd', e);\n\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const {\n scrollbar,\n touchEventsTouch,\n touchEventsDesktop,\n params,\n support\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('on');\n }\n\n function disableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('off');\n }\n\n function init() {\n const {\n scrollbar,\n $el: $swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let $el = $(params.el);\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n if ($dragEl.length === 0) {\n $dragEl = $(`<div class=\"${swiper.params.scrollbar.dragClass}\"></div>`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0]\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function destroy() {\n disableDraggable();\n }\n\n on('init', () => {\n init();\n updateSize();\n setTranslate();\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.scrollbar;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n Object.assign(swiper.scrollbar, {\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/scrollbar/scrollbar.js\n// module id = 84\n// module chunks = 0 1","import $ from '../../shared/dom.js';\nexport default function Parallax({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n parallax: {\n enabled: false\n }\n });\n\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n };\n\n const setTranslate = () => {\n const {\n $el,\n slides,\n progress,\n snapGrid\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = (duration = swiper.params.speed) => {\n const {\n $el\n } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n };\n\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/parallax/parallax.js\n// module id = 85\n// module chunks = 0 1","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\nexport default function Zoom({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n\n scale = value;\n }\n\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n } // Events\n\n\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n\n if (!support.gestures) {\n if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n return;\n }\n\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n\n isScaling = true;\n }\n\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n\n if (!support.gestures) {\n if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n return;\n }\n\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n }\n\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n\n if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {\n return;\n }\n\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n } // Define if we need image drag\n\n\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n\n if (e.cancelable) {\n e.preventDefault();\n }\n\n e.stopPropagation();\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n } // Velocity\n\n\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY; // Fix duration\n\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY; // Define if we need image drag\n\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n } // Toggle Zoom\n\n\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const {\n passiveListener\n } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n } // Attach/Detach Events\n\n\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n const slideSelector = getSlideSelector(); // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n }\n\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n const slideSelector = getSlideSelector(); // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/zoom/zoom.js\n// module id = 86\n// module chunks = 0 1","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Lazy({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader'\n }\n });\n swiper.lazy = {};\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`) : swiper.slides.eq(index);\n const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images.push($slideEl[0]);\n }\n\n if ($images.length === 0) return;\n $images.each(imageEl => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n\n if ($pictureEl.length) {\n $pictureEl.children('source').each(sourceEl => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const {\n $wrapperEl,\n params: swiperParams,\n slides,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n let slidesPerView = swiperParams.slidesPerView;\n\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\n\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n } // Prev Slides\n\n\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const {\n rtlTranslate: rtl\n } = swiper;\n let inView = false;\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const {\n lazy,\n cssMode,\n watchSlidesProgress,\n touchReleaseOnEdges,\n resistanceRatio\n } = swiper.params;\n\n if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {\n load();\n }\n });\n Object.assign(swiper.lazy, {\n load,\n loadInSlide\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/lazy/lazy.js\n// module id = 87\n// module chunks = 0 1","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\nexport default function Controller({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n\n }\n });\n swiper.controller = {\n control: undefined\n };\n\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n\n return maxIndex;\n };\n }();\n\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n\n return this;\n } // xxx: for now i will just save one spline function to to\n\n\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n\n if (duration !== 0) {\n c.transitionStart();\n\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n\n c.transitionEnd();\n });\n }\n }\n\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/controller/controller.js\n// module id = 88\n// module chunks = 0 1","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\nexport default function A11y({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group'\n }\n });\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n\n function addElId($el, id) {\n $el.attr('id', id);\n }\n\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || !swiper.navigation) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n\n if (hasPagination()) {\n swiper.pagination.bullets.each(bulletEl => {\n const $bulletEl = $(bulletEl);\n makeElFocusable($bulletEl);\n\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n }\n });\n }\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n function init() {\n const params = swiper.params.a11y;\n swiper.$el.append(liveRegion); // Container\n\n const $containerEl = swiper.$el;\n\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n } // Wrapper\n\n\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live); // Slide\n\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n\n addElRole($(swiper.slides), params.slideRole);\n const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n }); // Navigation\n\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n } // Pagination\n\n\n if (hasPagination()) {\n swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n }\n }\n\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n } // Pagination\n\n\n if (hasPagination()) {\n swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n }\n }\n\n on('beforeInit', () => {\n liveRegion = $(`<span class=\"${swiper.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`);\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n updateNavigation();\n });\n on('toEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('fromEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/a11y/a11y.js\n// module id = 89\n// module chunks = 0 1","import { getWindow } from 'ssr-window';\nexport default function History({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides'\n }\n });\n let initialized = false;\n let paths = {};\n\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n\n const currentState = window.history.state;\n\n if (currentState && currentState.value === value) {\n return;\n }\n\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, swiper.paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n\n const destroy = () => {\n const window = getWindow();\n\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/history/history.js\n// module id = 90\n// module chunks = 0 1","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function HashNavigation({\n swiper,\n extendParams,\n emit,\n on\n}) {\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false\n }\n });\n\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '');\n emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n\n if (hash) {\n const speed = 0;\n\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/hash-navigation/hash-navigation.js\n// module id = 91\n// module chunks = 0 1","/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay({\n swiper,\n extendParams,\n on,\n emit\n}) {\n let timeout;\n swiper.autoplay = {\n running: false,\n paused: false\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n\n function onVisibilityChange() {\n const document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n run();\n }\n\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n\n if (swiper.autoplay.running) {\n stop();\n }\n\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/autoplay/autoplay.js\n// module id = 92\n// module chunks = 0 1","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\n const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n } // Activate thumbs\n\n\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n }\n\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n if (!swiper.thumbs.swiper) return;\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n if (swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/thumbs/thumbs.js\n// module id = 93\n// module chunks = 0 1","import { now } from '../../shared/utils.js';\nexport default function freeMode({\n swiper,\n extendParams,\n emit,\n once\n}) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n\n function onTouchMove() {\n const {\n touchEventsData: data,\n touches\n } = swiper; // Velocity\n\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n\n function onTouchEnd({\n currentPos\n }) {\n const {\n params,\n $wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper; // Time diff\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\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\n\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n\n newPosition = -newPosition;\n }\n\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n } // Fix duration\n\n\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchMove,\n onTouchEnd\n }\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/free-mode/free-mode.js\n// module id = 94\n// module chunks = 0 1","export default function Grid({\n swiper,\n extendParams\n}) {\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n\n const initSlides = slidesLength => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const {\n slidesPerGroup,\n spaceBetween\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid; // Set slides order\n\n let newSlideOrderIndex;\n let column;\n let row;\n\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.css({\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex\n });\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n\n slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : '');\n };\n\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const {\n spaceBetween,\n centeredSlides,\n roundLengths\n } = swiper.params;\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.$wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`\n });\n\n if (centeredSlides) {\n snapGrid.splice(0, snapGrid.length);\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n\n snapGrid.push(...newSlidesGrid);\n }\n };\n\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/grid/grid.js\n// module id = 95\n// module chunks = 0 1","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\nexport default function Manipulation({\n swiper\n}) {\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/manipulation.js\n// module id = 96\n// module chunks = 0 1","export default function appendSlide(slides) {\n const swiper = this;\n const {\n $wrapperEl,\n params\n } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/methods/appendSlide.js\n// module id = 97\n// module chunks = 0 1","export default function prependSlide(slides) {\n const swiper = this;\n const {\n params,\n $wrapperEl,\n activeIndex\n } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n let newActiveIndex = activeIndex + 1;\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/methods/prependSlide.js\n// module id = 98\n// module chunks = 0 1","export default function addSlide(index, slides) {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n\n const baseLength = swiper.slides.length;\n\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/methods/addSlide.js\n// module id = 99\n// module chunks = 0 1","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n $wrapperEl,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/methods/removeSlide.js\n// module id = 100\n// module chunks = 0 1","export default function removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n\n swiper.removeSlide(slidesIndexes);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/methods/removeAllSlides.js\n// module id = 101\n// module chunks = 0 1","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFade({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.css({\n opacity: slideOpacity\n }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-fade/effect-fade.js\n// module id = 102\n// module chunks = 0 1","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\nexport default function EffectCube({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n $wrapperEl.append($cubeShadowEl);\n }\n\n $cubeShadowEl.css({\n height: `${swiperWidth}px`\n });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n $el.append($cubeShadowEl);\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n\n $slideEl.transform(transform);\n\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n $slideEl.append(shadowBefore);\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n $slideEl.append(shadowAfter);\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n };\n\n const setTransition = duration => {\n const {\n $el,\n slides\n } = swiper;\n slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-cube/effect-cube.js\n// module id = 103\n// module chunks = 0 1","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFlip({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl\n });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-flip/effect-flip.js\n// module id = 104\n// module chunks = 0 1","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nexport default function EffectCoverflow({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth; // Each slide offset from center\n\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\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 if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-coverflow/effect-coverflow.js\n// module id = 105\n// module chunks = 0 1","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCreative({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const {\n slides,\n $wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n } // set translate\n\n\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n }); // set rotates\n\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows\n\n if (custom && data.shadow || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({\n opacity: opacityString\n });\n\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-creative/effect-creative.js\n// module id = 106\n// module chunks = 0 1","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCards({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n slides,\n activeIndex\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -2 * progress;\n let tXAdd = 8 - Math.abs(progress) * 0.75;\n const isSwipeToNext = (i === activeIndex || i === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (i === activeIndex || i === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${rotate}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n\n if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl\n });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-cards/effect-cards.js\n// module id = 107\n// module chunks = 0 1","$.fn.autoPadding = function ($settings) {\r\n var $config = {\r\n source: null,\r\n },\r\n $target = $(this);\r\n\r\n if ($settings) jQuery.extend($config, $settings);\r\n\r\n $(this).css({\r\n paddingTop: $config.source.outerHeight(true) + 'px',\r\n });\r\n\r\n $(window).resize(function () {\r\n $target.css({\r\n paddingTop: $config.source.outerHeight(true) + 'px',\r\n });\r\n });\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/autoPadding.js","/*!\n * Unipointer v2.3.0\n * base class for doing one thing with pointer event\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*global define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter'\n ], function( EvEmitter ) {\n return factory( window, EvEmitter );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter')\n );\n } else {\n // browser global\n window.Unipointer = factory(\n window,\n window.EvEmitter\n );\n }\n\n}( window, function factory( window, EvEmitter ) {\n\n'use strict';\n\nfunction noop() {}\n\nfunction Unipointer() {}\n\n// inherit EvEmitter\nvar proto = Unipointer.prototype = Object.create( EvEmitter.prototype );\n\nproto.bindStartEvent = function( elem ) {\n this._bindStartEvent( elem, true );\n};\n\nproto.unbindStartEvent = function( elem ) {\n this._bindStartEvent( elem, false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd - remove if falsey\n */\nproto._bindStartEvent = function( elem, isAdd ) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n\n // default to mouse events\n var startEvent = 'mousedown';\n if ( window.PointerEvent ) {\n // Pointer Events\n startEvent = 'pointerdown';\n } else if ( 'ontouchstart' in window ) {\n // Touch Events. iOS Safari\n startEvent = 'touchstart';\n }\n elem[ bindMethod ]( startEvent, this );\n};\n\n// trigger handler methods for events\nproto.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// returns the touch that we're keeping track of\nproto.getTouch = function( touches ) {\n for ( var i=0; i < touches.length; i++ ) {\n var touch = touches[i];\n if ( touch.identifier == this.pointerIdentifier ) {\n return touch;\n }\n }\n};\n\n// ----- start event ----- //\n\nproto.onmousedown = function( event ) {\n // dismiss clicks from right or middle buttons\n var button = event.button;\n if ( button && ( button !== 0 && button !== 1 ) ) {\n return;\n }\n this._pointerDown( event, event );\n};\n\nproto.ontouchstart = function( event ) {\n this._pointerDown( event, event.changedTouches[0] );\n};\n\nproto.onpointerdown = function( event ) {\n this._pointerDown( event, event );\n};\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto._pointerDown = function( event, pointer ) {\n // dismiss right click and other pointers\n // button = 0 is okay, 1-4 not\n if ( event.button || this.isPointerDown ) {\n return;\n }\n\n this.isPointerDown = true;\n // save pointer identifier to match up touch events\n this.pointerIdentifier = pointer.pointerId !== undefined ?\n // pointerId for pointer events, touch.indentifier for touch events\n pointer.pointerId : pointer.identifier;\n\n this.pointerDown( event, pointer );\n};\n\nproto.pointerDown = function( event, pointer ) {\n this._bindPostStartEvents( event );\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// hash of events to be bound after start event\nvar postStartEvents = {\n mousedown: [ 'mousemove', 'mouseup' ],\n touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],\n pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],\n};\n\nproto._bindPostStartEvents = function( event ) {\n if ( !event ) {\n return;\n }\n // get proper events to match start event\n var events = postStartEvents[ event.type ];\n // bind events to node\n events.forEach( function( eventName ) {\n window.addEventListener( eventName, this );\n }, this );\n // save these arguments\n this._boundPointerEvents = events;\n};\n\nproto._unbindPostStartEvents = function() {\n // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\n if ( !this._boundPointerEvents ) {\n return;\n }\n this._boundPointerEvents.forEach( function( eventName ) {\n window.removeEventListener( eventName, this );\n }, this );\n\n delete this._boundPointerEvents;\n};\n\n// ----- move event ----- //\n\nproto.onmousemove = function( event ) {\n this._pointerMove( event, event );\n};\n\nproto.onpointermove = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerMove( event, event );\n }\n};\n\nproto.ontouchmove = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerMove( event, touch );\n }\n};\n\n/**\n * pointer move\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerMove = function( event, pointer ) {\n this.pointerMove( event, pointer );\n};\n\n// public\nproto.pointerMove = function( event, pointer ) {\n this.emitEvent( 'pointerMove', [ event, pointer ] );\n};\n\n// ----- end event ----- //\n\n\nproto.onmouseup = function( event ) {\n this._pointerUp( event, event );\n};\n\nproto.onpointerup = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerUp( event, event );\n }\n};\n\nproto.ontouchend = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerUp( event, touch );\n }\n};\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerUp = function( event, pointer ) {\n this._pointerDone();\n this.pointerUp( event, pointer );\n};\n\n// public\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n};\n\n// ----- pointer done ----- //\n\n// triggered on pointer up & pointer cancel\nproto._pointerDone = function() {\n this._pointerReset();\n this._unbindPostStartEvents();\n this.pointerDone();\n};\n\nproto._pointerReset = function() {\n // reset properties\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n};\n\nproto.pointerDone = noop;\n\n// ----- pointer cancel ----- //\n\nproto.onpointercancel = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerCancel( event, event );\n }\n};\n\nproto.ontouchcancel = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerCancel( event, touch );\n }\n};\n\n/**\n * pointer cancel\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerCancel = function( event, pointer ) {\n this._pointerDone();\n this.pointerCancel( event, pointer );\n};\n\n// public\nproto.pointerCancel = function( event, pointer ) {\n this.emitEvent( 'pointerCancel', [ event, pointer ] );\n};\n\n// ----- ----- //\n\n// utility function for getting x/y coords from event\nUnipointer.getPointerPoint = function( pointer ) {\n return {\n x: pointer.pageX,\n y: pointer.pageY\n };\n};\n\n// ----- ----- //\n\nreturn Unipointer;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/unipointer/unipointer.js\n// module id = 109\n// module chunks = 0","/**\r\n * Created by STOK on 13/06/2019.\r\n */\r\nvar Alert = {};\r\n\r\n(function ( $ ) {\r\n var target = $( '#js-alert' ), \r\n image = target.find( '#js-alert-image' ), \r\n title = target.find( '#js-alert-title' ),\r\n text = target.find( '#js-alert-text' ), \r\n button = target.find( '#js-alert-button' );\r\n\r\n Alert.show = function ( type, header, message, buttonText ) {\r\n if ( target.length === 0 ) {\r\n return;\r\n }\r\n\r\n var alertClass = target.data( 'classDefault' ) + ' ', \r\n buttonClass = button.data( 'classDefault' ), \r\n imageSource = '';\r\n\r\n switch ( type ) {\r\n case 'success':\r\n alertClass += target.data( 'classSuccess' );\r\n buttonClass = button.data( 'classSpecial' );\r\n imageSource = image.data( 'iconSuccess' ); \r\n break;\r\n case 'warning':\r\n alertClass += target.data( 'classWarning' );\r\n imageSource = image.data( 'iconWarning' ); \r\n break;\r\n case 'danger':\r\n alertClass += target.data( 'classDanger' );\r\n imageSource = image.data( 'iconDanger' ); \r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n target.attr( 'class', alertClass );\r\n image.attr( 'src', imageSource );\r\n\r\n title.html( header );\r\n title.attr( 'class', title.data('class-'+ type) );\r\n\r\n text.html( message );\r\n text.attr( 'class', text.data('class-'+ type) );\r\n\r\n button.text( buttonText );\r\n button.attr( 'class', buttonClass );\r\n\r\n target.slideDown( 'slow' );\r\n };\r\n\r\n $( function () {\r\n if ( target.length === 0 ) {\r\n return;\r\n }\r\n\r\n button.click( function () {\r\n target.slideUp( 'slow' );\r\n } );\r\n } )\r\n\r\n})( jQuery );\r\n\r\nwindow.Alert = Alert;\r\n\r\nmodule.exports = Alert;\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/alert.js","// import external dependencies\r\nimport 'jquery';\r\n\r\n// Require/Import vendors\r\nrequire('../../../node_modules/flickity/dist/flickity.pkgd')\r\nrequire('./vendor/jquery.overlayScrollbars');\r\nrequire('./vendor/jquery.txtTruncate');\r\n\r\n\r\n// Import everything from autoload\r\nimport './autoload/_bootstrap.js'\r\n\r\n\r\n// import local dependencies/utils\r\nimport Router from './util/Router';\r\nimport common from './routes/common';\r\nimport home from './routes/home';\r\nimport aboutUs from './routes/about';\r\nimport { sliders } from './components/sliders';\r\nimport LazyLoad from 'vanilla-lazyload';\r\nrequire('./util/plusItem');\r\nrequire('./util/crossPlatform');\r\nrequire('./util/autoPadding');\r\nrequire('./util/ellipsis');\r\nrequire('./util/backgroundSwitcher');\r\nrequire('./util/articleFilter');\r\nrequire('./util/lateRender');\r\n\r\n// Require Components\r\nrequire('./components/nav');\r\nrequire('./components/headroom');\r\nrequire('./components/filter');\r\nrequire('./components/dropdown');\r\nrequire('./components/picker');\r\nrequire('./components/resellers');\r\nrequire('./components/video');\r\nrequire('./components/listing');\r\nrequire('./components/instagram');\r\nrequire('./components/newsletter');\r\nrequire('./components/alert');\r\nrequire('./components/category');\r\nrequire('./components/product-selected');\r\nrequire('./components/product');\r\nrequire('./components/cart');\r\nrequire('./components/search');\r\nrequire('./components/checkout');\r\nrequire('./components/scroll');\r\nrequire('./components/backgroundSwitch');\r\nrequire('./components/articles');\r\nrequire('./components/forms');\r\nrequire('./components/tripleMedia');\r\nrequire('./components/bottomBar');\r\nrequire('./components/splashScreen');\r\n\r\n/** Populate Router instance with DOM routes */\r\nconst routes = new Router({\r\n // All pages\r\n common,\r\n // Home page\r\n home,\r\n // About Us page, note the change from about-us to aboutUs.\r\n aboutUs,\r\n});\r\n\r\n// Load Events\r\njQuery(document).ready(() => {\r\n routes.loadEvents();\r\n sliders.init();\r\n\r\n if ($('.js-plus-item').length) {\r\n $.each($('.js-plus-item'), function (i, el) {\r\n $(el).plusItem();\r\n });\r\n }\r\n\r\n if ($('body').hasClass('nav-is-transparent')) {\r\n $('body').autoPadding({\r\n source: $('#js-main-nav-msg'),\r\n });\r\n }\r\n\r\n else {\r\n $('body').autoPadding({\r\n source: $('.js-header'),\r\n });\r\n }\r\n\r\n let options = {\r\n container: '.size-available-toggle',\r\n trigger: 'focus',\r\n }\r\n\r\n if (matchMedia('(min-width: 1024px)').matches) {\r\n options = {\r\n container: 'body',\r\n trigger: 'hover',\r\n }\r\n } else {\r\n if ($('body').hasClass('isApple iphone')) {\r\n options = {\r\n container: 'body',\r\n trigger: 'focus',\r\n }\r\n }\r\n }\r\n\r\n $('[data-toggle=\"popover\"]').popover(options);\r\n\r\n let lazyLoadInstance = new LazyLoad({\r\n threshold: 500,\r\n elements_selector: '.lazy',\r\n });\r\n\r\n if (lazyLoadInstance) {\r\n lazyLoadInstance.update();\r\n }\r\n\r\n window.lazyLoadInstance = lazyLoadInstance;\r\n\r\n setTimeout(function() {\r\n let bodyTopPadding = window.getComputedStyle(document.body).getPropertyValue('padding-top');\r\n let topBarMessage = document.getElementById('js-main-nav-msg');\r\n\r\n document.documentElement.style.setProperty('--bodyTopPadding', bodyTopPadding);\r\n\r\n if (document.body.classList.contains('admin-bar')) {\r\n let adminBarHeight = document.getElementById('wpadminbar').offsetHeight;\r\n document.documentElement.style.setProperty('--adminBarHeight', adminBarHeight + 'px');\r\n }\r\n\r\n if (topBarMessage) {\r\n document.body.classList.add('has-top-bar');\r\n document.documentElement.style.setProperty('--topBarMessageHeight','47px');\r\n }\r\n}, 1000);\r\n\r\n});\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/main.js","/*!\n * Flickity PACKAGED v2.2.0\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2018 Metafizzy\n */\n\n/**\n * Bridget makes jQuery widgets\n * v2.0.1\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /* globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'jquery-bridget/jquery-bridget',[ 'jquery' ], function( jQuery ) {\n return factory( window, jQuery );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('jquery')\n );\n } else {\n // browser global\n window.jQueryBridget = factory(\n window,\n window.jQuery\n );\n }\n\n}( window, function factory( window, jQuery ) {\n'use strict';\n\n// ----- utils ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// helper function for logging errors\n// $.error breaks jQuery chaining\nvar console = window.console;\nvar logError = typeof console == 'undefined' ? function() {} :\n function( message ) {\n console.error( message );\n };\n\n// ----- jQueryBridget ----- //\n\nfunction jQueryBridget( namespace, PluginClass, $ ) {\n $ = $ || jQuery || window.jQuery;\n if ( !$ ) {\n return;\n }\n\n // add option method -> $().plugin('option', {...})\n if ( !PluginClass.prototype.option ) {\n // option setter\n PluginClass.prototype.option = function( opts ) {\n // bail out if not an object\n if ( !$.isPlainObject( opts ) ){\n return;\n }\n this.options = $.extend( true, this.options, opts );\n };\n }\n\n // make jQuery plugin\n $.fn[ namespace ] = function( arg0 /*, arg1 */ ) {\n if ( typeof arg0 == 'string' ) {\n // method call $().plugin( 'methodName', { options } )\n // shift arguments by 1\n var args = arraySlice.call( arguments, 1 );\n return methodCall( this, arg0, args );\n }\n // just $().plugin({ options })\n plainCall( this, arg0 );\n return this;\n };\n\n // $().plugin('methodName')\n function methodCall( $elems, methodName, args ) {\n var returnValue;\n var pluginMethodStr = '$().' + namespace + '(\"' + methodName + '\")';\n\n $elems.each( function( i, elem ) {\n // get instance\n var instance = $.data( elem, namespace );\n if ( !instance ) {\n logError( namespace + ' not initialized. Cannot call methods, i.e. ' +\n pluginMethodStr );\n return;\n }\n\n var method = instance[ methodName ];\n if ( !method || methodName.charAt(0) == '_' ) {\n logError( pluginMethodStr + ' is not a valid method' );\n return;\n }\n\n // apply method, get return value\n var value = method.apply( instance, args );\n // set return value if value is returned, use only first value\n returnValue = returnValue === undefined ? value : returnValue;\n });\n\n return returnValue !== undefined ? returnValue : $elems;\n }\n\n function plainCall( $elems, options ) {\n $elems.each( function( i, elem ) {\n var instance = $.data( elem, namespace );\n if ( instance ) {\n // set options & init\n instance.option( options );\n instance._init();\n } else {\n // initialize new instance\n instance = new PluginClass( elem, options );\n $.data( elem, namespace, instance );\n }\n });\n }\n\n updateJQuery( $ );\n\n}\n\n// ----- updateJQuery ----- //\n\n// set $.bridget for v1 backwards compatibility\nfunction updateJQuery( $ ) {\n if ( !$ || ( $ && $.bridget ) ) {\n return;\n }\n $.bridget = jQueryBridget;\n}\n\nupdateJQuery( jQuery || window.jQuery );\n\n// ----- ----- //\n\nreturn jQueryBridget;\n\n}));\n\n/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( 'ev-emitter/ev-emitter',factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( listeners.indexOf( listener ) == -1 ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n var index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( var i=0; i < listeners.length; i++ ) {\n var listener = listeners[i]\n var isOnce = onceListeners && onceListeners[ listener ];\n if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n\n/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n /* jshint strict: false */ /* globals define, module */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'get-size/get-size',factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n }\n\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\n});\n\n/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n /*global define: false, module: false */\n 'use strict';\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'desandro-matches-selector/matches-selector',factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n\n}( window, function factory() {\n 'use strict';\n\n var matchesMethod = ( function() {\n var ElemProto = window.Element.prototype;\n // check for the standard method name first\n if ( ElemProto.matches ) {\n return 'matches';\n }\n // check un-prefixed\n if ( ElemProto.matchesSelector ) {\n return 'matchesSelector';\n }\n // check vendor prefixes\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n for ( var i=0; i < prefixes.length; i++ ) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n if ( ElemProto[ method ] ) {\n return method;\n }\n }\n })();\n\n return function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n };\n\n}));\n\n/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'fizzy-ui-utils/utils',[\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) {\n return [];\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n clearTimeout( timeout );\n\n var args = arguments;\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( callback );\n } else {\n document.addEventListener( 'DOMContentLoaded', callback );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n var dashedNamespace = utils.toDashed( namespace );\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n var elems = utils.makeArray( dataAttrElems )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\n// ----- ----- //\n\nreturn utils;\n\n}));\n\n// Flickity.Cell\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/cell',[\n 'get-size/get-size'\n ], function( getSize ) {\n return factory( window, getSize );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('get-size')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Cell = factory(\n window,\n window.getSize\n );\n }\n\n}( window, function factory( window, getSize ) {\n\n\n\nfunction Cell( elem, parent ) {\n this.element = elem;\n this.parent = parent;\n\n this.create();\n}\n\nvar proto = Cell.prototype;\n\nproto.create = function() {\n this.element.style.position = 'absolute';\n this.element.setAttribute( 'aria-hidden', 'true' );\n this.x = 0;\n this.shift = 0;\n};\n\nproto.destroy = function() {\n // reset style\n this.unselect();\n this.element.style.position = '';\n var side = this.parent.originSide;\n this.element.style[ side ] = '';\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\nproto.setPosition = function( x ) {\n this.x = x;\n this.updateTarget();\n this.renderPosition( x );\n};\n\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\nproto.updateTarget = proto.setDefaultTarget = function() {\n var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n this.target = this.x + this.size[ marginProperty ] +\n this.size.width * this.parent.cellAlign;\n};\n\nproto.renderPosition = function( x ) {\n // render position of cell with in slider\n var side = this.parent.originSide;\n this.element.style[ side ] = this.parent.getPositionValue( x );\n};\n\nproto.select = function() {\n this.element.classList.add('is-selected');\n this.element.removeAttribute('aria-hidden');\n};\n\nproto.unselect = function() {\n this.element.classList.remove('is-selected');\n this.element.setAttribute( 'aria-hidden', 'true' );\n};\n\n/**\n * @param {Integer} factor - 0, 1, or -1\n**/\nproto.wrapShift = function( shift ) {\n this.shift = shift;\n this.renderPosition( this.x + this.parent.slideableWidth * shift );\n};\n\nproto.remove = function() {\n this.element.parentNode.removeChild( this.element );\n};\n\nreturn Cell;\n\n}));\n\n// slide\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/slide',factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Slide = factory();\n }\n\n}( window, function factory() {\n'use strict';\n\nfunction Slide( parent ) {\n this.parent = parent;\n this.isOriginLeft = parent.originSide == 'left';\n this.cells = [];\n this.outerWidth = 0;\n this.height = 0;\n}\n\nvar proto = Slide.prototype;\n\nproto.addCell = function( cell ) {\n this.cells.push( cell );\n this.outerWidth += cell.size.outerWidth;\n this.height = Math.max( cell.size.outerHeight, this.height );\n // first cell stuff\n if ( this.cells.length == 1 ) {\n this.x = cell.x; // x comes from first cell\n var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n this.firstMargin = cell.size[ beginMargin ];\n }\n};\n\nproto.updateTarget = function() {\n var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\n var lastCell = this.getLastCell();\n var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;\n var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\n this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.select = function() {\n this.cells.forEach( function( cell ) {\n cell.select();\n });\n};\n\nproto.unselect = function() {\n this.cells.forEach( function( cell ) {\n cell.unselect();\n });\n};\n\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n });\n};\n\nreturn Slide;\n\n}));\n\n// animate\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/animate',[\n 'fizzy-ui-utils/utils'\n ], function( utils ) {\n return factory( window, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.animatePrototype = factory(\n window,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, utils ) {\n\n\n\n// -------------------------- animate -------------------------- //\n\nvar proto = {};\n\nproto.startAnimation = function() {\n if ( this.isAnimating ) {\n return;\n }\n\n this.isAnimating = true;\n this.restingFrames = 0;\n this.animate();\n};\n\nproto.animate = function() {\n this.applyDragForce();\n this.applySelectedAttraction();\n\n var previousX = this.x;\n\n this.integratePhysics();\n this.positionSlider();\n this.settle( previousX );\n // animate next frame\n if ( this.isAnimating ) {\n var _this = this;\n requestAnimationFrame( function animateFrame() {\n _this.animate();\n });\n }\n};\n\nproto.positionSlider = function() {\n var x = this.x;\n // wrap position around\n if ( this.options.wrapAround && this.cells.length > 1 ) {\n x = utils.modulo( x, this.slideableWidth );\n x = x - this.slideableWidth;\n this.shiftWrapCells( x );\n }\n\n this.setTranslateX( x, this.isAnimating );\n this.dispatchScrollEvent();\n};\n\nproto.setTranslateX = function( x, is3d ) {\n x += this.cursorPosition;\n // reverse if right-to-left and using transform\n x = this.options.rightToLeft ? -x : x;\n var translateX = this.getPositionValue( x );\n // use 3D tranforms for hardware acceleration on iOS\n // but use 2D when settled, for better font-rendering\n this.slider.style.transform = is3d ?\n 'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\n};\n\nproto.dispatchScrollEvent = function() {\n var firstSlide = this.slides[0];\n if ( !firstSlide ) {\n return;\n }\n var positionX = -this.x - firstSlide.target;\n var progress = positionX / this.slidesWidth;\n this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\n};\n\nproto.positionSliderAtSelected = function() {\n if ( !this.cells.length ) {\n return;\n }\n this.x = -this.selectedSlide.target;\n this.velocity = 0; // stop wobble\n this.positionSlider();\n};\n\nproto.getPositionValue = function( position ) {\n if ( this.options.percentPosition ) {\n // percent position, round to 2 digits, like 12.34%\n return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 )+ '%';\n } else {\n // pixel positioning\n return Math.round( position ) + 'px';\n }\n};\n\nproto.settle = function( previousX ) {\n // keep track of frames where x hasn't moved\n if ( !this.isPointerDown && Math.round( this.x * 100 ) == Math.round( previousX * 100 ) ) {\n this.restingFrames++;\n }\n // stop animating if resting for 3 or more frames\n if ( this.restingFrames > 2 ) {\n this.isAnimating = false;\n delete this.isFreeScrolling;\n // render position with translateX when settled\n this.positionSlider();\n this.dispatchEvent( 'settle', null, [ this.selectedIndex ] );\n }\n};\n\nproto.shiftWrapCells = function( x ) {\n // shift before cells\n var beforeGap = this.cursorPosition + x;\n this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\n // shift after cells\n var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\n this._shiftCells( this.afterShiftCells, afterGap, 1 );\n};\n\nproto._shiftCells = function( cells, gap, shift ) {\n for ( var i=0; i < cells.length; i++ ) {\n var cell = cells[i];\n var cellShift = gap > 0 ? shift : 0;\n cell.wrapShift( cellShift );\n gap -= cell.size.outerWidth;\n }\n};\n\nproto._unshiftCells = function( cells ) {\n if ( !cells || !cells.length ) {\n return;\n }\n for ( var i=0; i < cells.length; i++ ) {\n cells[i].wrapShift( 0 );\n }\n};\n\n// -------------------------- physics -------------------------- //\n\nproto.integratePhysics = function() {\n this.x += this.velocity;\n this.velocity *= this.getFrictionFactor();\n};\n\nproto.applyForce = function( force ) {\n this.velocity += force;\n};\n\nproto.getFrictionFactor = function() {\n return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\n};\n\nproto.getRestingPosition = function() {\n // my thanks to Steven Wittens, who simplified this math greatly\n return this.x + this.velocity / ( 1 - this.getFrictionFactor() );\n};\n\nproto.applyDragForce = function() {\n if ( !this.isDraggable || !this.isPointerDown ) {\n return;\n }\n // change the position to drag position by applying force\n var dragVelocity = this.dragX - this.x;\n var dragForce = dragVelocity - this.velocity;\n this.applyForce( dragForce );\n};\n\nproto.applySelectedAttraction = function() {\n // do not attract if pointer down or no slides\n var dragDown = this.isDraggable && this.isPointerDown;\n if ( dragDown || this.isFreeScrolling || !this.slides.length ) {\n return;\n }\n var distance = this.selectedSlide.target * -1 - this.x;\n var force = distance * this.options.selectedAttraction;\n this.applyForce( force );\n};\n\nreturn proto;\n\n}));\n\n// Flickity main\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/flickity',[\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './cell',\n './slide',\n './animate'\n ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\n return factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./cell'),\n require('./slide'),\n require('./animate')\n );\n } else {\n // browser global\n var _Flickity = window.Flickity;\n\n window.Flickity = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n _Flickity.Cell,\n _Flickity.Slide,\n _Flickity.animatePrototype\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize,\n utils, Cell, Slide, animatePrototype ) {\n\n\n\n// vars\nvar jQuery = window.jQuery;\nvar getComputedStyle = window.getComputedStyle;\nvar console = window.console;\n\nfunction moveElements( elems, toElem ) {\n elems = utils.makeArray( elems );\n while ( elems.length ) {\n toElem.appendChild( elems.shift() );\n }\n}\n\n// -------------------------- Flickity -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Flickity intances\nvar instances = {};\n\nfunction Flickity( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // do not initialize twice on same element\n if ( this.element.flickityGUID ) {\n var instance = instances[ this.element.flickityGUID ];\n instance.option( options );\n return instance;\n }\n\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // kick things off\n this._create();\n}\n\nFlickity.defaults = {\n accessibility: true,\n // adaptiveHeight: false,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075, // friction when free-scrolling\n friction: 0.28, // friction when selecting\n namespaceJQueryEvents: true,\n // initialIndex: 0,\n percentPosition: true,\n resize: true,\n selectedAttraction: 0.025,\n setGallerySize: true\n // watchCSS: false,\n // wrapAround: false\n};\n\n// hash of methods triggered on _create()\nFlickity.createMethods = [];\n\nvar proto = Flickity.prototype;\n// inherit EventEmitter\nutils.extend( proto, EvEmitter.prototype );\n\nproto._create = function() {\n // add id for Flickity.data\n var id = this.guid = ++GUID;\n this.element.flickityGUID = id; // expando\n instances[ id ] = this; // associate via id\n // initial properties\n this.selectedIndex = 0;\n // how many frames slider has been in same position\n this.restingFrames = 0;\n // initial physics properties\n this.x = 0;\n this.velocity = 0;\n this.originSide = this.options.rightToLeft ? 'right' : 'left';\n // create viewport & slider\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n this._createSlider();\n\n if ( this.options.resize || this.options.watchCSS ) {\n window.addEventListener( 'resize', this );\n }\n\n // add listeners from on option\n for ( var eventName in this.options.on ) {\n var listener = this.options.on[ eventName ];\n this.on( eventName, listener );\n }\n\n Flickity.createMethods.forEach( function( method ) {\n this[ method ]();\n }, this );\n\n if ( this.options.watchCSS ) {\n this.watchCSS();\n } else {\n this.activate();\n }\n\n};\n\n/**\n * set options\n * @param {Object} opts\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\nproto.activate = function() {\n if ( this.isActive ) {\n return;\n }\n this.isActive = true;\n this.element.classList.add('flickity-enabled');\n if ( this.options.rightToLeft ) {\n this.element.classList.add('flickity-rtl');\n }\n\n this.getSize();\n // move initial cell elements so they can be loaded as cells\n var cellElems = this._filterFindCellElements( this.element.children );\n moveElements( cellElems, this.slider );\n this.viewport.appendChild( this.slider );\n this.element.appendChild( this.viewport );\n // get cells from children\n this.reloadCells();\n\n if ( this.options.accessibility ) {\n // allow element to focusable\n this.element.tabIndex = 0;\n // listen for key presses\n this.element.addEventListener( 'keydown', this );\n }\n\n this.emitEvent('activate');\n this.selectInitialIndex();\n // flag for initial activation, for using initialIndex\n this.isInitActivated = true;\n // ready event. #493\n this.dispatchEvent('ready');\n};\n\n// slider positions the cells\nproto._createSlider = function() {\n // slider element does all the positioning\n var slider = document.createElement('div');\n slider.className = 'flickity-slider';\n slider.style[ this.originSide ] = 0;\n this.slider = slider;\n};\n\nproto._filterFindCellElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.cellSelector );\n};\n\n// goes through all children\nproto.reloadCells = function() {\n // collection of item elements\n this.cells = this._makeCells( this.slider.children );\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n};\n\n/**\n * turn elements into Flickity.Cells\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - collection of new Flickity Cells\n */\nproto._makeCells = function( elems ) {\n var cellElems = this._filterFindCellElements( elems );\n\n // create new Flickity for collection\n var cells = cellElems.map( function( cellElem ) {\n return new Cell( cellElem, this );\n }, this );\n\n return cells;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.getLastSlide = function() {\n return this.slides[ this.slides.length - 1 ];\n};\n\n// positions all cells\nproto.positionCells = function() {\n // size all cells\n this._sizeCells( this.cells );\n // position all cells\n this._positionCells( 0 );\n};\n\n/**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\nproto._positionCells = function( index ) {\n index = index || 0;\n // also measure maxCellHeight\n // start 0 if positioning all cells\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n var cellX = 0;\n // get cellX\n if ( index > 0 ) {\n var startCell = this.cells[ index - 1 ];\n cellX = startCell.x + startCell.size.outerWidth;\n }\n var len = this.cells.length;\n for ( var i=index; i < len; i++ ) {\n var cell = this.cells[i];\n cell.setPosition( cellX );\n cellX += cell.size.outerWidth;\n this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );\n }\n // keep track of cellX for wrap-around\n this.slideableWidth = cellX;\n // slides\n this.updateSlides();\n // contain slides target\n this._containSlides();\n // update slidesWidth\n this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n};\n\n/**\n * cell.getSize() on multiple cells\n * @param {Array} cells\n */\nproto._sizeCells = function( cells ) {\n cells.forEach( function( cell ) {\n cell.getSize();\n });\n};\n\n// -------------------------- -------------------------- //\n\nproto.updateSlides = function() {\n this.slides = [];\n if ( !this.cells.length ) {\n return;\n }\n\n var slide = new Slide( this );\n this.slides.push( slide );\n var isOriginLeft = this.originSide == 'left';\n var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\n\n var canCellFit = this._getCanCellFit();\n\n this.cells.forEach( function( cell, i ) {\n // just add cell if first cell in slide\n if ( !slide.cells.length ) {\n slide.addCell( cell );\n return;\n }\n\n var slideWidth = ( slide.outerWidth - slide.firstMargin ) +\n ( cell.size.outerWidth - cell.size[ nextMargin ] );\n\n if ( canCellFit.call( this, i, slideWidth ) ) {\n slide.addCell( cell );\n } else {\n // doesn't fit, new slide\n slide.updateTarget();\n\n slide = new Slide( this );\n this.slides.push( slide );\n slide.addCell( cell );\n }\n }, this );\n // last slide\n slide.updateTarget();\n // update .selectedSlide\n this.updateSelectedSlide();\n};\n\nproto._getCanCellFit = function() {\n var groupCells = this.options.groupCells;\n if ( !groupCells ) {\n return function() {\n return false;\n };\n } else if ( typeof groupCells == 'number' ) {\n // group by number. 3 -> [0,1,2], [3,4,5], ...\n var number = parseInt( groupCells, 10 );\n return function( i ) {\n return ( i % number ) !== 0;\n };\n }\n // default, group by width of slide\n // parse '75%\n var percentMatch = typeof groupCells == 'string' &&\n groupCells.match(/^(\\d+)%$/);\n var percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;\n return function( i, slideWidth ) {\n return slideWidth <= ( this.size.innerWidth + 1 ) * percent;\n };\n};\n\n// alias _init for jQuery plugin .flickity()\nproto._init =\nproto.reposition = function() {\n this.positionCells();\n this.positionSliderAtSelected();\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n this.setCellAlign();\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\n};\n\nvar cellAlignShorthands = {\n // cell align, then based on origin side\n center: {\n left: 0.5,\n right: 0.5\n },\n left: {\n left: 0,\n right: 1\n },\n right: {\n right: 0,\n left: 1\n }\n};\n\nproto.setCellAlign = function() {\n var shorthand = cellAlignShorthands[ this.options.cellAlign ];\n this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\n};\n\nproto.setGallerySize = function() {\n if ( this.options.setGallerySize ) {\n var height = this.options.adaptiveHeight && this.selectedSlide ?\n this.selectedSlide.height : this.maxCellHeight;\n this.viewport.style.height = height + 'px';\n }\n};\n\nproto._getWrapShiftCells = function() {\n // only for wrap-around\n if ( !this.options.wrapAround ) {\n return;\n }\n // unshift previous cells\n this._unshiftCells( this.beforeShiftCells );\n this._unshiftCells( this.afterShiftCells );\n // get before cells\n // initial gap\n var gapX = this.cursorPosition;\n var cellIndex = this.cells.length - 1;\n this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\n // get after cells\n // ending gap between last cell and end of gallery viewport\n gapX = this.size.innerWidth - this.cursorPosition;\n // start cloning at first cell, working forwards\n this.afterShiftCells = this._getGapCells( gapX, 0, 1 );\n};\n\nproto._getGapCells = function( gapX, cellIndex, increment ) {\n // keep adding cells until the cover the initial gap\n var cells = [];\n while ( gapX > 0 ) {\n var cell = this.cells[ cellIndex ];\n if ( !cell ) {\n break;\n }\n cells.push( cell );\n cellIndex += increment;\n gapX -= cell.size.outerWidth;\n }\n return cells;\n};\n\n// ----- contain ----- //\n\n// contain cell targets so no excess sliding\nproto._containSlides = function() {\n if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\n return;\n }\n var isRightToLeft = this.options.rightToLeft;\n var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\n var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\n var contentWidth = this.slideableWidth - this.getLastCell().size[ endMargin ];\n // content is less than gallery size\n var isContentSmaller = contentWidth < this.size.innerWidth;\n // bounds\n var beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];\n var endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\n // contain each cell target\n this.slides.forEach( function( slide ) {\n if ( isContentSmaller ) {\n // all cells fit inside gallery\n slide.target = contentWidth * this.cellAlign;\n } else {\n // contain to bounds\n slide.target = Math.max( slide.target, beginBound );\n slide.target = Math.min( slide.target, endBound );\n }\n }, this );\n};\n\n// ----- ----- //\n\n/**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\n if ( jQuery && this.$element ) {\n // default trigger with type if no event\n type += this.options.namespaceJQueryEvents ? '.flickity' : '';\n var $event = type;\n if ( event ) {\n // create jQuery event\n var jQEvent = jQuery.Event( event );\n jQEvent.type = type;\n $event = jQEvent;\n }\n this.$element.trigger( $event, args );\n }\n};\n\n// -------------------------- select -------------------------- //\n\n/**\n * @param {Integer} index - index of the slide\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\n * @param {Boolean} isInstant - will immediately set position at selected cell\n */\nproto.select = function( index, isWrap, isInstant ) {\n if ( !this.isActive ) {\n return;\n }\n index = parseInt( index, 10 );\n this._wrapSelect( index );\n\n if ( this.options.wrapAround || isWrap ) {\n index = utils.modulo( index, this.slides.length );\n }\n // bail if invalid index\n if ( !this.slides[ index ] ) {\n return;\n }\n var prevIndex = this.selectedIndex;\n this.selectedIndex = index;\n this.updateSelectedSlide();\n if ( isInstant ) {\n this.positionSliderAtSelected();\n } else {\n this.startAnimation();\n }\n if ( this.options.adaptiveHeight ) {\n this.setGallerySize();\n }\n // events\n this.dispatchEvent( 'select', null, [ index ] );\n // change event if new index\n if ( index != prevIndex ) {\n this.dispatchEvent( 'change', null, [ index ] );\n }\n // old v1 event name, remove in v3\n this.dispatchEvent('cellSelect');\n};\n\n// wraps position for wrapAround, to move to closest slide. #113\nproto._wrapSelect = function( index ) {\n var len = this.slides.length;\n var isWrapping = this.options.wrapAround && len > 1;\n if ( !isWrapping ) {\n return index;\n }\n var wrapIndex = utils.modulo( index, len );\n // go to shortest\n var delta = Math.abs( wrapIndex - this.selectedIndex );\n var backWrapDelta = Math.abs( ( wrapIndex + len ) - this.selectedIndex );\n var forewardWrapDelta = Math.abs( ( wrapIndex - len ) - this.selectedIndex );\n if ( !this.isDragSelect && backWrapDelta < delta ) {\n index += len;\n } else if ( !this.isDragSelect && forewardWrapDelta < delta ) {\n index -= len;\n }\n // wrap position so slider is within normal area\n if ( index < 0 ) {\n this.x -= this.slideableWidth;\n } else if ( index >= len ) {\n this.x += this.slideableWidth;\n }\n};\n\nproto.previous = function( isWrap, isInstant ) {\n this.select( this.selectedIndex - 1, isWrap, isInstant );\n};\n\nproto.next = function( isWrap, isInstant ) {\n this.select( this.selectedIndex + 1, isWrap, isInstant );\n};\n\nproto.updateSelectedSlide = function() {\n var slide = this.slides[ this.selectedIndex ];\n // selectedIndex could be outside of slides, if triggered before resize()\n if ( !slide ) {\n return;\n }\n // unselect previous selected slide\n this.unselectSelectedSlide();\n // update new selected slide\n this.selectedSlide = slide;\n slide.select();\n this.selectedCells = slide.cells;\n this.selectedElements = slide.getCellElements();\n // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n // Remove in v3?\n this.selectedCell = slide.cells[0];\n this.selectedElement = this.selectedElements[0];\n};\n\nproto.unselectSelectedSlide = function() {\n if ( this.selectedSlide ) {\n this.selectedSlide.unselect();\n }\n};\n\nproto.selectInitialIndex = function() {\n var initialIndex = this.options.initialIndex;\n // already activated, select previous selectedIndex\n if ( this.isInitActivated ) {\n this.select( this.selectedIndex, false, true );\n return;\n }\n // select with selector string\n if ( initialIndex && typeof initialIndex == 'string' ) {\n var cell = this.queryCell( initialIndex );\n if ( cell ) {\n this.selectCell( initialIndex, false, true );\n return;\n }\n }\n\n var index = 0;\n // select with number\n if ( initialIndex && this.slides[ initialIndex ] ) {\n index = initialIndex;\n }\n // select instantly\n this.select( index, false, true );\n};\n\n/**\n * select slide from number or cell element\n * @param {Element or Number} elem\n */\nproto.selectCell = function( value, isWrap, isInstant ) {\n // get cell\n var cell = this.queryCell( value );\n if ( !cell ) {\n return;\n }\n\n var index = this.getCellSlideIndex( cell );\n this.select( index, isWrap, isInstant );\n};\n\nproto.getCellSlideIndex = function( cell ) {\n // get index of slides that has cell\n for ( var i=0; i < this.slides.length; i++ ) {\n var slide = this.slides[i];\n var index = slide.cells.indexOf( cell );\n if ( index != -1 ) {\n return i;\n }\n }\n};\n\n// -------------------------- get cells -------------------------- //\n\n/**\n * get Flickity.Cell, given an Element\n * @param {Element} elem\n * @returns {Flickity.Cell} item\n */\nproto.getCell = function( elem ) {\n // loop through cells to get the one that matches\n for ( var i=0; i < this.cells.length; i++ ) {\n var cell = this.cells[i];\n if ( cell.element == elem ) {\n return cell;\n }\n }\n};\n\n/**\n * get collection of Flickity.Cells, given Elements\n * @param {Element, Array, NodeList} elems\n * @returns {Array} cells - Flickity.Cells\n */\nproto.getCells = function( elems ) {\n elems = utils.makeArray( elems );\n var cells = [];\n elems.forEach( function( elem ) {\n var cell = this.getCell( elem );\n if ( cell ) {\n cells.push( cell );\n }\n }, this );\n return cells;\n};\n\n/**\n * get cell elements\n * @returns {Array} cellElems\n */\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n });\n};\n\n/**\n * get parent cell from an element\n * @param {Element} elem\n * @returns {Flickit.Cell} cell\n */\nproto.getParentCell = function( elem ) {\n // first check if elem is cell\n var cell = this.getCell( elem );\n if ( cell ) {\n return cell;\n }\n // try to get parent cell elem\n elem = utils.getParent( elem, '.flickity-slider > *' );\n return this.getCell( elem );\n};\n\n/**\n * get cells adjacent to a slide\n * @param {Integer} adjCount - number of adjacent slides\n * @param {Integer} index - index of slide to start\n * @returns {Array} cells - array of Flickity.Cells\n */\nproto.getAdjacentCellElements = function( adjCount, index ) {\n if ( !adjCount ) {\n return this.selectedSlide.getCellElements();\n }\n index = index === undefined ? this.selectedIndex : index;\n\n var len = this.slides.length;\n if ( 1 + ( adjCount * 2 ) >= len ) {\n return this.getCellElements();\n }\n\n var cellElems = [];\n for ( var i = index - adjCount; i <= index + adjCount ; i++ ) {\n var slideIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;\n var slide = this.slides[ slideIndex ];\n if ( slide ) {\n cellElems = cellElems.concat( slide.getCellElements() );\n }\n }\n return cellElems;\n};\n\n/**\n * select slide from number or cell element\n * @param {Element, Selector String, or Number} selector\n */\nproto.queryCell = function( selector ) {\n if ( typeof selector == 'number' ) {\n // use number as index\n return this.cells[ selector ];\n }\n if ( typeof selector == 'string' ) {\n // do not select invalid selectors from hash: #123, #/. #791\n if ( selector.match(/^[#\\.]?[\\d\\/]/) ) {\n return;\n }\n // use string as selector, get element\n selector = this.element.querySelector( selector );\n }\n // get cell from element\n return this.getCell( selector );\n};\n\n// -------------------------- events -------------------------- //\n\nproto.uiChange = function() {\n this.emitEvent('uiChange');\n};\n\n// keep focus on element when child UI elements are clicked\nproto.childUIPointerDown = function( event ) {\n // HACK iOS does not allow touch events to bubble up?!\n if ( event.type != 'touchstart' ) {\n event.preventDefault();\n }\n this.focus();\n};\n\n// ----- resize ----- //\n\nproto.onresize = function() {\n this.watchCSS();\n this.resize();\n};\n\nutils.debounceMethod( Flickity, 'onresize', 150 );\n\nproto.resize = function() {\n if ( !this.isActive ) {\n return;\n }\n this.getSize();\n // wrap values\n if ( this.options.wrapAround ) {\n this.x = utils.modulo( this.x, this.slideableWidth );\n }\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n this.emitEvent('resize');\n // update selected index for group slides, instant\n // TODO: position can be lost between groups of various numbers\n var selectedElement = this.selectedElements && this.selectedElements[0];\n this.selectCell( selectedElement, false, true );\n};\n\n// watches the :after property, activates/deactivates\nproto.watchCSS = function() {\n var watchOption = this.options.watchCSS;\n if ( !watchOption ) {\n return;\n }\n\n var afterContent = getComputedStyle( this.element, ':after' ).content;\n // activate if :after { content: 'flickity' }\n if ( afterContent.indexOf('flickity') != -1 ) {\n this.activate();\n } else {\n this.deactivate();\n }\n};\n\n// ----- keydown ----- //\n\n// go previous/next if left/right keys pressed\nproto.onkeydown = function( event ) {\n // only work if element is in focus\n var isNotFocused = document.activeElement && document.activeElement != this.element;\n if ( !this.options.accessibility ||isNotFocused ) {\n return;\n }\n\n var handler = Flickity.keyboardHandlers[ event.keyCode ];\n if ( handler ) {\n handler.call( this );\n }\n};\n\nFlickity.keyboardHandlers = {\n // left arrow\n 37: function() {\n var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n this.uiChange();\n this[ leftMethod ]();\n },\n // right arrow\n 39: function() {\n var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n this.uiChange();\n this[ rightMethod ]();\n },\n};\n\n// ----- focus ----- //\n\nproto.focus = function() {\n // TODO remove scrollTo once focus options gets more support\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#Browser_compatibility\n var prevScrollY = window.pageYOffset;\n this.element.focus({ preventScroll: true });\n // hack to fix scroll jump after focus, #76\n if ( window.pageYOffset != prevScrollY ) {\n window.scrollTo( window.pageXOffset, prevScrollY );\n }\n};\n\n// -------------------------- destroy -------------------------- //\n\n// deactivate all Flickity functionality, but keep stuff available\nproto.deactivate = function() {\n if ( !this.isActive ) {\n return;\n }\n this.element.classList.remove('flickity-enabled');\n this.element.classList.remove('flickity-rtl');\n this.unselectSelectedSlide();\n // destroy cells\n this.cells.forEach( function( cell ) {\n cell.destroy();\n });\n this.element.removeChild( this.viewport );\n // move child elements back into element\n moveElements( this.slider.children, this.element );\n if ( this.options.accessibility ) {\n this.element.removeAttribute('tabIndex');\n this.element.removeEventListener( 'keydown', this );\n }\n // set flags\n this.isActive = false;\n this.emitEvent('deactivate');\n};\n\nproto.destroy = function() {\n this.deactivate();\n window.removeEventListener( 'resize', this );\n this.allOff();\n this.emitEvent('destroy');\n if ( jQuery && this.$element ) {\n jQuery.removeData( this.element, 'flickity' );\n }\n delete this.element.flickityGUID;\n delete instances[ this.guid ];\n};\n\n// -------------------------- prototype -------------------------- //\n\nutils.extend( proto, animatePrototype );\n\n// -------------------------- extras -------------------------- //\n\n/**\n * get Flickity instance from element\n * @param {Element} elem\n * @returns {Flickity}\n */\nFlickity.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.flickityGUID;\n return id && instances[ id ];\n};\n\nutils.htmlInit( Flickity, 'flickity' );\n\nif ( jQuery && jQuery.bridget ) {\n jQuery.bridget( 'flickity', Flickity );\n}\n\n// set internal jQuery, for Webpack + jQuery v3, #478\nFlickity.setJQuery = function( jq ) {\n jQuery = jq;\n};\n\nFlickity.Cell = Cell;\nFlickity.Slide = Slide;\n\nreturn Flickity;\n\n}));\n\n/*!\n * Unipointer v2.3.0\n * base class for doing one thing with pointer event\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*global define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'unipointer/unipointer',[\n 'ev-emitter/ev-emitter'\n ], function( EvEmitter ) {\n return factory( window, EvEmitter );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter')\n );\n } else {\n // browser global\n window.Unipointer = factory(\n window,\n window.EvEmitter\n );\n }\n\n}( window, function factory( window, EvEmitter ) {\n\n\n\nfunction noop() {}\n\nfunction Unipointer() {}\n\n// inherit EvEmitter\nvar proto = Unipointer.prototype = Object.create( EvEmitter.prototype );\n\nproto.bindStartEvent = function( elem ) {\n this._bindStartEvent( elem, true );\n};\n\nproto.unbindStartEvent = function( elem ) {\n this._bindStartEvent( elem, false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd - remove if falsey\n */\nproto._bindStartEvent = function( elem, isAdd ) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n\n // default to mouse events\n var startEvent = 'mousedown';\n if ( window.PointerEvent ) {\n // Pointer Events\n startEvent = 'pointerdown';\n } else if ( 'ontouchstart' in window ) {\n // Touch Events. iOS Safari\n startEvent = 'touchstart';\n }\n elem[ bindMethod ]( startEvent, this );\n};\n\n// trigger handler methods for events\nproto.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// returns the touch that we're keeping track of\nproto.getTouch = function( touches ) {\n for ( var i=0; i < touches.length; i++ ) {\n var touch = touches[i];\n if ( touch.identifier == this.pointerIdentifier ) {\n return touch;\n }\n }\n};\n\n// ----- start event ----- //\n\nproto.onmousedown = function( event ) {\n // dismiss clicks from right or middle buttons\n var button = event.button;\n if ( button && ( button !== 0 && button !== 1 ) ) {\n return;\n }\n this._pointerDown( event, event );\n};\n\nproto.ontouchstart = function( event ) {\n this._pointerDown( event, event.changedTouches[0] );\n};\n\nproto.onpointerdown = function( event ) {\n this._pointerDown( event, event );\n};\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto._pointerDown = function( event, pointer ) {\n // dismiss right click and other pointers\n // button = 0 is okay, 1-4 not\n if ( event.button || this.isPointerDown ) {\n return;\n }\n\n this.isPointerDown = true;\n // save pointer identifier to match up touch events\n this.pointerIdentifier = pointer.pointerId !== undefined ?\n // pointerId for pointer events, touch.indentifier for touch events\n pointer.pointerId : pointer.identifier;\n\n this.pointerDown( event, pointer );\n};\n\nproto.pointerDown = function( event, pointer ) {\n this._bindPostStartEvents( event );\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// hash of events to be bound after start event\nvar postStartEvents = {\n mousedown: [ 'mousemove', 'mouseup' ],\n touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],\n pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],\n};\n\nproto._bindPostStartEvents = function( event ) {\n if ( !event ) {\n return;\n }\n // get proper events to match start event\n var events = postStartEvents[ event.type ];\n // bind events to node\n events.forEach( function( eventName ) {\n window.addEventListener( eventName, this );\n }, this );\n // save these arguments\n this._boundPointerEvents = events;\n};\n\nproto._unbindPostStartEvents = function() {\n // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\n if ( !this._boundPointerEvents ) {\n return;\n }\n this._boundPointerEvents.forEach( function( eventName ) {\n window.removeEventListener( eventName, this );\n }, this );\n\n delete this._boundPointerEvents;\n};\n\n// ----- move event ----- //\n\nproto.onmousemove = function( event ) {\n this._pointerMove( event, event );\n};\n\nproto.onpointermove = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerMove( event, event );\n }\n};\n\nproto.ontouchmove = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerMove( event, touch );\n }\n};\n\n/**\n * pointer move\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerMove = function( event, pointer ) {\n this.pointerMove( event, pointer );\n};\n\n// public\nproto.pointerMove = function( event, pointer ) {\n this.emitEvent( 'pointerMove', [ event, pointer ] );\n};\n\n// ----- end event ----- //\n\n\nproto.onmouseup = function( event ) {\n this._pointerUp( event, event );\n};\n\nproto.onpointerup = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerUp( event, event );\n }\n};\n\nproto.ontouchend = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerUp( event, touch );\n }\n};\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerUp = function( event, pointer ) {\n this._pointerDone();\n this.pointerUp( event, pointer );\n};\n\n// public\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n};\n\n// ----- pointer done ----- //\n\n// triggered on pointer up & pointer cancel\nproto._pointerDone = function() {\n this._pointerReset();\n this._unbindPostStartEvents();\n this.pointerDone();\n};\n\nproto._pointerReset = function() {\n // reset properties\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n};\n\nproto.pointerDone = noop;\n\n// ----- pointer cancel ----- //\n\nproto.onpointercancel = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerCancel( event, event );\n }\n};\n\nproto.ontouchcancel = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerCancel( event, touch );\n }\n};\n\n/**\n * pointer cancel\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerCancel = function( event, pointer ) {\n this._pointerDone();\n this.pointerCancel( event, pointer );\n};\n\n// public\nproto.pointerCancel = function( event, pointer ) {\n this.emitEvent( 'pointerCancel', [ event, pointer ] );\n};\n\n// ----- ----- //\n\n// utility function for getting x/y coords from event\nUnipointer.getPointerPoint = function( pointer ) {\n return {\n x: pointer.pageX,\n y: pointer.pageY\n };\n};\n\n// ----- ----- //\n\nreturn Unipointer;\n\n}));\n\n/*!\n * Unidragger v2.3.0\n * Draggable base class\n * MIT license\n */\n\n/*jshint browser: true, unused: true, undef: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'unidragger/unidragger',[\n 'unipointer/unipointer'\n ], function( Unipointer ) {\n return factory( window, Unipointer );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('unipointer')\n );\n } else {\n // browser global\n window.Unidragger = factory(\n window,\n window.Unipointer\n );\n }\n\n}( window, function factory( window, Unipointer ) {\n\n\n\n// -------------------------- Unidragger -------------------------- //\n\nfunction Unidragger() {}\n\n// inherit Unipointer & EvEmitter\nvar proto = Unidragger.prototype = Object.create( Unipointer.prototype );\n\n// ----- bind start ----- //\n\nproto.bindHandles = function() {\n this._bindHandles( true );\n};\n\nproto.unbindHandles = function() {\n this._bindHandles( false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd\n */\nproto._bindHandles = function( isAdd ) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n // bind each handle\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n var touchAction = isAdd ? this._touchActionValue : '';\n for ( var i=0; i < this.handles.length; i++ ) {\n var handle = this.handles[i];\n this._bindStartEvent( handle, isAdd );\n handle[ bindMethod ]( 'click', this );\n // touch-action: none to override browser touch gestures. metafizzy/flickity#540\n if ( window.PointerEvent ) {\n handle.style.touchAction = touchAction;\n }\n }\n};\n\n// prototype so it can be overwriteable by Flickity\nproto._touchActionValue = 'none';\n\n// ----- start event ----- //\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerDown = function( event, pointer ) {\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay ) {\n return;\n }\n // track start event position\n this.pointerDownPointer = pointer;\n\n event.preventDefault();\n this.pointerDownBlur();\n // bind move and end events\n this._bindPostStartEvents( event );\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// nodes that have text fields\nvar cursorNodes = {\n TEXTAREA: true,\n INPUT: true,\n SELECT: true,\n OPTION: true,\n};\n\n// input types that do not have text fields\nvar clickTypes = {\n radio: true,\n checkbox: true,\n button: true,\n submit: true,\n image: true,\n file: true,\n};\n\n// dismiss inputs with text fields. flickity#403, flickity#404\nproto.okayPointerDown = function( event ) {\n var isCursorNode = cursorNodes[ event.target.nodeName ];\n var isClickType = clickTypes[ event.target.type ];\n var isOkay = !isCursorNode || isClickType;\n if ( !isOkay ) {\n this._pointerReset();\n }\n return isOkay;\n};\n\n// kludge to blur previously focused input\nproto.pointerDownBlur = function() {\n var focused = document.activeElement;\n // do not blur body for IE10, metafizzy/flickity#117\n var canBlur = focused && focused.blur && focused != document.body;\n if ( canBlur ) {\n focused.blur();\n }\n};\n\n// ----- move event ----- //\n\n/**\n * drag move\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.emitEvent( 'pointerMove', [ event, pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\n// base pointer move logic\nproto._dragPointerMove = function( event, pointer ) {\n var moveVector = {\n x: pointer.pageX - this.pointerDownPointer.pageX,\n y: pointer.pageY - this.pointerDownPointer.pageY\n };\n // start drag if pointer has moved far enough to start drag\n if ( !this.isDragging && this.hasDragStarted( moveVector ) ) {\n this._dragStart( event, pointer );\n }\n return moveVector;\n};\n\n// condition if pointer has moved far enough to start drag\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > 3 || Math.abs( moveVector.y ) > 3;\n};\n\n// ----- end event ----- //\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto._dragPointerUp = function( event, pointer ) {\n if ( this.isDragging ) {\n this._dragEnd( event, pointer );\n } else {\n // pointer didn't move enough for drag to start\n this._staticClick( event, pointer );\n }\n};\n\n// -------------------------- drag -------------------------- //\n\n// dragStart\nproto._dragStart = function( event, pointer ) {\n this.isDragging = true;\n // prevent clicks\n this.isPreventingClicks = true;\n this.dragStart( event, pointer );\n};\n\nproto.dragStart = function( event, pointer ) {\n this.emitEvent( 'dragStart', [ event, pointer ] );\n};\n\n// dragMove\nproto._dragMove = function( event, pointer, moveVector ) {\n // do not drag if not dragging yet\n if ( !this.isDragging ) {\n return;\n }\n\n this.dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n event.preventDefault();\n this.emitEvent( 'dragMove', [ event, pointer, moveVector ] );\n};\n\n// dragEnd\nproto._dragEnd = function( event, pointer ) {\n // set flags\n this.isDragging = false;\n // re-enable clicking async\n setTimeout( function() {\n delete this.isPreventingClicks;\n }.bind( this ) );\n\n this.dragEnd( event, pointer );\n};\n\nproto.dragEnd = function( event, pointer ) {\n this.emitEvent( 'dragEnd', [ event, pointer ] );\n};\n\n// ----- onclick ----- //\n\n// handle all clicks and prevent clicks when dragging\nproto.onclick = function( event ) {\n if ( this.isPreventingClicks ) {\n event.preventDefault();\n }\n};\n\n// ----- staticClick ----- //\n\n// triggered after pointer down & up with no/tiny movement\nproto._staticClick = function( event, pointer ) {\n // ignore emulated mouse up clicks\n if ( this.isIgnoringMouseUp && event.type == 'mouseup' ) {\n return;\n }\n\n this.staticClick( event, pointer );\n\n // set flag for emulated clicks 300ms after touchend\n if ( event.type != 'mouseup' ) {\n this.isIgnoringMouseUp = true;\n // reset flag after 300ms\n setTimeout( function() {\n delete this.isIgnoringMouseUp;\n }.bind( this ), 400 );\n }\n};\n\nproto.staticClick = function( event, pointer ) {\n this.emitEvent( 'staticClick', [ event, pointer ] );\n};\n\n// ----- utils ----- //\n\nUnidragger.getPointerPoint = Unipointer.getPointerPoint;\n\n// ----- ----- //\n\nreturn Unidragger;\n\n}));\n\n// drag\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/drag',[\n './flickity',\n 'unidragger/unidragger',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, Unidragger, utils ) {\n return factory( window, Flickity, Unidragger, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unidragger'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window,\n window.Flickity,\n window.Unidragger,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unidragger, utils ) {\n\n\n\n// ----- defaults ----- //\n\nutils.extend( Flickity.defaults, {\n draggable: '>1',\n dragThreshold: 3,\n});\n\n// ----- create ----- //\n\nFlickity.createMethods.push('_createDrag');\n\n// -------------------------- drag prototype -------------------------- //\n\nvar proto = Flickity.prototype;\nutils.extend( proto, Unidragger.prototype );\nproto._touchActionValue = 'pan-y';\n\n// -------------------------- -------------------------- //\n\nvar isTouch = 'createTouch' in document;\nvar isTouchmoveScrollCanceled = false;\n\nproto._createDrag = function() {\n this.on( 'activate', this.onActivateDrag );\n this.on( 'uiChange', this._uiChangeDrag );\n this.on( 'deactivate', this.onDeactivateDrag );\n this.on( 'cellChange', this.updateDraggable );\n // TODO updateDraggable on resize? if groupCells & slides change\n // HACK - add seemingly innocuous handler to fix iOS 10 scroll behavior\n // #457, RubaXa/Sortable#973\n if ( isTouch && !isTouchmoveScrollCanceled ) {\n window.addEventListener( 'touchmove', function() {});\n isTouchmoveScrollCanceled = true;\n }\n};\n\nproto.onActivateDrag = function() {\n this.handles = [ this.viewport ];\n this.bindHandles();\n this.updateDraggable();\n};\n\nproto.onDeactivateDrag = function() {\n this.unbindHandles();\n this.element.classList.remove('is-draggable');\n};\n\nproto.updateDraggable = function() {\n // disable dragging if less than 2 slides. #278\n if ( this.options.draggable == '>1' ) {\n this.isDraggable = this.slides.length > 1;\n } else {\n this.isDraggable = this.options.draggable;\n }\n if ( this.isDraggable ) {\n this.element.classList.add('is-draggable');\n } else {\n this.element.classList.remove('is-draggable');\n }\n};\n\n// backwards compatibility\nproto.bindDrag = function() {\n this.options.draggable = true;\n this.updateDraggable();\n};\n\nproto.unbindDrag = function() {\n this.options.draggable = false;\n this.updateDraggable();\n};\n\nproto._uiChangeDrag = function() {\n delete this.isFreeScrolling;\n};\n\n// -------------------------- pointer events -------------------------- //\n\nproto.pointerDown = function( event, pointer ) {\n if ( !this.isDraggable ) {\n this._pointerDownDefault( event, pointer );\n return;\n }\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay ) {\n return;\n }\n\n this._pointerDownPreventDefault( event );\n this.pointerDownFocus( event );\n // blur\n if ( document.activeElement != this.element ) {\n // do not blur if already focused\n this.pointerDownBlur();\n }\n\n // stop if it was moving\n this.dragX = this.x;\n this.viewport.classList.add('is-pointer-down');\n // track scrolling\n this.pointerDownScroll = getScrollPosition();\n window.addEventListener( 'scroll', this );\n\n this._pointerDownDefault( event, pointer );\n};\n\n// default pointerDown logic, used for staticClick\nproto._pointerDownDefault = function( event, pointer ) {\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. #779\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n // bind move and end events\n this._bindPostStartEvents( event );\n this.dispatchEvent( 'pointerDown', event, [ pointer ] );\n};\n\nvar focusNodes = {\n INPUT: true,\n TEXTAREA: true,\n SELECT: true,\n};\n\nproto.pointerDownFocus = function( event ) {\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isFocusNode ) {\n this.focus();\n }\n};\n\nproto._pointerDownPreventDefault = function( event ) {\n var isTouchStart = event.type == 'touchstart';\n var isTouchPointer = event.pointerType == 'touch';\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isTouchStart && !isTouchPointer && !isFocusNode ) {\n event.preventDefault();\n }\n};\n\n// ----- move ----- //\n\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > this.options.dragThreshold;\n};\n\n// ----- up ----- //\n\nproto.pointerUp = function( event, pointer ) {\n delete this.isTouchScrolling;\n this.viewport.classList.remove('is-pointer-down');\n this.dispatchEvent( 'pointerUp', event, [ pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto.pointerDone = function() {\n window.removeEventListener( 'scroll', this );\n delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nproto.dragStart = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n this.dragStartPosition = this.x;\n this.startAnimation();\n window.removeEventListener( 'scroll', this );\n this.dispatchEvent( 'dragStart', event, [ pointer ] );\n};\n\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n if ( !this.isDraggable ) {\n return;\n }\n event.preventDefault();\n\n this.previousDragX = this.dragX;\n // reverse if right-to-left\n var direction = this.options.rightToLeft ? -1 : 1;\n if ( this.options.wrapAround ) {\n // wrap around move. #589\n moveVector.x = moveVector.x % this.slideableWidth;\n }\n var dragX = this.dragStartPosition + moveVector.x * direction;\n\n if ( !this.options.wrapAround && this.slides.length ) {\n // slow drag\n var originBound = Math.max( -this.slides[0].target, this.dragStartPosition );\n dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\n var endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );\n dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\n }\n\n this.dragX = dragX;\n\n this.dragMoveTime = new Date();\n this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\n};\n\nproto.dragEnd = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n if ( this.options.freeScroll ) {\n this.isFreeScrolling = true;\n }\n // set selectedIndex based on where flick will end up\n var index = this.dragEndRestingSelect();\n\n if ( this.options.freeScroll && !this.options.wrapAround ) {\n // if free-scroll & not wrap around\n // do not free-scroll if going outside of bounding slides\n // so bounding slides can attract slider, and keep it in bounds\n var restingX = this.getRestingPosition();\n this.isFreeScrolling = -restingX > this.slides[0].target &&\n -restingX < this.getLastSlide().target;\n } else if ( !this.options.freeScroll && index == this.selectedIndex ) {\n // boost selection if selected index has not changed\n index += this.dragEndBoostSelect();\n }\n delete this.previousDragX;\n // apply selection\n // TODO refactor this, selecting here feels weird\n // HACK, set flag so dragging stays in correct direction\n this.isDragSelect = this.options.wrapAround;\n this.select( index );\n delete this.isDragSelect;\n this.dispatchEvent( 'dragEnd', event, [ pointer ] );\n};\n\nproto.dragEndRestingSelect = function() {\n var restingX = this.getRestingPosition();\n // how far away from selected slide\n var distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\n // get closet resting going up and going down\n var positiveResting = this._getClosestResting( restingX, distance, 1 );\n var negativeResting = this._getClosestResting( restingX, distance, -1 );\n // use closer resting for wrap-around\n var index = positiveResting.distance < negativeResting.distance ?\n positiveResting.index : negativeResting.index;\n return index;\n};\n\n/**\n * given resting X and distance to selected cell\n * get the distance and index of the closest cell\n * @param {Number} restingX - estimated post-flick resting position\n * @param {Number} distance - distance to selected cell\n * @param {Integer} increment - +1 or -1, going up or down\n * @returns {Object} - { distance: {Number}, index: {Integer} }\n */\nproto._getClosestResting = function( restingX, distance, increment ) {\n var index = this.selectedIndex;\n var minDistance = Infinity;\n var condition = this.options.contain && !this.options.wrapAround ?\n // if contain, keep going if distance is equal to minDistance\n function( d, md ) { return d <= md; } : function( d, md ) { return d < md; };\n while ( condition( distance, minDistance ) ) {\n // measure distance to next cell\n index += increment;\n minDistance = distance;\n distance = this.getSlideDistance( -restingX, index );\n if ( distance === null ) {\n break;\n }\n distance = Math.abs( distance );\n }\n return {\n distance: minDistance,\n // selected was previous index\n index: index - increment\n };\n};\n\n/**\n * measure distance between x and a slide target\n * @param {Number} x\n * @param {Integer} index - slide index\n */\nproto.getSlideDistance = function( x, index ) {\n var len = this.slides.length;\n // wrap around if at least 2 slides\n var isWrapAround = this.options.wrapAround && len > 1;\n var slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\n var slide = this.slides[ slideIndex ];\n if ( !slide ) {\n return null;\n }\n // add distance for wrap-around slides\n var wrap = isWrapAround ? this.slideableWidth * Math.floor( index / len ) : 0;\n return x - ( slide.target + wrap );\n};\n\nproto.dragEndBoostSelect = function() {\n // do not boost if no previousDragX or dragMoveTime\n if ( this.previousDragX === undefined || !this.dragMoveTime ||\n // or if drag was held for 100 ms\n new Date() - this.dragMoveTime > 100 ) {\n return 0;\n }\n\n var distance = this.getSlideDistance( -this.dragX, this.selectedIndex );\n var delta = this.previousDragX - this.dragX;\n if ( distance > 0 && delta > 0 ) {\n // boost to next if moving towards the right, and positive velocity\n return 1;\n } else if ( distance < 0 && delta < 0 ) {\n // boost to previous if moving towards the left, and negative velocity\n return -1;\n }\n return 0;\n};\n\n// ----- staticClick ----- //\n\nproto.staticClick = function( event, pointer ) {\n // get clickedCell, if cell was clicked\n var clickedCell = this.getParentCell( event.target );\n var cellElem = clickedCell && clickedCell.element;\n var cellIndex = clickedCell && this.cells.indexOf( clickedCell );\n this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );\n};\n\n// ----- scroll ----- //\n\nproto.onscroll = function() {\n var scroll = getScrollPosition();\n var scrollMoveX = this.pointerDownScroll.x - scroll.x;\n var scrollMoveY = this.pointerDownScroll.y - scroll.y;\n // cancel click/tap if scroll is too much\n if ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {\n this._pointerDone();\n }\n};\n\n// ----- utils ----- //\n\nfunction getScrollPosition() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n}\n\n// ----- ----- //\n\nreturn Flickity;\n\n}));\n\n// prev/next buttons\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/prev-next-button',[\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n'use strict';\n\nvar svgURI = 'http://www.w3.org/2000/svg';\n\n// -------------------------- PrevNextButton -------------------------- //\n\nfunction PrevNextButton( direction, parent ) {\n this.direction = direction;\n this.parent = parent;\n this._create();\n}\n\nPrevNextButton.prototype = Object.create( Unipointer.prototype );\n\nPrevNextButton.prototype._create = function() {\n // properties\n this.isEnabled = true;\n this.isPrevious = this.direction == -1;\n var leftDirection = this.parent.options.rightToLeft ? 1 : -1;\n this.isLeft = this.direction == leftDirection;\n\n var element = this.element = document.createElement('button');\n element.className = 'flickity-button flickity-prev-next-button';\n element.className += this.isPrevious ? ' previous' : ' next';\n // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\n element.setAttribute( 'type', 'button' );\n // init as disabled\n this.disable();\n\n element.setAttribute( 'aria-label', this.isPrevious ? 'Previous' : 'Next' );\n\n // create arrow\n var svg = this.createSVG();\n element.appendChild( svg );\n // events\n this.parent.on( 'select', this.update.bind( this ) );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPrevNextButton.prototype.activate = function() {\n this.bindStartEvent( this.element );\n this.element.addEventListener( 'click', this );\n // add to DOM\n this.parent.element.appendChild( this.element );\n};\n\nPrevNextButton.prototype.deactivate = function() {\n // remove from DOM\n this.parent.element.removeChild( this.element );\n // click events\n this.unbindStartEvent( this.element );\n this.element.removeEventListener( 'click', this );\n};\n\nPrevNextButton.prototype.createSVG = function() {\n var svg = document.createElementNS( svgURI, 'svg');\n svg.setAttribute( 'class', 'flickity-button-icon' );\n svg.setAttribute( 'viewBox', '0 0 100 100' );\n var path = document.createElementNS( svgURI, 'path');\n var pathMovements = getArrowMovements( this.parent.options.arrowShape );\n path.setAttribute( 'd', pathMovements );\n path.setAttribute( 'class', 'arrow' );\n // rotate arrow\n if ( !this.isLeft ) {\n path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );\n }\n svg.appendChild( path );\n return svg;\n};\n\n// get SVG path movmement\nfunction getArrowMovements( shape ) {\n // use shape as movement if string\n if ( typeof shape == 'string' ) {\n return shape;\n }\n // create movement string\n return 'M ' + shape.x0 + ',50' +\n ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\n ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\n ' L ' + shape.x3 + ',50 ' +\n ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\n ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\n ' Z';\n}\n\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\n\nPrevNextButton.prototype.onclick = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.parent.uiChange();\n var method = this.isPrevious ? 'previous' : 'next';\n this.parent[ method ]();\n};\n\n// ----- ----- //\n\nPrevNextButton.prototype.enable = function() {\n if ( this.isEnabled ) {\n return;\n }\n this.element.disabled = false;\n this.isEnabled = true;\n};\n\nPrevNextButton.prototype.disable = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.element.disabled = true;\n this.isEnabled = false;\n};\n\nPrevNextButton.prototype.update = function() {\n // index of first or last slide, if previous or next\n var slides = this.parent.slides;\n // enable is wrapAround and at least 2 slides\n if ( this.parent.options.wrapAround && slides.length > 1 ) {\n this.enable();\n return;\n }\n var lastIndex = slides.length ? slides.length - 1 : 0;\n var boundIndex = this.isPrevious ? 0 : lastIndex;\n var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\n this[ method ]();\n};\n\nPrevNextButton.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\n// -------------------------- Flickity prototype -------------------------- //\n\nutils.extend( Flickity.defaults, {\n prevNextButtons: true,\n arrowShape: {\n x0: 10,\n x1: 60, y1: 50,\n x2: 70, y2: 40,\n x3: 30\n }\n});\n\nFlickity.createMethods.push('_createPrevNextButtons');\nvar proto = Flickity.prototype;\n\nproto._createPrevNextButtons = function() {\n if ( !this.options.prevNextButtons ) {\n return;\n }\n\n this.prevButton = new PrevNextButton( -1, this );\n this.nextButton = new PrevNextButton( 1, this );\n\n this.on( 'activate', this.activatePrevNextButtons );\n};\n\nproto.activatePrevNextButtons = function() {\n this.prevButton.activate();\n this.nextButton.activate();\n this.on( 'deactivate', this.deactivatePrevNextButtons );\n};\n\nproto.deactivatePrevNextButtons = function() {\n this.prevButton.deactivate();\n this.nextButton.deactivate();\n this.off( 'deactivate', this.deactivatePrevNextButtons );\n};\n\n// -------------------------- -------------------------- //\n\nFlickity.PrevNextButton = PrevNextButton;\n\nreturn Flickity;\n\n}));\n\n// page dots\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/page-dots',[\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n\n// -------------------------- PageDots -------------------------- //\n\n\n\nfunction PageDots( parent ) {\n this.parent = parent;\n this._create();\n}\n\nPageDots.prototype = Object.create( Unipointer.prototype );\n\nPageDots.prototype._create = function() {\n // create holder element\n this.holder = document.createElement('ol');\n this.holder.className = 'flickity-page-dots';\n // create dots, array of elements\n this.dots = [];\n // events\n this.handleClick = this.onClick.bind( this );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPageDots.prototype.activate = function() {\n this.setDots();\n this.holder.addEventListener( 'click', this.handleClick );\n this.bindStartEvent( this.holder );\n // add to DOM\n this.parent.element.appendChild( this.holder );\n};\n\nPageDots.prototype.deactivate = function() {\n this.holder.removeEventListener( 'click', this.handleClick );\n this.unbindStartEvent( this.holder );\n // remove from DOM\n this.parent.element.removeChild( this.holder );\n};\n\nPageDots.prototype.setDots = function() {\n // get difference between number of slides and number of dots\n var delta = this.parent.slides.length - this.dots.length;\n if ( delta > 0 ) {\n this.addDots( delta );\n } else if ( delta < 0 ) {\n this.removeDots( -delta );\n }\n};\n\nPageDots.prototype.addDots = function( count ) {\n var fragment = document.createDocumentFragment();\n var newDots = [];\n var length = this.dots.length;\n var max = length + count;\n\n for ( var i = length; i < max; i++ ) {\n var dot = document.createElement('li');\n dot.className = 'dot';\n dot.setAttribute( 'aria-label', 'Page dot ' + ( i + 1 ) );\n fragment.appendChild( dot );\n newDots.push( dot );\n }\n\n this.holder.appendChild( fragment );\n this.dots = this.dots.concat( newDots );\n};\n\nPageDots.prototype.removeDots = function( count ) {\n // remove from this.dots collection\n var removeDots = this.dots.splice( this.dots.length - count, count );\n // remove from DOM\n removeDots.forEach( function( dot ) {\n this.holder.removeChild( dot );\n }, this );\n};\n\nPageDots.prototype.updateSelected = function() {\n // remove selected class on previous\n if ( this.selectedDot ) {\n this.selectedDot.className = 'dot';\n this.selectedDot.removeAttribute('aria-current');\n }\n // don't proceed if no dots\n if ( !this.dots.length ) {\n return;\n }\n this.selectedDot = this.dots[ this.parent.selectedIndex ];\n this.selectedDot.className = 'dot is-selected';\n this.selectedDot.setAttribute( 'aria-current', 'step' );\n};\n\nPageDots.prototype.onTap = // old method name, backwards-compatible\nPageDots.prototype.onClick = function( event ) {\n var target = event.target;\n // only care about dot clicks\n if ( target.nodeName != 'LI' ) {\n return;\n }\n\n this.parent.uiChange();\n var index = this.dots.indexOf( target );\n this.parent.select( index );\n};\n\nPageDots.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\nFlickity.PageDots = PageDots;\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pageDots: true\n});\n\nFlickity.createMethods.push('_createPageDots');\n\nvar proto = Flickity.prototype;\n\nproto._createPageDots = function() {\n if ( !this.options.pageDots ) {\n return;\n }\n this.pageDots = new PageDots( this );\n // events\n this.on( 'activate', this.activatePageDots );\n this.on( 'select', this.updateSelectedPageDots );\n this.on( 'cellChange', this.updatePageDots );\n this.on( 'resize', this.updatePageDots );\n this.on( 'deactivate', this.deactivatePageDots );\n};\n\nproto.activatePageDots = function() {\n this.pageDots.activate();\n};\n\nproto.updateSelectedPageDots = function() {\n this.pageDots.updateSelected();\n};\n\nproto.updatePageDots = function() {\n this.pageDots.setDots();\n};\n\nproto.deactivatePageDots = function() {\n this.pageDots.deactivate();\n};\n\n// ----- ----- //\n\nFlickity.PageDots = PageDots;\n\nreturn Flickity;\n\n}));\n\n// player & autoPlay\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/player',[\n 'ev-emitter/ev-emitter',\n 'fizzy-ui-utils/utils',\n './flickity'\n ], function( EvEmitter, utils, Flickity ) {\n return factory( EvEmitter, utils, Flickity );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('ev-emitter'),\n require('fizzy-ui-utils'),\n require('./flickity')\n );\n } else {\n // browser global\n factory(\n window.EvEmitter,\n window.fizzyUIUtils,\n window.Flickity\n );\n }\n\n}( window, function factory( EvEmitter, utils, Flickity ) {\n\n\n\n// -------------------------- Player -------------------------- //\n\nfunction Player( parent ) {\n this.parent = parent;\n this.state = 'stopped';\n // visibility change event handler\n this.onVisibilityChange = this.visibilityChange.bind( this );\n this.onVisibilityPlay = this.visibilityPlay.bind( this );\n}\n\nPlayer.prototype = Object.create( EvEmitter.prototype );\n\n// start play\nPlayer.prototype.play = function() {\n if ( this.state == 'playing' ) {\n return;\n }\n // do not play if page is hidden, start playing when page is visible\n var isPageHidden = document.hidden;\n if ( isPageHidden ) {\n document.addEventListener( 'visibilitychange', this.onVisibilityPlay );\n return;\n }\n\n this.state = 'playing';\n // listen to visibility change\n document.addEventListener( 'visibilitychange', this.onVisibilityChange );\n // start ticking\n this.tick();\n};\n\nPlayer.prototype.tick = function() {\n // do not tick if not playing\n if ( this.state != 'playing' ) {\n return;\n }\n\n var time = this.parent.options.autoPlay;\n // default to 3 seconds\n time = typeof time == 'number' ? time : 3000;\n var _this = this;\n // HACK: reset ticks if stopped and started within interval\n this.clear();\n this.timeout = setTimeout( function() {\n _this.parent.next( true );\n _this.tick();\n }, time );\n};\n\nPlayer.prototype.stop = function() {\n this.state = 'stopped';\n this.clear();\n // remove visibility change event\n document.removeEventListener( 'visibilitychange', this.onVisibilityChange );\n};\n\nPlayer.prototype.clear = function() {\n clearTimeout( this.timeout );\n};\n\nPlayer.prototype.pause = function() {\n if ( this.state == 'playing' ) {\n this.state = 'paused';\n this.clear();\n }\n};\n\nPlayer.prototype.unpause = function() {\n // re-start play if paused\n if ( this.state == 'paused' ) {\n this.play();\n }\n};\n\n// pause if page visibility is hidden, unpause if visible\nPlayer.prototype.visibilityChange = function() {\n var isPageHidden = document.hidden;\n this[ isPageHidden ? 'pause' : 'unpause' ]();\n};\n\nPlayer.prototype.visibilityPlay = function() {\n this.play();\n document.removeEventListener( 'visibilitychange', this.onVisibilityPlay );\n};\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pauseAutoPlayOnHover: true\n});\n\nFlickity.createMethods.push('_createPlayer');\nvar proto = Flickity.prototype;\n\nproto._createPlayer = function() {\n this.player = new Player( this );\n\n this.on( 'activate', this.activatePlayer );\n this.on( 'uiChange', this.stopPlayer );\n this.on( 'pointerDown', this.stopPlayer );\n this.on( 'deactivate', this.deactivatePlayer );\n};\n\nproto.activatePlayer = function() {\n if ( !this.options.autoPlay ) {\n return;\n }\n this.player.play();\n this.element.addEventListener( 'mouseenter', this );\n};\n\n// Player API, don't hate the ... thanks I know where the door is\n\nproto.playPlayer = function() {\n this.player.play();\n};\n\nproto.stopPlayer = function() {\n this.player.stop();\n};\n\nproto.pausePlayer = function() {\n this.player.pause();\n};\n\nproto.unpausePlayer = function() {\n this.player.unpause();\n};\n\nproto.deactivatePlayer = function() {\n this.player.stop();\n this.element.removeEventListener( 'mouseenter', this );\n};\n\n// ----- mouseenter/leave ----- //\n\n// pause auto-play on hover\nproto.onmouseenter = function() {\n if ( !this.options.pauseAutoPlayOnHover ) {\n return;\n }\n this.player.pause();\n this.element.addEventListener( 'mouseleave', this );\n};\n\n// resume auto-play on hover off\nproto.onmouseleave = function() {\n this.player.unpause();\n this.element.removeEventListener( 'mouseleave', this );\n};\n\n// ----- ----- //\n\nFlickity.Player = Player;\n\nreturn Flickity;\n\n}));\n\n// add, remove cell\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/add-remove-cell',[\n './flickity',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n\n\n\n// append cells to a document fragment\nfunction getCellsFragment( cells ) {\n var fragment = document.createDocumentFragment();\n cells.forEach( function( cell ) {\n fragment.appendChild( cell.element );\n });\n return fragment;\n}\n\n// -------------------------- add/remove cell prototype -------------------------- //\n\nvar proto = Flickity.prototype;\n\n/**\n * Insert, prepend, or append cells\n * @param {Element, Array, NodeList} elems\n * @param {Integer} index\n */\nproto.insert = function( elems, index ) {\n var cells = this._makeCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n var len = this.cells.length;\n // default to append\n index = index === undefined ? len : index;\n // add cells with document fragment\n var fragment = getCellsFragment( cells );\n // append to slider\n var isAppend = index == len;\n if ( isAppend ) {\n this.slider.appendChild( fragment );\n } else {\n var insertCellElement = this.cells[ index ].element;\n this.slider.insertBefore( fragment, insertCellElement );\n }\n // add to this.cells\n if ( index === 0 ) {\n // prepend, add to start\n this.cells = cells.concat( this.cells );\n } else if ( isAppend ) {\n // append, add to end\n this.cells = this.cells.concat( cells );\n } else {\n // insert in this.cells\n var endCells = this.cells.splice( index, len - index );\n this.cells = this.cells.concat( cells ).concat( endCells );\n }\n\n this._sizeCells( cells );\n this.cellChange( index, true );\n};\n\nproto.append = function( elems ) {\n this.insert( elems, this.cells.length );\n};\n\nproto.prepend = function( elems ) {\n this.insert( elems, 0 );\n};\n\n/**\n * Remove cells\n * @param {Element, Array, NodeList} elems\n */\nproto.remove = function( elems ) {\n var cells = this.getCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n\n var minCellIndex = this.cells.length - 1;\n // remove cells from collection & DOM\n cells.forEach( function( cell ) {\n cell.remove();\n var index = this.cells.indexOf( cell );\n minCellIndex = Math.min( index, minCellIndex );\n utils.removeFrom( this.cells, cell );\n }, this );\n\n this.cellChange( minCellIndex, true );\n};\n\n/**\n * logic to be run after a cell's size changes\n * @param {Element} elem - cell's element\n */\nproto.cellSizeChange = function( elem ) {\n var cell = this.getCell( elem );\n if ( !cell ) {\n return;\n }\n cell.getSize();\n\n var index = this.cells.indexOf( cell );\n this.cellChange( index );\n};\n\n/**\n * logic any time a cell is changed: added, removed, or size changed\n * @param {Integer} changedCellIndex - index of the changed cell, optional\n */\nproto.cellChange = function( changedCellIndex, isPositioningSlider ) {\n var prevSelectedElem = this.selectedElement;\n this._positionCells( changedCellIndex );\n this._getWrapShiftCells();\n this.setGallerySize();\n // update selectedIndex\n // try to maintain position & select previous selected element\n var cell = this.getCell( prevSelectedElem );\n if ( cell ) {\n this.selectedIndex = this.getCellSlideIndex( cell );\n }\n this.selectedIndex = Math.min( this.slides.length - 1, this.selectedIndex );\n\n this.emitEvent( 'cellChange', [ changedCellIndex ] );\n // position slider\n this.select( this.selectedIndex );\n // do not position slider after lazy load\n if ( isPositioningSlider ) {\n this.positionSliderAtSelected();\n }\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n}));\n\n// lazyload\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/lazyload',[\n './flickity',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n'use strict';\n\nFlickity.createMethods.push('_createLazyload');\nvar proto = Flickity.prototype;\n\nproto._createLazyload = function() {\n this.on( 'select', this.lazyLoad );\n};\n\nproto.lazyLoad = function() {\n var lazyLoad = this.options.lazyLoad;\n if ( !lazyLoad ) {\n return;\n }\n // get adjacent cells, use lazyLoad option for adjacent count\n var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n var cellElems = this.getAdjacentCellElements( adjCount );\n // get lazy images in those cells\n var lazyImages = [];\n cellElems.forEach( function( cellElem ) {\n var lazyCellImages = getCellLazyImages( cellElem );\n lazyImages = lazyImages.concat( lazyCellImages );\n });\n // load lazy images\n lazyImages.forEach( function( img ) {\n new LazyLoader( img, this );\n }, this );\n};\n\nfunction getCellLazyImages( cellElem ) {\n // check if cell element is lazy image\n if ( cellElem.nodeName == 'IMG' ) {\n var lazyloadAttr = cellElem.getAttribute('data-flickity-lazyload');\n var srcAttr = cellElem.getAttribute('data-flickity-lazyload-src');\n var srcsetAttr = cellElem.getAttribute('data-flickity-lazyload-srcset');\n if ( lazyloadAttr || srcAttr || srcsetAttr ) {\n return [ cellElem ];\n }\n }\n // select lazy images in cell\n var lazySelector = 'img[data-flickity-lazyload], ' +\n 'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\n var imgs = cellElem.querySelectorAll( lazySelector );\n return utils.makeArray( imgs );\n}\n\n// -------------------------- LazyLoader -------------------------- //\n\n/**\n * class to handle loading images\n */\nfunction LazyLoader( img, flickity ) {\n this.img = img;\n this.flickity = flickity;\n this.load();\n}\n\nLazyLoader.prototype.handleEvent = utils.handleEvent;\n\nLazyLoader.prototype.load = function() {\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n // get src & srcset\n var src = this.img.getAttribute('data-flickity-lazyload') ||\n this.img.getAttribute('data-flickity-lazyload-src');\n var srcset = this.img.getAttribute('data-flickity-lazyload-srcset');\n // set src & serset\n this.img.src = src;\n if ( srcset ) {\n this.img.setAttribute( 'srcset', srcset );\n }\n // remove attr\n this.img.removeAttribute('data-flickity-lazyload');\n this.img.removeAttribute('data-flickity-lazyload-src');\n this.img.removeAttribute('data-flickity-lazyload-srcset');\n};\n\nLazyLoader.prototype.onload = function( event ) {\n this.complete( event, 'flickity-lazyloaded' );\n};\n\nLazyLoader.prototype.onerror = function( event ) {\n this.complete( event, 'flickity-lazyerror' );\n};\n\nLazyLoader.prototype.complete = function( event, className ) {\n // unbind events\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n\n var cell = this.flickity.getParentCell( this.img );\n var cellElem = cell && cell.element;\n this.flickity.cellSizeChange( cellElem );\n\n this.img.classList.add( className );\n this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\n};\n\n// ----- ----- //\n\nFlickity.LazyLoader = LazyLoader;\n\nreturn Flickity;\n\n}));\n\n/*!\n * Flickity v2.2.0\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2018 Metafizzy\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/index',[\n './flickity',\n './drag',\n './prev-next-button',\n './page-dots',\n './player',\n './add-remove-cell',\n './lazyload'\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('./flickity'),\n require('./drag'),\n require('./prev-next-button'),\n require('./page-dots'),\n require('./player'),\n require('./add-remove-cell'),\n require('./lazyload')\n );\n }\n\n})( window, function factory( Flickity ) {\n /*jshint strict: false*/\n return Flickity;\n});\n\n/*!\n * Flickity asNavFor v2.0.1\n * enable asNavFor for Flickity\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true*/\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity-as-nav-for/as-nav-for',[\n 'flickity/js/index',\n 'fizzy-ui-utils/utils'\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( Flickity, utils ) {\n\n\n\n// -------------------------- asNavFor prototype -------------------------- //\n\n// Flickity.defaults.asNavFor = null;\n\nFlickity.createMethods.push('_createAsNavFor');\n\nvar proto = Flickity.prototype;\n\nproto._createAsNavFor = function() {\n this.on( 'activate', this.activateAsNavFor );\n this.on( 'deactivate', this.deactivateAsNavFor );\n this.on( 'destroy', this.destroyAsNavFor );\n\n var asNavForOption = this.options.asNavFor;\n if ( !asNavForOption ) {\n return;\n }\n // HACK do async, give time for other flickity to be initalized\n var _this = this;\n setTimeout( function initNavCompanion() {\n _this.setNavCompanion( asNavForOption );\n });\n};\n\nproto.setNavCompanion = function( elem ) {\n elem = utils.getQueryElement( elem );\n var companion = Flickity.data( elem );\n // stop if no companion or companion is self\n if ( !companion || companion == this ) {\n return;\n }\n\n this.navCompanion = companion;\n // companion select\n var _this = this;\n this.onNavCompanionSelect = function() {\n _this.navCompanionSelect();\n };\n companion.on( 'select', this.onNavCompanionSelect );\n // click\n this.on( 'staticClick', this.onNavStaticClick );\n\n this.navCompanionSelect( true );\n};\n\nproto.navCompanionSelect = function( isInstant ) {\n if ( !this.navCompanion ) {\n return;\n }\n // select slide that matches first cell of slide\n var selectedCell = this.navCompanion.selectedCells[0];\n var firstIndex = this.navCompanion.cells.indexOf( selectedCell );\n var lastIndex = firstIndex + this.navCompanion.selectedCells.length - 1;\n var selectIndex = Math.floor( lerp( firstIndex, lastIndex,\n this.navCompanion.cellAlign ) );\n this.selectCell( selectIndex, false, isInstant );\n // set nav selected class\n this.removeNavSelectedElements();\n // stop if companion has more cells than this one\n if ( selectIndex >= this.cells.length ) {\n return;\n }\n\n var selectedCells = this.cells.slice( firstIndex, lastIndex + 1 );\n this.navSelectedElements = selectedCells.map( function( cell ) {\n return cell.element;\n });\n this.changeNavSelectedClass('add');\n};\n\nfunction lerp( a, b, t ) {\n return ( b - a ) * t + a;\n}\n\nproto.changeNavSelectedClass = function( method ) {\n this.navSelectedElements.forEach( function( navElem ) {\n navElem.classList[ method ]('is-nav-selected');\n });\n};\n\nproto.activateAsNavFor = function() {\n this.navCompanionSelect( true );\n};\n\nproto.removeNavSelectedElements = function() {\n if ( !this.navSelectedElements ) {\n return;\n }\n this.changeNavSelectedClass('remove');\n delete this.navSelectedElements;\n};\n\nproto.onNavStaticClick = function( event, pointer, cellElement, cellIndex ) {\n if ( typeof cellIndex == 'number' ) {\n this.navCompanion.selectCell( cellIndex );\n }\n};\n\nproto.deactivateAsNavFor = function() {\n this.removeNavSelectedElements();\n};\n\nproto.destroyAsNavFor = function() {\n if ( !this.navCompanion ) {\n return;\n }\n this.navCompanion.off( 'select', this.onNavCompanionSelect );\n this.off( 'staticClick', this.onNavStaticClick );\n delete this.navCompanion;\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n}));\n\n/*!\n * imagesLoaded v4.1.4\n * JavaScript is all like \"You images are done yet or what?\"\n * MIT License\n */\n\n( function( window, factory ) { 'use strict';\n // universal module definition\n\n /*global define: false, module: false, require: false */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'imagesloaded/imagesloaded',[\n 'ev-emitter/ev-emitter'\n ], function( EvEmitter ) {\n return factory( window, EvEmitter );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter')\n );\n } else {\n // browser global\n window.imagesLoaded = factory(\n window,\n window.EvEmitter\n );\n }\n\n})( typeof window !== 'undefined' ? window : this,\n\n// -------------------------- factory -------------------------- //\n\nfunction factory( window, EvEmitter ) {\n\n\n\nvar $ = window.jQuery;\nvar console = window.console;\n\n// -------------------------- helpers -------------------------- //\n\n// extend objects\nfunction extend( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n}\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nfunction makeArray( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n}\n\n// -------------------------- imagesLoaded -------------------------- //\n\n/**\n * @param {Array, Element, NodeList, String} elem\n * @param {Object or Function} options - if function, use as callback\n * @param {Function} onAlways - callback function\n */\nfunction ImagesLoaded( elem, options, onAlways ) {\n // coerce ImagesLoaded() without new, to be new ImagesLoaded()\n if ( !( this instanceof ImagesLoaded ) ) {\n return new ImagesLoaded( elem, options, onAlways );\n }\n // use elem as selector string\n var queryElem = elem;\n if ( typeof elem == 'string' ) {\n queryElem = document.querySelectorAll( elem );\n }\n // bail if bad element\n if ( !queryElem ) {\n console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) );\n return;\n }\n\n this.elements = makeArray( queryElem );\n this.options = extend( {}, this.options );\n // shift arguments if no options set\n if ( typeof options == 'function' ) {\n onAlways = options;\n } else {\n extend( this.options, options );\n }\n\n if ( onAlways ) {\n this.on( 'always', onAlways );\n }\n\n this.getImages();\n\n if ( $ ) {\n // add jQuery Deferred object\n this.jqDeferred = new $.Deferred();\n }\n\n // HACK check async to allow time to bind listeners\n setTimeout( this.check.bind( this ) );\n}\n\nImagesLoaded.prototype = Object.create( EvEmitter.prototype );\n\nImagesLoaded.prototype.options = {};\n\nImagesLoaded.prototype.getImages = function() {\n this.images = [];\n\n // filter & find items if we have an item selector\n this.elements.forEach( this.addElementImages, this );\n};\n\n/**\n * @param {Node} element\n */\nImagesLoaded.prototype.addElementImages = function( elem ) {\n // filter siblings\n if ( elem.nodeName == 'IMG' ) {\n this.addImage( elem );\n }\n // get background image on element\n if ( this.options.background === true ) {\n this.addElementBackgroundImages( elem );\n }\n\n // find children\n // no non-element nodes, #143\n var nodeType = elem.nodeType;\n if ( !nodeType || !elementNodeTypes[ nodeType ] ) {\n return;\n }\n var childImgs = elem.querySelectorAll('img');\n // concat childElems to filterFound array\n for ( var i=0; i < childImgs.length; i++ ) {\n var img = childImgs[i];\n this.addImage( img );\n }\n\n // get child background images\n if ( typeof this.options.background == 'string' ) {\n var children = elem.querySelectorAll( this.options.background );\n for ( i=0; i < children.length; i++ ) {\n var child = children[i];\n this.addElementBackgroundImages( child );\n }\n }\n};\n\nvar elementNodeTypes = {\n 1: true,\n 9: true,\n 11: true\n};\n\nImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n // Firefox returns null if in a hidden iframe https://bugzil.la/548397\n return;\n }\n // get url inside url(\"...\")\n var reURL = /url\\((['\"])?(.*?)\\1\\)/gi;\n var matches = reURL.exec( style.backgroundImage );\n while ( matches !== null ) {\n var url = matches && matches[2];\n if ( url ) {\n this.addBackground( url, elem );\n }\n matches = reURL.exec( style.backgroundImage );\n }\n};\n\n/**\n * @param {Image} img\n */\nImagesLoaded.prototype.addImage = function( img ) {\n var loadingImage = new LoadingImage( img );\n this.images.push( loadingImage );\n};\n\nImagesLoaded.prototype.addBackground = function( url, elem ) {\n var background = new Background( url, elem );\n this.images.push( background );\n};\n\nImagesLoaded.prototype.check = function() {\n var _this = this;\n this.progressedCount = 0;\n this.hasAnyBroken = false;\n // complete if no images\n if ( !this.images.length ) {\n this.complete();\n return;\n }\n\n function onProgress( image, elem, message ) {\n // HACK - Chrome triggers event before object properties have changed. #83\n setTimeout( function() {\n _this.progress( image, elem, message );\n });\n }\n\n this.images.forEach( function( loadingImage ) {\n loadingImage.once( 'progress', onProgress );\n loadingImage.check();\n });\n};\n\nImagesLoaded.prototype.progress = function( image, elem, message ) {\n this.progressedCount++;\n this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;\n // progress event\n this.emitEvent( 'progress', [ this, image, elem ] );\n if ( this.jqDeferred && this.jqDeferred.notify ) {\n this.jqDeferred.notify( this, image );\n }\n // check if completed\n if ( this.progressedCount == this.images.length ) {\n this.complete();\n }\n\n if ( this.options.debug && console ) {\n console.log( 'progress: ' + message, image, elem );\n }\n};\n\nImagesLoaded.prototype.complete = function() {\n var eventName = this.hasAnyBroken ? 'fail' : 'done';\n this.isComplete = true;\n this.emitEvent( eventName, [ this ] );\n this.emitEvent( 'always', [ this ] );\n if ( this.jqDeferred ) {\n var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';\n this.jqDeferred[ jqMethod ]( this );\n }\n};\n\n// -------------------------- -------------------------- //\n\nfunction LoadingImage( img ) {\n this.img = img;\n}\n\nLoadingImage.prototype = Object.create( EvEmitter.prototype );\n\nLoadingImage.prototype.check = function() {\n // If complete is true and browser supports natural sizes,\n // try to check for image status manually.\n var isComplete = this.getIsImageComplete();\n if ( isComplete ) {\n // report based on naturalWidth\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n return;\n }\n\n // If none of the checks above matched, simulate loading on detached element.\n this.proxyImage = new Image();\n this.proxyImage.addEventListener( 'load', this );\n this.proxyImage.addEventListener( 'error', this );\n // bind to image as well for Firefox. #191\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n this.proxyImage.src = this.img.src;\n};\n\nLoadingImage.prototype.getIsImageComplete = function() {\n // check for non-zero, non-undefined naturalWidth\n // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671\n return this.img.complete && this.img.naturalWidth;\n};\n\nLoadingImage.prototype.confirm = function( isLoaded, message ) {\n this.isLoaded = isLoaded;\n this.emitEvent( 'progress', [ this, this.img, message ] );\n};\n\n// ----- events ----- //\n\n// trigger specified handler for event type\nLoadingImage.prototype.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\nLoadingImage.prototype.onload = function() {\n this.confirm( true, 'onload' );\n this.unbindEvents();\n};\n\nLoadingImage.prototype.onerror = function() {\n this.confirm( false, 'onerror' );\n this.unbindEvents();\n};\n\nLoadingImage.prototype.unbindEvents = function() {\n this.proxyImage.removeEventListener( 'load', this );\n this.proxyImage.removeEventListener( 'error', this );\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n};\n\n// -------------------------- Background -------------------------- //\n\nfunction Background( url, element ) {\n this.url = url;\n this.element = element;\n this.img = new Image();\n}\n\n// inherit LoadingImage prototype\nBackground.prototype = Object.create( LoadingImage.prototype );\n\nBackground.prototype.check = function() {\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n this.img.src = this.url;\n // check if image is already complete\n var isComplete = this.getIsImageComplete();\n if ( isComplete ) {\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n this.unbindEvents();\n }\n};\n\nBackground.prototype.unbindEvents = function() {\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n};\n\nBackground.prototype.confirm = function( isLoaded, message ) {\n this.isLoaded = isLoaded;\n this.emitEvent( 'progress', [ this, this.element, message ] );\n};\n\n// -------------------------- jQuery -------------------------- //\n\nImagesLoaded.makeJQueryPlugin = function( jQuery ) {\n jQuery = jQuery || window.jQuery;\n if ( !jQuery ) {\n return;\n }\n // set local variable\n $ = jQuery;\n // $().imagesLoaded()\n $.fn.imagesLoaded = function( options, callback ) {\n var instance = new ImagesLoaded( this, options, callback );\n return instance.jqDeferred.promise( $(this) );\n };\n};\n// try making plugin\nImagesLoaded.makeJQueryPlugin();\n\n// -------------------------- -------------------------- //\n\nreturn ImagesLoaded;\n\n});\n\n/*!\n * Flickity imagesLoaded v2.0.0\n * enables imagesLoaded option for Flickity\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'flickity/js/index',\n 'imagesloaded/imagesloaded'\n ], function( Flickity, imagesLoaded ) {\n return factory( window, Flickity, imagesLoaded );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('flickity'),\n require('imagesloaded')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window,\n window.Flickity,\n window.imagesLoaded\n );\n }\n\n}( window, function factory( window, Flickity, imagesLoaded ) {\n'use strict';\n\nFlickity.createMethods.push('_createImagesLoaded');\n\nvar proto = Flickity.prototype;\n\nproto._createImagesLoaded = function() {\n this.on( 'activate', this.imagesLoaded );\n};\n\nproto.imagesLoaded = function() {\n if ( !this.options.imagesLoaded ) {\n return;\n }\n var _this = this;\n function onImagesLoadedProgress( instance, image ) {\n var cell = _this.getParentCell( image.img );\n _this.cellSizeChange( cell && cell.element );\n if ( !_this.options.freeScroll ) {\n _this.positionSliderAtSelected();\n }\n }\n imagesLoaded( this.slider ).on( 'progress', onImagesLoadedProgress );\n};\n\nreturn Flickity;\n\n}));\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/dist/flickity.pkgd.js\n// module id = 113\n// module chunks = 0","/*!\r\n * OverlayScrollbars\r\n * https://github.com/KingSora/OverlayScrollbars\r\n *\r\n * Version: 1.9.1\r\n *\r\n * Copyright KingSora | Rene Haas.\r\n * https://github.com/KingSora\r\n *\r\n * Released under the MIT license.\r\n * Date: 03.08.2019\r\n */\r\n\r\n(function (global, factory) {\r\n if (typeof define === 'function' && define.amd)\r\n define(['jquery'], function(framework) { return factory(global, global.document, undefined, framework); });\r\n else if (typeof module === 'object' && typeof module.exports === 'object')\r\n module.exports = factory(global, global.document, undefined, require('jquery'));\r\n else\r\n factory(global, global.document, undefined, global.jQuery);\r\n}(typeof window !== 'undefined' ? window : this,\r\n function(window, document, undefined, framework) {\r\n 'use strict';\r\n var PLUGINNAME = 'OverlayScrollbars';\r\n var TYPES = {\r\n o : 'object',\r\n f : 'function',\r\n a : 'array',\r\n s : 'string',\r\n b : 'boolean',\r\n n : 'number',\r\n u : 'undefined',\r\n z : 'null'\r\n //d : 'date',\r\n //e : 'error',\r\n //r : 'regexp',\r\n //y : 'symbol'\r\n };\r\n var LEXICON = {\r\n c : 'class',\r\n s : 'style',\r\n i : 'id',\r\n l : 'length',\r\n p : 'prototype',\r\n oH : 'offsetHeight',\r\n cH : 'clientHeight',\r\n sH : 'scrollHeight',\r\n oW : 'offsetWidth',\r\n cW : 'clientWidth',\r\n sW : 'scrollWidth',\r\n hOP : 'hasOwnProperty'\r\n };\r\n var VENDORS = {\r\n //https://developer.mozilla.org/en-US/docs/Glossary/Vendor_Prefix\r\n _jsCache : { },\r\n _cssCache : { },\r\n _cssPrefixes : ['-webkit-', '-moz-', '-o-', '-ms-'],\r\n _jsPrefixes : ['WebKit', 'Moz', 'O', 'MS'],\r\n _cssProperty : function(name) {\r\n var cache = this._cssCache;\r\n\r\n if(cache[name])\r\n return cache[name];\r\n\r\n var prefixes = this._cssPrefixes;\r\n var uppercasedName = this._firstLetterToUpper(name);\r\n var elmStyle = document.createElement('div')[LEXICON.s];\r\n var resultPossibilities;\r\n var i = 0;\r\n var v = 0;\r\n var currVendorWithoutDashes;\r\n\r\n for (; i < prefixes.length; i++) {\r\n currVendorWithoutDashes = prefixes[i].replace(/-/g, '');\r\n resultPossibilities = [\r\n name, //transition\r\n prefixes[i] + name, //-webkit-transition\r\n currVendorWithoutDashes + uppercasedName, //webkitTransition\r\n this._firstLetterToUpper(currVendorWithoutDashes) + uppercasedName //WebkitTransition\r\n ];\r\n for(v = 0; v < resultPossibilities[LEXICON.l]; v++) {\r\n if(elmStyle[resultPossibilities[v]] !== undefined) {\r\n cache[name] = resultPossibilities[v];\r\n return resultPossibilities[v];\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n },\r\n _jsAPI : function(name, isInterface, fallback) {\r\n var prefixes = this._jsPrefixes;\r\n var cache = this._jsCache;\r\n var i = 0;\r\n var result = cache[name];\r\n if(!result) {\r\n result = window[name];\r\n for(; i < prefixes[LEXICON.l]; i++)\r\n result = result || window[(isInterface ? prefixes[i] : prefixes[i].toLowerCase()) + this._firstLetterToUpper(name)];\r\n cache[name] = result;\r\n }\r\n return result || fallback;\r\n },\r\n _firstLetterToUpper : function(str) {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n }\r\n };\r\n var COMPATIBILITY = {\r\n /**\r\n * Gets the current window width.\r\n * @returns {Number|number} The current window width in pixel.\r\n */\r\n wW: function() {\r\n return window.innerWidth || document.documentElement[LEXICON.cW] || document.body[LEXICON.cW];\r\n },\r\n\r\n /**\r\n * Gets the current window height.\r\n * @returns {Number|number} The current window height in pixel.\r\n */\r\n wH: function() {\r\n return window.innerHeight || document.documentElement[LEXICON.cH] || document.body[LEXICON.cH];\r\n },\r\n\r\n /**\r\n * Gets the MutationObserver Object or undefined if not supported.\r\n * @returns {MutationObserver|*|undefined} The MutationsObserver Object or undefined.\r\n */\r\n mO: function() {\r\n return VENDORS._jsAPI('MutationObserver', true);\r\n },\r\n\r\n /**\r\n * Gets the ResizeObserver Object or undefined if not supported.\r\n * @returns {MutationObserver|*|undefined} The ResizeObserver Object or undefined.\r\n */\r\n rO: function() {\r\n return VENDORS._jsAPI('ResizeObserver', true);\r\n },\r\n\r\n /**\r\n * Gets the RequestAnimationFrame method or it's corresponding polyfill.\r\n * @returns {*|Function} The RequestAnimationFrame method or it's corresponding polyfill.\r\n */\r\n rAF: function() {\r\n return VENDORS._jsAPI('requestAnimationFrame', false, function (func) { return window.setTimeout(func, 1000 / 60); });\r\n },\r\n\r\n /**\r\n * Gets the CancelAnimationFrame method or it's corresponding polyfill.\r\n * @returns {*|Function} The CancelAnimationFrame method or it's corresponding polyfill.\r\n */\r\n cAF: function() {\r\n return VENDORS._jsAPI('cancelAnimationFrame', false, function (id) { return window.clearTimeout(id); });\r\n },\r\n\r\n /**\r\n * Gets the current time.\r\n * @returns {number} The current time.\r\n */\r\n now: function() {\r\n return Date.now && Date.now() || new Date().getTime();\r\n },\r\n\r\n /**\r\n * Stops the propagation of the given event.\r\n * @param event The event of which the propagation shall be stoped.\r\n */\r\n stpP: function(event) {\r\n if(event.stopPropagation)\r\n event.stopPropagation();\r\n else\r\n event.cancelBubble = true;\r\n },\r\n\r\n /**\r\n * Prevents the default action of the given event.\r\n * @param event The event of which the default action shall be prevented.\r\n */\r\n prvD: function(event) {\r\n if(event.preventDefault && event.cancelable)\r\n event.preventDefault();\r\n else\r\n event.returnValue = false;\r\n },\r\n\r\n /**\r\n * Gets the pageX and pageY values of the given mouse event.\r\n * @param event The mouse event of which the pageX and pageX shall be got.\r\n * @returns {{x: number, y: number}} x = pageX value, y = pageY value.\r\n */\r\n page: function(event) {\r\n event = event.originalEvent || event;\r\n\r\n var strPage = 'page';\r\n var strClient = 'client';\r\n var strX = 'X';\r\n var strY = 'Y';\r\n var target = event.target || event.srcElement || document;\r\n var eventDoc = target.ownerDocument || document;\r\n var doc = eventDoc.documentElement;\r\n var body = eventDoc.body;\r\n\r\n //if touch event return return pageX/Y of it\r\n if(event.touches !== undefined) {\r\n var touch = event.touches[0];\r\n return {\r\n x : touch[strPage + strX],\r\n y : touch[strPage + strY]\r\n }\r\n }\r\n\r\n // Calculate pageX/Y if not native supported\r\n if (!event[strPage + strX] && event[strClient + strX] && event[strClient + strX] != null) {\r\n\r\n return {\r\n x : event[strClient + strX] +\r\n (doc && doc.scrollLeft || body && body.scrollLeft || 0) -\r\n (doc && doc.clientLeft || body && body.clientLeft || 0),\r\n y : event[strClient + strY] +\r\n (doc && doc.scrollTop || body && body.scrollTop || 0) -\r\n (doc && doc.clientTop || body && body.clientTop || 0)\r\n }\r\n }\r\n return {\r\n x : event[strPage + strX],\r\n y : event[strPage + strY]\r\n };\r\n },\r\n\r\n /**\r\n * Gets the clicked mouse button of the given mouse event.\r\n * @param event The mouse event of which the clicked button shal be got.\r\n * @returns {number} The number of the clicked mouse button. (0 : none | 1 : leftButton | 2 : middleButton | 3 : rightButton)\r\n */\r\n mBtn: function(event) {\r\n var button = event.button;\r\n if (!event.which && button !== undefined)\r\n return (button & 1 ? 1 : (button & 2 ? 3 : (button & 4 ? 2 : 0)));\r\n else\r\n return event.which;\r\n },\r\n\r\n /**\r\n * Checks whether a item is in the given array and returns its index.\r\n * @param item The item of which the position in the array shall be determined.\r\n * @param arr The array.\r\n * @returns {number} The zero based index of the item or -1 if the item isn't in the array.\r\n */\r\n inA : function(item, arr) {\r\n for (var i = 0; i < arr[LEXICON.l]; i++)\r\n //Sometiems in IE a \"SCRIPT70\" Permission denied error occurs if HTML elements in a iFrame are compared\r\n try {\r\n if (arr[i] === item)\r\n return i;\r\n }\r\n catch(e) { }\r\n return -1;\r\n },\r\n\r\n /**\r\n * Returns true if the given value is a array.\r\n * @param arr The potential array.\r\n * @returns {boolean} True if the given value is a array, false otherwise.\r\n */\r\n isA: function(arr) {\r\n var def = Array.isArray;\r\n return def ? def(arr) : this.type(arr) == TYPES.a;\r\n },\r\n\r\n /**\r\n * Determine the internal JavaScript [[Class]] of the given object.\r\n * @param obj The object of which the type shall be determined.\r\n * @returns {string} The type of the given object.\r\n */\r\n type: function(obj) {\r\n if (obj === undefined)\r\n return obj + \"\";\r\n if (obj === null)\r\n return obj + \"\";\r\n return Object[LEXICON.p].toString.call(obj).replace(/^\\[object (.+)\\]$/, '$1').toLowerCase();\r\n },\r\n\r\n\r\n bind: function(func, thisObj) {\r\n if (typeof func != TYPES.f) {\r\n throw \"Can't bind function!\";\r\n // closest thing possible to the ECMAScript 5\r\n // internal IsCallable function\r\n //throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\r\n }\r\n var proto = LEXICON.p;\r\n var aArgs = Array[proto].slice.call(arguments, 2);\r\n var fNOP = function() {};\r\n var fBound = function() { return func.apply(this instanceof fNOP ? this : thisObj, aArgs.concat(Array[proto].slice.call(arguments))); };\r\n\r\n if (func[proto])\r\n fNOP[proto] = func[proto]; // Function.prototype doesn't have a prototype property\r\n fBound[proto] = new fNOP();\r\n\r\n return fBound;\r\n }\r\n\r\n /**\r\n * Gets the vendor-prefixed CSS property by the given name.\r\n * For example the given name is \"transform\" and you're using a old Firefox browser then the returned value would be \"-moz-transform\".\r\n * If the browser doesn't need a vendor-prefix, then the returned string is the given name.\r\n * If the browser doesn't support the given property name at all (not even with a vendor-prefix) the returned value is null.\r\n * @param propName The unprefixed CSS property name.\r\n * @returns {string|null} The vendor-prefixed CSS property or null if the browser doesn't support the given CSS property.\r\n\r\n cssProp : function(propName) {\r\n return VENDORS._cssProperty(propName);\r\n }\r\n */\r\n };\r\n\r\n var MATH = Math;\r\n var JQUERY = framework;\r\n var EASING = framework.easing;\r\n var FRAMEWORK = framework;\r\n var INSTANCES = (function() {\r\n var _targets = [ ];\r\n var _instancePropertyString = '__overlayScrollbars__';\r\n\r\n /**\r\n * Register, unregister or get a certain (or all) instances.\r\n * Register: Pass the target and the instance.\r\n * Unregister: Pass the target and null.\r\n * Get Instance: Pass the target from which the instance shall be got.\r\n * Get Targets: Pass no arguments.\r\n * @param target The target to which the instance shall be registered / from which the instance shall be unregistered / the instance shall be got\r\n * @param instance The instance.\r\n * @returns {*|void} Returns the instance from the given target.\r\n */\r\n return function (target, instance) {\r\n var argLen = arguments[LEXICON.l];\r\n if(argLen < 1) {\r\n //return all targets\r\n return _targets;\r\n }\r\n else {\r\n if(instance) {\r\n //register instance\r\n target[_instancePropertyString] = instance;\r\n _targets.push(target);\r\n }\r\n else {\r\n var index = COMPATIBILITY.inA(target, _targets);\r\n if (index > -1) {\r\n if(argLen > 1) {\r\n //unregister instance\r\n delete target[_instancePropertyString];\r\n _targets.splice(index, 1);\r\n }\r\n else {\r\n //get instance from target\r\n return _targets[index][_instancePropertyString];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n })();\r\n var PLUGIN = (function() {\r\n var _plugin;\r\n var _pluginsGlobals;\r\n var _pluginsAutoUpdateLoop;\r\n var _pluginsExtensions = [ ];\r\n var _pluginsOptions = (function() {\r\n var type = COMPATIBILITY.type;\r\n var possibleTemplateTypes = [\r\n TYPES.b, //boolean\r\n TYPES.n, //number\r\n TYPES.s, //string\r\n TYPES.a, //array\r\n TYPES.o, //object\r\n TYPES.f, //function\r\n TYPES.z //null\r\n ];\r\n var restrictedStringsSplit = ' ';\r\n var restrictedStringsPossibilitiesSplit = ':';\r\n var classNameAllowedValues = [TYPES.z, TYPES.s];\r\n var numberAllowedValues = TYPES.n;\r\n var booleanNullAllowedValues = [TYPES.z, TYPES.b];\r\n var booleanTrueTemplate = [true, TYPES.b];\r\n var booleanFalseTemplate = [false, TYPES.b];\r\n var callbackTemplate = [null, [TYPES.z, TYPES.f]];\r\n var inheritedAttrsTemplate = [['style', 'class'], [TYPES.s, TYPES.a, TYPES.z]];\r\n var resizeAllowedValues = 'n:none b:both h:horizontal v:vertical';\r\n var overflowBehaviorAllowedValues = 'v-h:visible-hidden v-s:visible-scroll s:scroll h:hidden';\r\n var scrollbarsVisibilityAllowedValues = 'v:visible h:hidden a:auto';\r\n var scrollbarsAutoHideAllowedValues = 'n:never s:scroll l:leave m:move';\r\n var optionsDefaultsAndTemplate = {\r\n className: ['os-theme-dark', classNameAllowedValues], //null || string\r\n resize: ['none', resizeAllowedValues], //none || both || horizontal || vertical || n || b || h || v\r\n sizeAutoCapable: booleanTrueTemplate, //true || false\r\n clipAlways: booleanTrueTemplate, //true || false\r\n normalizeRTL: booleanTrueTemplate, //true || false\r\n paddingAbsolute: booleanFalseTemplate, //true || false\r\n autoUpdate: [null, booleanNullAllowedValues], //true || false || null\r\n autoUpdateInterval: [33, numberAllowedValues], //number\r\n nativeScrollbarsOverlaid: {\r\n showNativeScrollbars: booleanFalseTemplate, //true || false\r\n initialize: booleanTrueTemplate //true || false\r\n },\r\n overflowBehavior: {\r\n x: ['scroll', overflowBehaviorAllowedValues], //visible-hidden || visible-scroll || hidden || scroll || v-h || v-s || h || s\r\n y: ['scroll', overflowBehaviorAllowedValues] //visible-hidden || visible-scroll || hidden || scroll || v-h || v-s || h || s\r\n },\r\n scrollbars: {\r\n visibility: ['auto', scrollbarsVisibilityAllowedValues], //visible || hidden || auto || v || h || a\r\n autoHide: ['never', scrollbarsAutoHideAllowedValues], //never || scroll || leave || move || n || s || l || m\r\n autoHideDelay: [800, numberAllowedValues], //number\r\n dragScrolling: booleanTrueTemplate, //true || false\r\n clickScrolling: booleanFalseTemplate, //true || false\r\n touchSupport: booleanTrueTemplate, //true || false\r\n snapHandle: booleanFalseTemplate //true || false\r\n },\r\n textarea: {\r\n dynWidth: booleanFalseTemplate, //true || false\r\n dynHeight: booleanFalseTemplate, //true || false\r\n inheritedAttrs : inheritedAttrsTemplate //string || array || null\r\n },\r\n callbacks: {\r\n onInitialized: callbackTemplate, //null || function\r\n onInitializationWithdrawn: callbackTemplate, //null || function\r\n onDestroyed: callbackTemplate, //null || function\r\n onScrollStart: callbackTemplate, //null || function\r\n onScroll: callbackTemplate, //null || function\r\n onScrollStop: callbackTemplate, //null || function\r\n onOverflowChanged: callbackTemplate, //null || function\r\n onOverflowAmountChanged: callbackTemplate, //null || function\r\n onDirectionChanged: callbackTemplate, //null || function\r\n onContentSizeChanged: callbackTemplate, //null || function\r\n onHostSizeChanged: callbackTemplate, //null || function\r\n onUpdated: callbackTemplate //null || function\r\n }\r\n };\r\n var convert = function(template) {\r\n var recursive = function(obj) {\r\n var key;\r\n var val;\r\n var valType;\r\n for(key in obj) {\r\n if(!obj[LEXICON.hOP](key))\r\n continue;\r\n val = obj[key];\r\n valType = type(val);\r\n if(valType == TYPES.a)\r\n obj[key] = val[template ? 1 : 0];\r\n else if(valType == TYPES.o)\r\n obj[key] = recursive(val);\r\n }\r\n return obj;\r\n };\r\n return recursive(FRAMEWORK.extend(true, { }, optionsDefaultsAndTemplate));\r\n };\r\n\r\n return {\r\n _defaults : convert(),\r\n\r\n _template : convert(true),\r\n\r\n /**\r\n * Validates the passed object by the passed template.\r\n * @param obj The object which shall be validated.\r\n * @param template The template which defines the allowed values and types.\r\n * @param writeErrors True if errors shall be logged to the console.\r\n * @param diffObj If a object is passed then only valid differences to this object will be returned.\r\n * @returns {{}} A object which contains two objects called \"default\" and \"prepared\" which contains only the valid properties of the passed original object and discards not different values compared to the passed diffObj.\r\n */\r\n _validate : function (obj, template, writeErrors, diffObj) {\r\n var validatedOptions = { };\r\n var validatedOptionsPrepared = { };\r\n var objectCopy = FRAMEWORK.extend(true, { }, obj);\r\n var inArray = FRAMEWORK.inArray;\r\n var isEmptyObj = FRAMEWORK.isEmptyObject;\r\n var checkObjectProps = function(data, template, diffData, validatedOptions, validatedOptionsPrepared, prevPropName) {\r\n for (var prop in template) {\r\n if (template[LEXICON.hOP](prop) && data[LEXICON.hOP](prop)) {\r\n var isValid = false;\r\n var isDiff = false;\r\n var templateValue = template[prop];\r\n var templateValueType = type(templateValue);\r\n var templateIsComplex = templateValueType == TYPES.o;\r\n var templateTypes = type(templateValue) != TYPES.a ? [ templateValue ] : templateValue;\r\n var dataDiffValue = diffData[prop];\r\n var dataValue = data[prop];\r\n var dataValueType = type(dataValue);\r\n var propPrefix = prevPropName ? prevPropName + \".\" : \"\";\r\n var error = \"The option \\\"\" + propPrefix + prop + \"\\\" wasn't set, because\";\r\n var errorPossibleTypes = [ ];\r\n var errorRestrictedStrings = [ ];\r\n var restrictedStringValuesSplit;\r\n var restrictedStringValuesPossibilitiesSplit;\r\n var isRestrictedValue;\r\n var mainPossibility;\r\n var currType;\r\n var i;\r\n var v;\r\n var j;\r\n\r\n dataDiffValue = dataDiffValue === undefined ? { } : dataDiffValue;\r\n \r\n //if the template has a object as value, it means that the options are complex (verschachtelt)\r\n if(templateIsComplex && dataValueType == TYPES.o) {\r\n validatedOptions[prop] = { };\r\n validatedOptionsPrepared[prop] = { };\r\n checkObjectProps(dataValue, templateValue, dataDiffValue, validatedOptions[prop], validatedOptionsPrepared[prop], propPrefix + prop);\r\n FRAMEWORK.each([ data, validatedOptions, validatedOptionsPrepared ], function(index, value) {\r\n if(isEmptyObj(value[prop])) {\r\n delete value[prop];\r\n }\r\n });\r\n }\r\n else if(!templateIsComplex) {\r\n for(i = 0; i < templateTypes[LEXICON.l]; i++) {\r\n currType = templateTypes[i];\r\n templateValueType = type(currType);\r\n //if currtype is string and starts with restrictedStringPrefix and end with restrictedStringSuffix\r\n isRestrictedValue = templateValueType == TYPES.s && inArray(currType, possibleTemplateTypes) === -1;\r\n if(isRestrictedValue) {\r\n errorPossibleTypes.push(TYPES.s);\r\n\r\n //split it into a array which contains all possible values for example: [\"y:yes\", \"n:no\", \"m:maybe\"]\r\n restrictedStringValuesSplit = currType.split(restrictedStringsSplit);\r\n errorRestrictedStrings = errorRestrictedStrings.concat(restrictedStringValuesSplit);\r\n for(v = 0; v < restrictedStringValuesSplit[LEXICON.l]; v++) {\r\n //split the possible values into their possibiliteis for example: [\"y\", \"yes\"] -> the first is always the mainPossibility\r\n restrictedStringValuesPossibilitiesSplit = restrictedStringValuesSplit[v].split(restrictedStringsPossibilitiesSplit);\r\n mainPossibility = restrictedStringValuesPossibilitiesSplit[0];\r\n for(j = 0; j < restrictedStringValuesPossibilitiesSplit[LEXICON.l]; j++) {\r\n //if any possibility matches with the dataValue, its valid\r\n if(dataValue === restrictedStringValuesPossibilitiesSplit[j]) {\r\n isValid = true;\r\n break;\r\n }\r\n }\r\n if(isValid)\r\n break;\r\n }\r\n }\r\n else {\r\n errorPossibleTypes.push(currType);\r\n\r\n if(dataValueType === currType) {\r\n isValid = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if(isValid) {\r\n isDiff = dataValue !== dataDiffValue;\r\n \r\n if(isDiff)\r\n validatedOptions[prop] = dataValue;\r\n \r\n if(isRestrictedValue ? inArray(dataDiffValue, restrictedStringValuesPossibilitiesSplit) < 0 : isDiff)\r\n validatedOptionsPrepared[prop] = isRestrictedValue ? mainPossibility : dataValue;\r\n }\r\n else if(writeErrors) {\r\n console.warn(error + \" it doesn't accept the type [ \" + dataValueType.toUpperCase() + \" ] with the value of \\\"\" + dataValue + \"\\\".\\r\\n\" +\r\n \"Accepted types are: [ \" + errorPossibleTypes.join(\", \").toUpperCase() + \" ].\" +\r\n (errorRestrictedStrings[length] > 0 ? \"\\r\\nValid strings are: [ \" + errorRestrictedStrings.join(\", \").split(restrictedStringsPossibilitiesSplit).join(\", \") + \" ].\" : \"\"));\r\n }\r\n delete data[prop];\r\n }\r\n }\r\n }\r\n };\r\n checkObjectProps(objectCopy, template, diffObj || { }, validatedOptions, validatedOptionsPrepared);\r\n\r\n //add values which aren't specified in the template to the finished validated object to prevent them from being discarded\r\n /*\r\n if(keepForeignProps) {\r\n FRAMEWORK.extend(true, validatedOptions, objectCopy);\r\n FRAMEWORK.extend(true, validatedOptionsPrepared, objectCopy);\r\n }\r\n */\r\n \r\n if(!isEmptyObj(objectCopy) && writeErrors)\r\n console.warn(\"The following options are discarded due to invalidity:\\r\\n\" + window.JSON.stringify(objectCopy, null, 2));\r\n\r\n return {\r\n _default : validatedOptions,\r\n _prepared : validatedOptionsPrepared\r\n };\r\n }\r\n }\r\n }());\r\n\r\n /**\r\n * Initializes the object which contains global information about the plugin and each instance of it.\r\n */\r\n function initOverlayScrollbarsStatics() {\r\n if(!_pluginsGlobals)\r\n _pluginsGlobals = new OverlayScrollbarsGlobals(_pluginsOptions._defaults);\r\n if(!_pluginsAutoUpdateLoop)\r\n _pluginsAutoUpdateLoop = new OverlayScrollbarsAutoUpdateLoop(_pluginsGlobals);\r\n }\r\n\r\n /**\r\n * The global object for the OverlayScrollbars objects. It contains resources which every OverlayScrollbars object needs. This object is initialized only once: if the first OverlayScrollbars object gets initialized.\r\n * @param defaultOptions\r\n * @constructor\r\n */\r\n function OverlayScrollbarsGlobals(defaultOptions) {\r\n var _base = this;\r\n var strOverflow = 'overflow';\r\n var strHidden = 'hidden';\r\n var strScroll = 'scroll';\r\n var bodyElement = FRAMEWORK('body');\r\n var scrollbarDummyElement = FRAMEWORK('<div id=\"os-dummy-scrollbar-size\"><div></div></div>');\r\n var scrollbarDummyElement0 = scrollbarDummyElement[0];\r\n var dummyContainerChild = FRAMEWORK(scrollbarDummyElement.children('div').eq(0));\r\n\r\n bodyElement.append(scrollbarDummyElement);\r\n scrollbarDummyElement.hide().show(); //fix IE8 bug (incorrect measuring)\r\n\r\n var nativeScrollbarSize = calcNativeScrollbarSize(scrollbarDummyElement0);\r\n var nativeScrollbarIsOverlaid = {\r\n x: nativeScrollbarSize.x === 0,\r\n y: nativeScrollbarSize.y === 0\r\n };\r\n\r\n FRAMEWORK.extend(_base, {\r\n defaultOptions : defaultOptions,\r\n autoUpdateLoop : false,\r\n autoUpdateRecommended : !COMPATIBILITY.mO(),\r\n nativeScrollbarSize : nativeScrollbarSize,\r\n nativeScrollbarIsOverlaid : nativeScrollbarIsOverlaid,\r\n nativeScrollbarStyling : (function() {\r\n var result = false;\r\n scrollbarDummyElement.addClass('os-viewport-native-scrollbars-invisible');\r\n try {\r\n result = scrollbarDummyElement.css('scrollbar-width') === 'none' || window.getComputedStyle(scrollbarDummyElement0, '::-webkit-scrollbar').getPropertyValue('display') === 'none';\r\n } catch (ex) { }\r\n \r\n //fix opera bug: scrollbar styles will only appear if overflow value is scroll or auto during the activation of the style.\r\n //and set overflow to scroll\r\n //scrollbarDummyElement.css(strOverflow, strHidden).hide().css(strOverflow, strScroll).show();\r\n //return (scrollbarDummyElement0[LEXICON.oH] - scrollbarDummyElement0[LEXICON.cH]) === 0 && (scrollbarDummyElement0[LEXICON.oW] - scrollbarDummyElement0[LEXICON.cW]) === 0;\r\n \r\n return result;\r\n })(),\r\n overlayScrollbarDummySize : { x: 30, y: 30 },\r\n msie : (function() {\r\n var ua = window.navigator.userAgent;\r\n var strIndexOf = 'indexOf';\r\n var strSubString = 'substring';\r\n var msie = ua[strIndexOf]('MSIE ');\r\n var trident = ua[strIndexOf]('Trident/');\r\n var edge = ua[strIndexOf]('Edge/');\r\n var rv = ua[strIndexOf]('rv:');\r\n var result;\r\n var parseIntFunc = parseInt;\r\n\r\n // IE 10 or older => return version number\r\n if (msie > 0)\r\n result = parseIntFunc(ua[strSubString](msie + 5, ua[strIndexOf]('.', msie)), 10);\r\n\r\n // IE 11 => return version number\r\n else if (trident > 0)\r\n result = parseIntFunc(ua[strSubString](rv + 3, ua[strIndexOf]('.', rv)), 10);\r\n\r\n // Edge (IE 12+) => return version number\r\n else if (edge > 0)\r\n result = parseIntFunc(ua[strSubString](edge + 5, ua[strIndexOf]('.', edge)), 10);\r\n\r\n // other browser\r\n return result;\r\n })(),\r\n cssCalc : (function() {\r\n var dummyStyle = document.createElement('div')[LEXICON.s];\r\n var strCalc = 'calc';\r\n var i = -1;\r\n var prop;\r\n\r\n for(; i < VENDORS._cssPrefixes[LEXICON.l]; i++) {\r\n prop = i < 0 ? strCalc : VENDORS._cssPrefixes[i] + strCalc;\r\n dummyStyle.cssText = 'width:' + prop + '(1px);';\r\n if (dummyStyle[LEXICON.l])\r\n return prop;\r\n }\r\n return null;\r\n })(),\r\n restrictedMeasuring : (function() {\r\n //https://bugzilla.mozilla.org/show_bug.cgi?id=1439305\r\n scrollbarDummyElement.css(strOverflow, strHidden);\r\n var scrollSize = {\r\n w : scrollbarDummyElement0[LEXICON.sW],\r\n h : scrollbarDummyElement0[LEXICON.sH]\r\n };\r\n scrollbarDummyElement.css(strOverflow, 'visible');\r\n var scrollSize2 = {\r\n w : scrollbarDummyElement0[LEXICON.sW],\r\n h : scrollbarDummyElement0[LEXICON.sH]\r\n };\r\n return (scrollSize.w - scrollSize2.w) !== 0 || (scrollSize.h - scrollSize2.h) !== 0;\r\n })(),\r\n rtlScrollBehavior : (function() {\r\n scrollbarDummyElement.css({ 'overflow-y' : strHidden, 'overflow-x' : strScroll, 'direction' : 'rtl' }).scrollLeft(0);\r\n var dummyContainerOffset = scrollbarDummyElement.offset();\r\n var dummyContainerChildOffset = dummyContainerChild.offset();\r\n scrollbarDummyElement.scrollLeft(999);\r\n var dummyContainerScrollOffsetAfterScroll = dummyContainerChild.offset();\r\n return {\r\n //origin direction = determines if the zero scroll position is on the left or right side\r\n //'i' means 'invert' (i === true means that the axis must be inverted to be correct)\r\n //true = on the left side\r\n //false = on the right side\r\n i : dummyContainerOffset.left === dummyContainerChildOffset.left,\r\n //negative = determines if the maximum scroll is positive or negative\r\n //'n' means 'negate' (n === true means that the axis must be negated to be correct)\r\n //true = negative\r\n //false = positive\r\n n : dummyContainerChildOffset.left - dummyContainerScrollOffsetAfterScroll.left === 0\r\n };\r\n })(),\r\n supportTransform : VENDORS._cssProperty('transform') !== null,\r\n supportTransition : VENDORS._cssProperty('transition') !== null,\r\n supportPassiveEvents : (function() {\r\n var supportsPassive = false;\r\n try {\r\n window.addEventListener('test', null, Object.defineProperty({ }, 'passive', {\r\n get: function() {\r\n supportsPassive = true;\r\n }\r\n }));\r\n } catch (e) { }\r\n return supportsPassive;\r\n })(),\r\n supportResizeObserver : !!COMPATIBILITY.rO(),\r\n supportMutationObserver : !!COMPATIBILITY.mO()\r\n });\r\n\r\n scrollbarDummyElement.removeAttr(LEXICON.s).remove();\r\n\r\n //Catch zoom event:\r\n (function () {\r\n if(nativeScrollbarIsOverlaid.x && nativeScrollbarIsOverlaid.y)\r\n return;\r\n\r\n var abs = MATH.abs;\r\n var windowWidth = COMPATIBILITY.wW();\r\n var windowHeight = COMPATIBILITY.wH();\r\n var windowDpr = getWindowDPR();\r\n var onResize = function() {\r\n if(INSTANCES().length > 0) {\r\n var newW = COMPATIBILITY.wW();\r\n var newH = COMPATIBILITY.wH();\r\n var deltaW = newW - windowWidth;\r\n var deltaH = newH - windowHeight;\r\n\r\n if (deltaW === 0 && deltaH === 0)\r\n return;\r\n\r\n var deltaWRatio = MATH.round(newW / (windowWidth / 100.0));\r\n var deltaHRatio = MATH.round(newH / (windowHeight / 100.0));\r\n var absDeltaW = abs(deltaW);\r\n var absDeltaH = abs(deltaH);\r\n var absDeltaWRatio = abs(deltaWRatio);\r\n var absDeltaHRatio = abs(deltaHRatio);\r\n var newDPR = getWindowDPR();\r\n\r\n var deltaIsBigger = absDeltaW > 2 && absDeltaH > 2;\r\n var difference = !differenceIsBiggerThanOne(absDeltaWRatio, absDeltaHRatio);\r\n var dprChanged = newDPR !== windowDpr && windowDpr > 0;\r\n var isZoom = deltaIsBigger && difference && dprChanged;\r\n var oldScrollbarSize = _base.nativeScrollbarSize;\r\n var newScrollbarSize;\r\n\r\n if (isZoom) {\r\n bodyElement.append(scrollbarDummyElement);\r\n newScrollbarSize = _base.nativeScrollbarSize = calcNativeScrollbarSize(scrollbarDummyElement[0]);\r\n scrollbarDummyElement.remove();\r\n if(oldScrollbarSize.x !== newScrollbarSize.x || oldScrollbarSize.y !== newScrollbarSize.y) {\r\n FRAMEWORK.each(INSTANCES(), function () {\r\n if(INSTANCES(this))\r\n INSTANCES(this).update('zoom');\r\n });\r\n }\r\n }\r\n\r\n windowWidth = newW;\r\n windowHeight = newH;\r\n windowDpr = newDPR;\r\n }\r\n };\r\n\r\n function differenceIsBiggerThanOne(valOne, valTwo) {\r\n var absValOne = abs(valOne);\r\n var absValTwo = abs(valTwo);\r\n return !(absValOne === absValTwo || absValOne + 1 === absValTwo || absValOne - 1 === absValTwo);\r\n }\r\n\r\n function getWindowDPR() {\r\n var dDPI = window.screen.deviceXDPI || 0;\r\n var sDPI = window.screen.logicalXDPI || 1;\r\n return window.devicePixelRatio || (dDPI / sDPI);\r\n }\r\n\r\n FRAMEWORK(window).on('resize', onResize);\r\n })();\r\n\r\n function calcNativeScrollbarSize(measureElement) {\r\n return {\r\n x: measureElement[LEXICON.oH] - measureElement[LEXICON.cH],\r\n y: measureElement[LEXICON.oW] - measureElement[LEXICON.cW]\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * The object which manages the auto update loop for all OverlayScrollbars objects. This object is initialized only once: if the first OverlayScrollbars object gets initialized.\r\n * @constructor\r\n */\r\n function OverlayScrollbarsAutoUpdateLoop(globals) {\r\n var _base = this;\r\n var _inArray = FRAMEWORK.inArray;\r\n var _getNow = COMPATIBILITY.now;\r\n var _strAutoUpdate = 'autoUpdate';\r\n var _strAutoUpdateInterval = _strAutoUpdate + 'Interval';\r\n var _strLength = LEXICON.l;\r\n var _loopingInstances = [ ];\r\n var _loopingInstancesIntervalCache = [ ];\r\n var _loopIsActive = false;\r\n var _loopIntervalDefault = 33;\r\n var _loopInterval = _loopIntervalDefault;\r\n var _loopTimeOld = _getNow();\r\n var _loopID;\r\n \r\n\r\n /**\r\n * The auto update loop which will run every 50 milliseconds or less if the update interval of a instance is lower than 50 milliseconds.\r\n */\r\n var loop = function() {\r\n if(_loopingInstances[_strLength] > 0 && _loopIsActive) {\r\n _loopID = COMPATIBILITY.rAF()(function () {\r\n loop();\r\n });\r\n var timeNew = _getNow();\r\n var timeDelta = timeNew - _loopTimeOld;\r\n var lowestInterval;\r\n var instance;\r\n var instanceOptions;\r\n var instanceAutoUpdateAllowed;\r\n var instanceAutoUpdateInterval;\r\n var now;\r\n\r\n if (timeDelta > _loopInterval) {\r\n _loopTimeOld = timeNew - (timeDelta % _loopInterval);\r\n lowestInterval = _loopIntervalDefault;\r\n for(var i = 0; i < _loopingInstances[_strLength]; i++) {\r\n instance = _loopingInstances[i];\r\n if (instance !== undefined) {\r\n instanceOptions = instance.options();\r\n instanceAutoUpdateAllowed = instanceOptions[_strAutoUpdate];\r\n instanceAutoUpdateInterval = MATH.max(1, instanceOptions[_strAutoUpdateInterval]);\r\n now = _getNow();\r\n\r\n if ((instanceAutoUpdateAllowed === true || instanceAutoUpdateAllowed === null) && (now - _loopingInstancesIntervalCache[i]) > instanceAutoUpdateInterval) {\r\n instance.update('auto');\r\n _loopingInstancesIntervalCache[i] = new Date(now += instanceAutoUpdateInterval);\r\n }\r\n\r\n lowestInterval = MATH.max(1, MATH.min(lowestInterval, instanceAutoUpdateInterval));\r\n }\r\n }\r\n _loopInterval = lowestInterval;\r\n }\r\n } else {\r\n _loopInterval = _loopIntervalDefault;\r\n }\r\n };\r\n\r\n /**\r\n * Add OverlayScrollbars instance to the auto update loop. Only successful if the instance isn't already added.\r\n * @param instance The instance which shall be updated in a loop automatically.\r\n */\r\n _base.add = function(instance) {\r\n if(_inArray(instance, _loopingInstances) === -1) {\r\n _loopingInstances.push(instance);\r\n _loopingInstancesIntervalCache.push(_getNow());\r\n if (_loopingInstances[_strLength] > 0 && !_loopIsActive) {\r\n _loopIsActive = true;\r\n globals.autoUpdateLoop = _loopIsActive;\r\n loop();\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Remove OverlayScrollbars instance from the auto update loop. Only successful if the instance was added before.\r\n * @param instance The instance which shall be updated in a loop automatically.\r\n */\r\n _base.remove = function(instance) {\r\n var index = _inArray(instance, _loopingInstances);\r\n if(index > -1) {\r\n //remove from loopingInstances list\r\n _loopingInstancesIntervalCache.splice(index, 1);\r\n _loopingInstances.splice(index, 1);\r\n\r\n //correct update loop behavior\r\n if (_loopingInstances[_strLength] === 0 && _loopIsActive) {\r\n _loopIsActive = false;\r\n globals.autoUpdateLoop = _loopIsActive;\r\n if(_loopID !== undefined) {\r\n COMPATIBILITY.cAF()(_loopID);\r\n _loopID = -1;\r\n }\r\n }\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * A object which manages the scrollbars visibility of the target element.\r\n * @param pluginTargetElement The element from which the scrollbars shall be hidden.\r\n * @param options The custom options.\r\n * @param extensions The custom extensions.\r\n * @param globals\r\n * @param autoUpdateLoop\r\n * @returns {*}\r\n * @constructor\r\n */\r\n function OverlayScrollbarsInstance(pluginTargetElement, options, extensions, globals, autoUpdateLoop) {\r\n //shortcuts\r\n var type = COMPATIBILITY.type;\r\n var inArray = FRAMEWORK.inArray;\r\n var each = FRAMEWORK.each;\r\n \r\n //make correct instanceof\r\n var _base = new _plugin();\r\n var _frameworkProto = FRAMEWORK[LEXICON.p];\r\n \r\n //if passed element is no HTML element: skip and return\r\n if(!isHTMLElement(pluginTargetElement))\r\n return;\r\n \r\n //if passed element is already initialized: set passed options if there are any and return its instance\r\n if(INSTANCES(pluginTargetElement)) {\r\n var inst = INSTANCES(pluginTargetElement);\r\n inst.options(options);\r\n return inst;\r\n }\r\n\r\n //globals:\r\n var _nativeScrollbarIsOverlaid;\r\n var _overlayScrollbarDummySize;\r\n var _rtlScrollBehavior;\r\n var _autoUpdateRecommended;\r\n var _msieVersion;\r\n var _nativeScrollbarStyling;\r\n var _cssCalc;\r\n var _nativeScrollbarSize;\r\n var _supportTransition;\r\n var _supportTransform;\r\n var _supportPassiveEvents;\r\n var _supportResizeObserver;\r\n var _supportMutationObserver;\r\n var _restrictedMeasuring;\r\n\r\n //general readonly:\r\n var _initialized;\r\n var _destroyed;\r\n var _isTextarea;\r\n var _isBody;\r\n var _documentMixed;\r\n var _isTextareaHostGenerated;\r\n\r\n //general:\r\n var _isBorderBox;\r\n var _sizeAutoObserverAdded;\r\n var _paddingX;\r\n var _paddingY;\r\n var _borderX;\r\n var _borderY;\r\n var _marginX;\r\n var _marginY;\r\n var _isRTL;\r\n var _sleeping;\r\n var _contentBorderSize = { };\r\n var _scrollHorizontalInfo = { };\r\n var _scrollVerticalInfo = { };\r\n var _viewportSize = { };\r\n var _nativeScrollbarMinSize = { };\r\n\r\n //naming:\r\n var _strMinusHidden = '-hidden';\r\n var _strMarginMinus = 'margin-';\r\n var _strPaddingMinus = 'padding-';\r\n var _strBorderMinus = 'border-';\r\n var _strTop = 'top';\r\n var _strRight = 'right';\r\n var _strBottom = 'bottom';\r\n var _strLeft = 'left';\r\n var _strMinMinus = 'min-';\r\n var _strMaxMinus = 'max-';\r\n var _strWidth = 'width';\r\n var _strHeight = 'height';\r\n var _strFloat = 'float';\r\n var _strEmpty = '';\r\n var _strAuto = 'auto';\r\n var _strSync = 'sync';\r\n var _strScroll = 'scroll';\r\n var _strHundredPercent = '100%';\r\n var _strX = 'x';\r\n var _strY = 'y';\r\n var _strDot = '.';\r\n var _strSpace = ' ';\r\n var _strScrollbar = 'scrollbar';\r\n var _strMinusHorizontal = '-horizontal';\r\n var _strMinusVertical = '-vertical';\r\n var _strScrollLeft = _strScroll + 'Left';\r\n var _strScrollTop = _strScroll + 'Top';\r\n var _strMouseTouchDownEvent = 'mousedown touchstart';\r\n var _strMouseTouchUpEvent = 'mouseup touchend touchcancel';\r\n var _strMouseTouchMoveEvent = 'mousemove touchmove';\r\n var _strMouseTouchEnter = 'mouseenter';\r\n var _strMouseTouchLeave = 'mouseleave';\r\n var _strKeyDownEvent = 'keydown';\r\n var _strKeyUpEvent = 'keyup';\r\n var _strSelectStartEvent = 'selectstart';\r\n var _strTransitionEndEvent = 'transitionend webkitTransitionEnd oTransitionEnd';\r\n var _strResizeObserverProperty = '__overlayScrollbarsRO__';\r\n\r\n //class names:\r\n var _cassNamesPrefix = 'os-';\r\n var _classNameHTMLElement = _cassNamesPrefix + 'html';\r\n var _classNameHostElement = _cassNamesPrefix + 'host';\r\n var _classNameHostTextareaElement = _classNameHostElement + '-textarea';\r\n var _classNameHostScrollbarHorizontalHidden = _classNameHostElement + '-' + _strScrollbar + _strMinusHorizontal + _strMinusHidden;\r\n var _classNameHostScrollbarVerticalHidden = _classNameHostElement + '-' + _strScrollbar + _strMinusVertical + _strMinusHidden;\r\n var _classNameHostTransition = _classNameHostElement + '-transition';\r\n var _classNameHostRTL = _classNameHostElement + '-rtl';\r\n var _classNameHostResizeDisabled = _classNameHostElement + '-resize-disabled';\r\n var _classNameHostScrolling = _classNameHostElement + '-scrolling';\r\n var _classNameHostOverflow = _classNameHostElement + '-overflow';\r\n var _classNameHostOverflowX = _classNameHostOverflow + '-x';\r\n var _classNameHostOverflowY = _classNameHostOverflow + '-y';\r\n var _classNameTextareaElement = _cassNamesPrefix + 'textarea';\r\n var _classNameTextareaCoverElement = _classNameTextareaElement + '-cover';\r\n var _classNamePaddingElement = _cassNamesPrefix + 'padding';\r\n var _classNameViewportElement = _cassNamesPrefix + 'viewport';\r\n var _classNameViewportNativeScrollbarsInvisible = _classNameViewportElement + '-native-scrollbars-invisible';\r\n var _classNameViewportNativeScrollbarsOverlaid = _classNameViewportElement + '-native-scrollbars-overlaid';\r\n var _classNameContentElement = _cassNamesPrefix + 'content';\r\n var _classNameContentArrangeElement = _cassNamesPrefix + 'content-arrange';\r\n var _classNameContentGlueElement = _cassNamesPrefix + 'content-glue';\r\n var _classNameSizeAutoObserverElement = _cassNamesPrefix + 'size-auto-observer';\r\n var _classNameResizeObserverElement = _cassNamesPrefix + 'resize-observer';\r\n var _classNameResizeObserverItemElement = _cassNamesPrefix + 'resize-observer-item';\r\n var _classNameResizeObserverItemFinalElement = _classNameResizeObserverItemElement + '-final';\r\n var _classNameTextInherit = _cassNamesPrefix + 'text-inherit';\r\n var _classNameScrollbar = _cassNamesPrefix + _strScrollbar;\r\n var _classNameScrollbarTrack = _classNameScrollbar + '-track';\r\n var _classNameScrollbarTrackOff = _classNameScrollbarTrack + '-off';\r\n var _classNameScrollbarHandle = _classNameScrollbar + '-handle';\r\n var _classNameScrollbarHandleOff = _classNameScrollbarHandle + '-off';\r\n var _classNameScrollbarUnusable = _classNameScrollbar + '-unusable';\r\n var _classNameScrollbarAutoHidden = _classNameScrollbar + '-' + _strAuto + _strMinusHidden;\r\n var _classNameScrollbarCorner = _classNameScrollbar + '-corner';\r\n var _classNameScrollbarCornerResize = _classNameScrollbarCorner + '-resize';\r\n var _classNameScrollbarCornerResizeB = _classNameScrollbarCornerResize + '-both';\r\n var _classNameScrollbarCornerResizeH = _classNameScrollbarCornerResize + _strMinusHorizontal;\r\n var _classNameScrollbarCornerResizeV = _classNameScrollbarCornerResize + _strMinusVertical;\r\n var _classNameScrollbarHorizontal = _classNameScrollbar + _strMinusHorizontal;\r\n var _classNameScrollbarVertical = _classNameScrollbar + _strMinusVertical;\r\n var _classNameDragging = _cassNamesPrefix + 'dragging';\r\n var _classNameThemeNone = _cassNamesPrefix + 'theme-none';\r\n\r\n //callbacks:\r\n var _callbacksInitQeueue = [ ];\r\n\r\n //options:\r\n var _defaultOptions;\r\n var _currentOptions;\r\n var _currentPreparedOptions;\r\n\r\n //extensions:\r\n var _extensions = { };\r\n var _extensionsPrivateMethods = 'added removed on contract';\r\n\r\n //update\r\n var _lastUpdateTime;\r\n var _swallowedUpdateHints = { };\r\n var _swallowedUpdateTimeout;\r\n var _swallowUpdateLag = 42;\r\n var _imgs = [ ];\r\n\r\n //DOM elements:\r\n var _windowElement;\r\n var _documentElement;\r\n var _htmlElement;\r\n var _bodyElement;\r\n var _targetElement; //the target element of this OverlayScrollbars object\r\n var _hostElement; //the host element of this OverlayScrollbars object -> may be the same as targetElement\r\n var _sizeAutoObserverElement; //observes size auto changes\r\n var _sizeObserverElement; //observes size and padding changes\r\n var _paddingElement; //manages the padding\r\n var _viewportElement; //is the viewport of our scrollbar model\r\n var _contentElement; //the element which holds the content\r\n var _contentArrangeElement; //is needed for correct sizing of the content element (only if native scrollbars are overlays)\r\n var _contentGlueElement; //has always the size of the content element\r\n var _textareaCoverElement; //only applied if target is a textarea element. Used for correct size calculation and for prevention of uncontrolled scrolling\r\n var _scrollbarCornerElement;\r\n var _scrollbarHorizontalElement;\r\n var _scrollbarHorizontalTrackElement;\r\n var _scrollbarHorizontalHandleElement;\r\n var _scrollbarVerticalElement;\r\n var _scrollbarVerticalTrackElement;\r\n var _scrollbarVerticalHandleElement;\r\n var _windowElementNative;\r\n var _documentElementNative;\r\n var _targetElementNative;\r\n var _hostElementNative;\r\n var _sizeAutoObserverElementNative;\r\n var _sizeObserverElementNative;\r\n var _paddingElementNative;\r\n var _viewportElementNative;\r\n var _contentElementNative;\r\n\r\n //Cache:\r\n var _hostSizeCache;\r\n var _contentScrollSizeCache;\r\n var _arrangeContentSizeCache;\r\n var _hasOverflowCache;\r\n var _hideOverflowCache;\r\n var _widthAutoCache;\r\n var _heightAutoCache;\r\n var _cssMaxValueCache;\r\n var _cssBoxSizingCache;\r\n var _cssPaddingCache;\r\n var _cssBorderCache;\r\n var _cssMarginCache;\r\n var _cssDirectionCache;\r\n var _cssDirectionDetectedCache;\r\n var _paddingAbsoluteCache;\r\n var _clipAlwaysCache;\r\n var _contentGlueSizeCache;\r\n var _overflowBehaviorCache;\r\n var _overflowAmountCache;\r\n var _ignoreOverlayScrollbarHidingCache;\r\n var _autoUpdateCache;\r\n var _sizeAutoCapableCache;\r\n var _contentElementScrollSizeChangeDetectedCache;\r\n var _hostElementSizeChangeDetectedCache;\r\n var _scrollbarsVisibilityCache;\r\n var _scrollbarsAutoHideCache;\r\n var _scrollbarsClickScrollingCache;\r\n var _scrollbarsDragScrollingCache;\r\n var _resizeCache;\r\n var _normalizeRTLCache;\r\n var _classNameCache;\r\n var _oldClassName;\r\n var _textareaAutoWrappingCache;\r\n var _textareaInfoCache;\r\n var _textareaSizeCache;\r\n var _textareaDynHeightCache;\r\n var _textareaDynWidthCache;\r\n var _bodyMinSizeCache;\r\n var _viewportScrollSizeCache;\r\n var _displayIsHiddenCache;\r\n var _updateAutoCache = { };\r\n\r\n //MutationObserver:\r\n var _mutationObserverHost;\r\n var _mutationObserverContent;\r\n var _mutationObserverHostCallback;\r\n var _mutationObserverContentCallback;\r\n var _mutationObserversConnected;\r\n var _mutationObserverAttrsTextarea = ['wrap', 'cols', 'rows'];\r\n var _mutationObserverAttrsHost = [LEXICON.i, LEXICON.c, LEXICON.s, 'open'];\r\n\r\n //textarea:\r\n var _textareaEvents;\r\n var _textareaHasFocus;\r\n\r\n //scrollbars:\r\n var _scrollbarsAutoHideTimeoutId;\r\n var _scrollbarsAutoHideMoveTimeoutId;\r\n var _scrollbarsAutoHideDelay;\r\n var _scrollbarsAutoHideNever;\r\n var _scrollbarsAutoHideScroll;\r\n var _scrollbarsAutoHideMove;\r\n var _scrollbarsAutoHideLeave;\r\n var _scrollbarsHandleHovered;\r\n var _scrollbarsHandlesDefineScrollPos;\r\n\r\n //resize\r\n var _resizeReconnectMutationObserver;\r\n var _resizeNone;\r\n var _resizeBoth;\r\n var _resizeHorizontal;\r\n var _resizeVertical;\r\n var _resizeOnMouseTouchDown;\r\n \r\n \r\n //==== Passive Event Listener ====//\r\n\r\n /**\r\n * Adds or removes a passive event listener from the given element.\r\n * @param element The element to which the event listener shall be applied or removed.\r\n * @param eventNames The name(s) of the events.\r\n * @param listener The method which shall be called.\r\n * @param remove True if the handler shall be removed, false or undefined if the handler shall be added.\r\n */\r\n function setupPassiveEventListener(element, eventNames, listener, remove, notPassive) {\r\n var method = remove ? 'removeEventListener' : 'addEventListener';\r\n var events = eventNames.split(_strSpace);\r\n var i = 0;\r\n\r\n for (; i < events[LEXICON.l]; i++) {\r\n element[0][method](events[i], listener, { passive: !notPassive });\r\n }\r\n }\r\n\r\n\r\n //==== Resize Observer ====//\r\n\r\n /**\r\n * Adds or removes a resize observer from the given element.\r\n * @param targetElement The element to which the resize observer shall be added or removed.\r\n * @param onElementResizedCallback The callback which is fired every time the resize observer registers a size change or false / undefined if the resizeObserver shall be removed.\r\n */\r\n function setupResizeObserver(targetElement, onElementResizedCallback) {\r\n if(targetElement) {\r\n //add resize observer:\r\n if(onElementResizedCallback) {\r\n var constMaximum = 3333333;\r\n var resizeObserver = COMPATIBILITY.rO();\r\n var strAnimationStartEvent = 'animationstart mozAnimationStart webkitAnimationStart MSAnimationStart';\r\n var strChildNodes = 'childNodes';\r\n var callback = function () {\r\n targetElement[_strScrollTop](constMaximum)[_strScrollLeft](_isRTL ? _rtlScrollBehavior.n ? -constMaximum : _rtlScrollBehavior.i ? 0 : constMaximum : constMaximum);\r\n onElementResizedCallback();\r\n };\r\n if (_supportResizeObserver) {\r\n var element = targetElement.append(generateDiv(_classNameResizeObserverElement + ' observed')).contents()[0];\r\n var observer = element[_strResizeObserverProperty] = new resizeObserver(callback);\r\n observer.observe(element);\r\n }\r\n else {\r\n if (_msieVersion > 9 || !_autoUpdateRecommended) {\r\n targetElement.prepend(\r\n generateDiv(_classNameResizeObserverElement,\r\n generateDiv({ className : _classNameResizeObserverItemElement, dir : \"ltr\" },\r\n generateDiv(_classNameResizeObserverItemElement,\r\n generateDiv(_classNameResizeObserverItemFinalElement)\r\n ) +\r\n generateDiv(_classNameResizeObserverItemElement,\r\n generateDiv({ className : _classNameResizeObserverItemFinalElement, style : 'width: 200%; height: 200%' })\r\n )\r\n )\r\n )\r\n );\r\n\r\n var observerElement = targetElement[0][strChildNodes][0][strChildNodes][0];\r\n var shrinkElement = FRAMEWORK(observerElement[strChildNodes][1]);\r\n var expandElement = FRAMEWORK(observerElement[strChildNodes][0]);\r\n var expandElementChild = FRAMEWORK(expandElement[0][strChildNodes][0]);\r\n var widthCache = observerElement[LEXICON.oW];\r\n var heightCache = observerElement[LEXICON.oH];\r\n var isDirty;\r\n var rAFId;\r\n var currWidth;\r\n var currHeight;\r\n var factor = 2;\r\n var nativeScrollbarSize = globals.nativeScrollbarSize; //care don't make changes to this object!!!\r\n var reset = function () {\r\n /*\r\n var sizeResetWidth = observerElement[LEXICON.oW] + nativeScrollbarSize.x * factor + nativeScrollbarSize.y * factor + _overlayScrollbarDummySize.x + _overlayScrollbarDummySize.y;\r\n var sizeResetHeight = observerElement[LEXICON.oH] + nativeScrollbarSize.x * factor + nativeScrollbarSize.y * factor + _overlayScrollbarDummySize.x + _overlayScrollbarDummySize.y;\r\n var expandChildCSS = {};\r\n expandChildCSS[_strWidth] = sizeResetWidth;\r\n expandChildCSS[_strHeight] = sizeResetHeight;\r\n expandElementChild.css(expandChildCSS);\r\n\r\n\r\n expandElement[_strScrollLeft](sizeResetWidth)[_strScrollTop](sizeResetHeight);\r\n shrinkElement[_strScrollLeft](sizeResetWidth)[_strScrollTop](sizeResetHeight);\r\n */\r\n expandElement[_strScrollLeft](constMaximum)[_strScrollTop](constMaximum);\r\n shrinkElement[_strScrollLeft](constMaximum)[_strScrollTop](constMaximum);\r\n };\r\n var onResized = function () {\r\n rAFId = 0;\r\n if (!isDirty)\r\n return;\r\n\r\n widthCache = currWidth;\r\n heightCache = currHeight;\r\n callback();\r\n };\r\n var onScroll = function (event) {\r\n currWidth = observerElement[LEXICON.oW];\r\n currHeight = observerElement[LEXICON.oH];\r\n isDirty = currWidth != widthCache || currHeight != heightCache;\r\n\r\n if (event && isDirty && !rAFId) {\r\n COMPATIBILITY.cAF()(rAFId);\r\n rAFId = COMPATIBILITY.rAF()(onResized);\r\n }\r\n else if(!event)\r\n onResized();\r\n\r\n reset();\r\n if (event) {\r\n COMPATIBILITY.prvD(event);\r\n COMPATIBILITY.stpP(event);\r\n }\r\n return false;\r\n };\r\n var expandChildCSS = {};\r\n var observerElementCSS = {};\r\n\r\n setTopRightBottomLeft(observerElementCSS, _strEmpty, [\r\n -((nativeScrollbarSize.y + 1) * factor),\r\n nativeScrollbarSize.x * -factor,\r\n nativeScrollbarSize.y * -factor,\r\n -((nativeScrollbarSize.x + 1) * factor)\r\n ]);\r\n\r\n FRAMEWORK(observerElement).css(observerElementCSS);\r\n expandElement.on(_strScroll, onScroll);\r\n shrinkElement.on(_strScroll, onScroll);\r\n targetElement.on(strAnimationStartEvent, function () {\r\n onScroll(false);\r\n });\r\n //lets assume that the divs will never be that large and a constant value is enough\r\n expandChildCSS[_strWidth] = constMaximum;\r\n expandChildCSS[_strHeight] = constMaximum;\r\n expandElementChild.css(expandChildCSS);\r\n\r\n reset();\r\n }\r\n else {\r\n var attachEvent = _documentElementNative.attachEvent;\r\n var isIE = _msieVersion !== undefined;\r\n if (attachEvent) {\r\n targetElement.prepend(generateDiv(_classNameResizeObserverElement));\r\n findFirst(targetElement, _strDot + _classNameResizeObserverElement)[0].attachEvent('onresize', callback);\r\n }\r\n else {\r\n var obj = _documentElementNative.createElement(TYPES.o);\r\n obj.setAttribute('tabindex', '-1');\r\n obj.setAttribute(LEXICON.c, _classNameResizeObserverElement);\r\n obj.onload = function () {\r\n var wnd = this.contentDocument.defaultView;\r\n wnd.addEventListener('resize', callback);\r\n wnd.document.documentElement.style.display = 'none';\r\n };\r\n obj.type = 'text/html';\r\n if (isIE)\r\n targetElement.prepend(obj);\r\n obj.data = 'about:blank';\r\n if (!isIE)\r\n targetElement.prepend(obj);\r\n targetElement.on(strAnimationStartEvent, callback);\r\n }\r\n }\r\n }\r\n\r\n //direction change detection:\r\n if (targetElement[0] === _sizeObserverElementNative) {\r\n var directionChanged = function () {\r\n var dir = _hostElement.css('direction');\r\n var css = {};\r\n var scrollLeftValue = 0;\r\n var result = false;\r\n if (dir !== _cssDirectionDetectedCache) {\r\n if (dir === 'ltr') {\r\n css[_strLeft] = 0;\r\n css[_strRight] = _strAuto;\r\n scrollLeftValue = constMaximum;\r\n }\r\n else {\r\n css[_strLeft] = _strAuto;\r\n css[_strRight] = 0;\r\n scrollLeftValue = _rtlScrollBehavior.n ? -constMaximum : _rtlScrollBehavior.i ? 0 : constMaximum;\r\n }\r\n _sizeObserverElement.children().eq(0).css(css);\r\n targetElement[_strScrollLeft](scrollLeftValue)[_strScrollTop](constMaximum);\r\n _cssDirectionDetectedCache = dir;\r\n result = true;\r\n }\r\n return result;\r\n };\r\n directionChanged();\r\n targetElement.on(_strScroll, function (event) {\r\n if (directionChanged())\r\n update();\r\n COMPATIBILITY.prvD(event);\r\n COMPATIBILITY.stpP(event);\r\n return false;\r\n });\r\n }\r\n }\r\n //remove resize observer:\r\n else {\r\n if (_supportResizeObserver) {\r\n var element = targetElement.contents()[0];\r\n var resizeObserverObj = element[_strResizeObserverProperty];\r\n if(resizeObserverObj) {\r\n resizeObserverObj.disconnect();\r\n delete element[_strResizeObserverProperty];\r\n }\r\n }\r\n else {\r\n remove(targetElement.children(_strDot + _classNameResizeObserverElement).eq(0));\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Freezes or unfreezes the given resize observer.\r\n * @param targetElement The element to which the target resize observer is applied.\r\n * @param freeze True if the resize observer shall be frozen, false otherwise.\r\n \r\n function freezeResizeObserver(targetElement, freeze) {\r\n if (targetElement !== undefined) {\r\n if(freeze) {\r\n if (_supportResizeObserver) {\r\n var element = targetElement.contents()[0];\r\n element[_strResizeObserverProperty].unobserve(element);\r\n }\r\n else {\r\n targetElement = targetElement.children(_strDot + _classNameResizeObserverElement).eq(0);\r\n var w = targetElement.css(_strWidth);\r\n var h = targetElement.css(_strHeight);\r\n var css = {};\r\n css[_strWidth] = w;\r\n css[_strHeight] = h;\r\n targetElement.css(css);\r\n }\r\n }\r\n else {\r\n if (_supportResizeObserver) {\r\n var element = targetElement.contents()[0];\r\n element[_strResizeObserverProperty].observe(element);\r\n }\r\n else {\r\n var css = { };\r\n css[_strHeight] = _strEmpty;\r\n css[_strWidth] = _strEmpty;\r\n targetElement.children(_strDot + _classNameResizeObserverElement).eq(0).css(css);\r\n }\r\n }\r\n }\r\n }\r\n */\r\n\r\n\r\n //==== Mutation Observers ====//\r\n\r\n /**\r\n * Creates MutationObservers for the host and content Element if they are supported.\r\n */\r\n function createMutationObservers() {\r\n if (_supportMutationObserver) {\r\n var mutationObserverContentLag = 11;\r\n var mutationObserver = COMPATIBILITY.mO();\r\n var contentLastUpdate = COMPATIBILITY.now();\r\n var mutationTarget;\r\n var mutationAttrName;\r\n var contentTimeout;\r\n var now;\r\n var sizeAuto;\r\n var action;\r\n\r\n _mutationObserverHostCallback = function(mutations) {\r\n var doUpdate = false;\r\n var mutation;\r\n \r\n if (_initialized && !_sleeping) {\r\n each(mutations, function () {\r\n mutation = this;\r\n mutationTarget = mutation.target;\r\n mutationAttrName = mutation.attributeName;\r\n\r\n if (mutationAttrName === LEXICON.c)\r\n doUpdate = hostClassNamesChanged(mutation.oldValue, mutationTarget.className);\r\n else if (mutationAttrName === LEXICON.s)\r\n doUpdate = mutation.oldValue !== mutationTarget[LEXICON.s].cssText;\r\n else\r\n doUpdate = true;\r\n\r\n if (doUpdate)\r\n return false;\r\n });\r\n\r\n if (doUpdate)\r\n _base.update(_strAuto);\r\n }\r\n return doUpdate;\r\n };\r\n _mutationObserverContentCallback = function (mutations) {\r\n var doUpdate = false;\r\n var mutation;\r\n \r\n if (_initialized && !_sleeping) {\r\n each(mutations, function () {\r\n mutation = this;\r\n doUpdate = isUnknownMutation(mutation);\r\n return !doUpdate;\r\n });\r\n\r\n if (doUpdate) {\r\n now = COMPATIBILITY.now();\r\n sizeAuto = (_heightAutoCache || _widthAutoCache);\r\n action = function () {\r\n if(!_destroyed) {\r\n contentLastUpdate = now;\r\n\r\n //if cols, rows or wrap attr was changed\r\n if (_isTextarea)\r\n textareaUpdate();\r\n\r\n if (sizeAuto)\r\n update();\r\n else\r\n _base.update(_strAuto);\r\n }\r\n };\r\n clearTimeout(contentTimeout);\r\n if (mutationObserverContentLag <= 0 || now - contentLastUpdate > mutationObserverContentLag || !sizeAuto)\r\n action();\r\n else\r\n contentTimeout = setTimeout(action, mutationObserverContentLag);\r\n }\r\n }\r\n return doUpdate;\r\n }\r\n\r\n _mutationObserverHost = new mutationObserver(_mutationObserverHostCallback);\r\n _mutationObserverContent = new mutationObserver(_mutationObserverContentCallback);\r\n }\r\n }\r\n\r\n /**\r\n * Connects the MutationObservers if they are supported.\r\n */\r\n function connectMutationObservers() {\r\n if (_supportMutationObserver && !_mutationObserversConnected) {\r\n _mutationObserverHost.observe(_hostElementNative, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n attributeFilter: _mutationObserverAttrsHost\r\n });\r\n\r\n _mutationObserverContent.observe(_isTextarea ? _targetElementNative : _contentElementNative, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n subtree: !_isTextarea,\r\n childList: !_isTextarea,\r\n characterData: !_isTextarea,\r\n attributeFilter: _isTextarea ? _mutationObserverAttrsTextarea : _mutationObserverAttrsHost\r\n });\r\n\r\n _mutationObserversConnected = true;\r\n }\r\n }\r\n\r\n /**\r\n * Disconnects the MutationObservers if they are supported.\r\n */\r\n function disconnectMutationObservers() {\r\n if (_supportMutationObserver && _mutationObserversConnected) {\r\n _mutationObserverHost.disconnect();\r\n _mutationObserverContent.disconnect();\r\n\r\n _mutationObserversConnected = false;\r\n }\r\n }\r\n\r\n \r\n //==== Events of elements ====//\r\n\r\n /**\r\n * This method gets called every time the host element gets resized. IMPORTANT: Padding changes are detected too!!\r\n * It refreshes the hostResizedEventArgs and the hostSizeResizeCache.\r\n * If there are any size changes, the update method gets called.\r\n */\r\n function hostOnResized() {\r\n if (!_sleeping) {\r\n var changed;\r\n var hostSize = {\r\n w: _sizeObserverElementNative[LEXICON.sW],\r\n h: _sizeObserverElementNative[LEXICON.sH]\r\n };\r\n \r\n changed = checkCache(hostSize, _hostElementSizeChangeDetectedCache);\r\n _hostElementSizeChangeDetectedCache = hostSize;\r\n if (changed)\r\n update({ _hostSizeChanged : true });\r\n }\r\n }\r\n\r\n /**\r\n * The mouse enter event of the host element. This event is only needed for the autoHide feature.\r\n */\r\n function hostOnMouseEnter() {\r\n if (_scrollbarsAutoHideLeave)\r\n refreshScrollbarsAutoHide(true);\r\n }\r\n\r\n /**\r\n * The mouse leave event of the host element. This event is only needed for the autoHide feature.\r\n */\r\n function hostOnMouseLeave() {\r\n if (_scrollbarsAutoHideLeave && !_bodyElement.hasClass(_classNameDragging))\r\n refreshScrollbarsAutoHide(false);\r\n }\r\n\r\n /**\r\n * The mouse move event of the host element. This event is only needed for the autoHide \"move\" feature.\r\n */\r\n function hostOnMouseMove() {\r\n if (_scrollbarsAutoHideMove) {\r\n refreshScrollbarsAutoHide(true);\r\n clearTimeout(_scrollbarsAutoHideMoveTimeoutId);\r\n _scrollbarsAutoHideMoveTimeoutId = setTimeout(function () {\r\n if (_scrollbarsAutoHideMove && !_destroyed)\r\n refreshScrollbarsAutoHide(false);\r\n }, 100);\r\n }\r\n }\r\n\r\n /**\r\n * Adds or removes mouse & touch events of the host element. (for handling auto-hiding of the scrollbars)\r\n * @param destroy Indicates whether the events shall be added or removed.\r\n */\r\n function setupHostMouseTouchEvents(destroy) {\r\n var strOnOff = destroy ? 'off' : 'on';\r\n var setupEvent = function(target, name, listener) {\r\n if(_supportPassiveEvents)\r\n setupPassiveEventListener(target, name, listener, destroy);\r\n else\r\n target[strOnOff](name, listener);\r\n };\r\n\r\n if(_scrollbarsAutoHideMove && !destroy)\r\n setupEvent(_hostElement, _strMouseTouchMoveEvent, hostOnMouseMove);\r\n else {\r\n if(destroy)\r\n setupEvent(_hostElement, _strMouseTouchMoveEvent, hostOnMouseMove);\r\n setupEvent(_hostElement, _strMouseTouchEnter, hostOnMouseEnter);\r\n setupEvent(_hostElement, _strMouseTouchLeave, hostOnMouseLeave);\r\n }\r\n\r\n //if the plugin is initialized and the mouse is over the host element, make the scrollbars visible\r\n if(!_initialized && !destroy)\r\n _hostElement.one(\"mouseover\", hostOnMouseEnter);\r\n }\r\n\r\n /**\r\n * Prevents text from deselection if attached to the document element on the mousedown event of a DOM element.\r\n * @param event The select start event.\r\n */\r\n function documentOnSelectStart(event) {\r\n COMPATIBILITY.prvD(event);\r\n return false;\r\n }\r\n\r\n /**\r\n * A callback which will be called after a img element has downloaded its src asynchronous.\r\n */\r\n function imgOnLoad() {\r\n update({ _contentSizeChanged : true });\r\n }\r\n\r\n\r\n //==== Update Detection ====//\r\n\r\n /**\r\n * Measures the min width and min height of the body element and refreshes the related cache.\r\n * @returns {boolean} True if the min width or min height has changed, false otherwise.\r\n */\r\n function bodyMinSizeChanged() {\r\n var bodyMinSize = {};\r\n if (_isBody && _contentArrangeElement) {\r\n bodyMinSize.w = parseToZeroOrNumber(_contentArrangeElement.css(_strMinMinus + _strWidth));\r\n bodyMinSize.h = parseToZeroOrNumber(_contentArrangeElement.css(_strMinMinus + _strHeight));\r\n bodyMinSize.c = checkCache(bodyMinSize, _bodyMinSizeCache);\r\n bodyMinSize.f = true; //flag for \"measured at least once\"\r\n }\r\n _bodyMinSizeCache = bodyMinSize;\r\n return !!bodyMinSize.c;\r\n }\r\n\r\n /**\r\n * Returns true if the class names really changed (new class without plugin host prefix)\r\n * @param oldCassNames The old ClassName string.\r\n * @param newClassNames The new ClassName string.\r\n * @returns {boolean} True if the class names has really changed, false otherwise.\r\n */\r\n function hostClassNamesChanged(oldCassNames, newClassNames) {\r\n var currClasses = (newClassNames !== undefined && newClassNames !== null) ? newClassNames.split(_strSpace) : _strEmpty;\r\n var oldClasses = (oldCassNames !== undefined && oldCassNames !== null) ? oldCassNames.split(_strSpace) : _strEmpty;\r\n if (currClasses === _strEmpty && oldClasses === _strEmpty)\r\n return false;\r\n var diff = getArrayDifferences(oldClasses, currClasses);\r\n var changed = false;\r\n var oldClassNames = _oldClassName !== undefined && _oldClassName !== null ? _oldClassName.split(_strSpace) : [_strEmpty];\r\n var currClassNames = _classNameCache !== undefined && _classNameCache !== null ? _classNameCache.split(_strSpace) : [_strEmpty];\r\n\r\n //remove none theme from diff list to prevent update\r\n var idx = inArray(_classNameThemeNone, diff);\r\n var curr;\r\n var i;\r\n var v;\r\n var o;\r\n var c;\r\n\r\n if (idx > -1)\r\n diff.splice(idx, 1);\r\n\r\n for (i = 0; i < diff.length; i++) {\r\n curr = diff[i];\r\n if (curr.indexOf(_classNameHostElement) !== 0) {\r\n o = true;\r\n c = true;\r\n for (v = 0; v < oldClassNames.length; v++) {\r\n if (curr === oldClassNames[v]) {\r\n o = false;\r\n break;\r\n }\r\n }\r\n for (v = 0; v < currClassNames.length; v++) {\r\n if (curr === currClassNames[v]) {\r\n c = false;\r\n break;\r\n }\r\n }\r\n if (o && c) {\r\n changed = true;\r\n break;\r\n }\r\n }\r\n\r\n }\r\n return changed;\r\n }\r\n\r\n /**\r\n * Returns true if the given mutation is not from a from the plugin generated element. If the target element is a textarea the mutation is always unknown.\r\n * @param mutation The mutation which shall be checked.\r\n * @returns {boolean} True if the mutation is from a unknown element, false otherwise.\r\n */\r\n function isUnknownMutation(mutation) {\r\n var attributeName = mutation.attributeName;\r\n var mutationTarget = mutation.target;\r\n var mutationType = mutation.type;\r\n var strClosest = 'closest';\r\n\r\n if (mutationTarget === _contentElementNative)\r\n return attributeName === null;\r\n if (mutationType === 'attributes' && (attributeName === LEXICON.c || attributeName === LEXICON.s) && !_isTextarea) {\r\n //ignore className changes by the plugin\r\n if (attributeName === LEXICON.c && FRAMEWORK(mutationTarget).hasClass(_classNameHostElement))\r\n return hostClassNamesChanged(mutation.oldValue, mutationTarget.getAttribute(LEXICON.c));\r\n\r\n //only do it of browser support it natively\r\n if (typeof mutationTarget[strClosest] != TYPES.f)\r\n return true;\r\n if (mutationTarget[strClosest](_strDot + _classNameResizeObserverElement) !== null ||\r\n mutationTarget[strClosest](_strDot + _classNameScrollbar) !== null ||\r\n mutationTarget[strClosest](_strDot + _classNameScrollbarCorner) !== null)\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Returns true if the content size was changed since the last time this method was called.\r\n * @returns {boolean} True if the content size was changed, false otherwise.\r\n */\r\n function updateAutoContentSizeChanged() {\r\n if (_sleeping)\r\n return false;\r\n \r\n var contentMeasureElement = getContentMeasureElement();\r\n var textareaValueLength = _isTextarea && _widthAutoCache && !_textareaAutoWrappingCache ? _targetElement.val().length : 0;\r\n var setCSS = !_mutationObserversConnected && _widthAutoCache && !_isTextarea;\r\n var viewportScrollSize = { };\r\n var css = { };\r\n var float;\r\n var bodyMinSizeC;\r\n var changed;\r\n var viewportScrollSizeChanged;\r\n var contentElementScrollSize;\r\n\r\n //fix for https://bugzilla.mozilla.org/show_bug.cgi?id=1439305, it only works with \"clipAlways : true\"\r\n //it can work with \"clipAlways : false\" too, but I had to set the overflow of the viewportElement to hidden every time before measuring\r\n if(_restrictedMeasuring) {\r\n viewportScrollSize = {\r\n x : _viewportElementNative[LEXICON.sW],\r\n y : _viewportElementNative[LEXICON.sH]\r\n }\r\n }\r\n if (setCSS) {\r\n float = _contentElement.css(_strFloat);\r\n css[_strFloat] = _isRTL ? _strRight : _strLeft;\r\n css[_strWidth] = _strAuto;\r\n _contentElement.css(css);\r\n }\r\n contentElementScrollSize = {\r\n w: contentMeasureElement[LEXICON.sW] + textareaValueLength,\r\n h: contentMeasureElement[LEXICON.sH] + textareaValueLength\r\n };\r\n if (setCSS) {\r\n css[_strFloat] = float;\r\n css[_strWidth] = _strHundredPercent;\r\n _contentElement.css(css);\r\n }\r\n\r\n bodyMinSizeC = bodyMinSizeChanged();\r\n changed = checkCache(contentElementScrollSize, _contentElementScrollSizeChangeDetectedCache);\r\n viewportScrollSizeChanged = checkCache(viewportScrollSize, _viewportScrollSizeCache);\r\n\r\n _contentElementScrollSizeChangeDetectedCache = contentElementScrollSize;\r\n _viewportScrollSizeCache = viewportScrollSize;\r\n\r\n return changed || bodyMinSizeC || viewportScrollSizeChanged;\r\n }\r\n\r\n /**\r\n * Returns true when a attribute which the MutationObserver would observe has changed. \r\n * @returns {boolean} True if one of the attributes which a MutationObserver would observe has changed, false or undefined otherwise.\r\n */\r\n function meaningfulAttrsChanged() {\r\n if (_sleeping || _mutationObserversConnected)\r\n return;\r\n \r\n var changed;\r\n var elem;\r\n var curr;\r\n var cache;\r\n var checks = [\r\n {\r\n _elem: _hostElement, \r\n _props : _mutationObserverAttrsHost.concat(':visible')\r\n },\r\n {\r\n _elem: _isTextarea ? _targetElement : undefined, \r\n _props : _mutationObserverAttrsTextarea\r\n }\r\n ];\r\n \r\n each(checks, function(index, check) { \r\n elem = check._elem;\r\n if(elem) {\r\n each(check._props, function(index, prop) { \r\n curr = prop.charAt(0) === ':' ? elem.is(prop) : elem.attr(prop);\r\n cache = _updateAutoCache[prop];\r\n \r\n changed = changed || checkCache(curr, cache);\r\n \r\n _updateAutoCache[prop] = curr;\r\n });\r\n }\r\n });\r\n \r\n return changed;\r\n }\r\n\r\n /**\r\n * Checks is a CSS Property of a child element is affecting the scroll size of the content.\r\n * @param propertyName The CSS property name.\r\n * @returns {boolean} True if the property is affecting the content scroll size, false otherwise.\r\n */\r\n function isSizeAffectingCSSProperty(propertyName) {\r\n if (!_initialized)\r\n return true;\r\n var flexGrow = 'flex-grow';\r\n var flexShrink = 'flex-shrink';\r\n var flexBasis = 'flex-basis';\r\n var affectingPropsX = [\r\n _strWidth,\r\n _strMinMinus + _strWidth,\r\n _strMaxMinus + _strWidth,\r\n _strMarginMinus + _strLeft,\r\n _strMarginMinus + _strRight,\r\n _strLeft,\r\n _strRight,\r\n 'font-weight',\r\n 'word-spacing',\r\n flexGrow,\r\n flexShrink,\r\n flexBasis\r\n ];\r\n var affectingPropsXContentBox = [\r\n _strPaddingMinus + _strLeft,\r\n _strPaddingMinus + _strRight,\r\n _strBorderMinus + _strLeft + _strWidth,\r\n _strBorderMinus + _strRight + _strWidth\r\n ];\r\n var affectingPropsY = [\r\n _strHeight,\r\n _strMinMinus + _strHeight,\r\n _strMaxMinus + _strHeight,\r\n _strMarginMinus + _strTop,\r\n _strMarginMinus + _strBottom,\r\n _strTop,\r\n _strBottom,\r\n 'line-height',\r\n flexGrow,\r\n flexShrink,\r\n flexBasis\r\n ];\r\n var affectingPropsYContentBox = [\r\n _strPaddingMinus + _strTop,\r\n _strPaddingMinus + _strBottom,\r\n _strBorderMinus + _strTop + _strWidth,\r\n _strBorderMinus + _strBottom + _strWidth\r\n ];\r\n var _strS = 's';\r\n var _strVS = 'v-s';\r\n var checkX = _overflowBehaviorCache.x === _strS || _overflowBehaviorCache.x === _strVS;\r\n var checkY = _overflowBehaviorCache.y === _strS || _overflowBehaviorCache.y === _strVS;\r\n var sizeIsAffected = false;\r\n var checkPropertyName = function (arr, name) {\r\n for (var i = 0; i < arr[LEXICON.l]; i++) {\r\n if (arr[i] === name)\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n if (checkY) {\r\n sizeIsAffected = checkPropertyName(affectingPropsY, propertyName);\r\n if (!sizeIsAffected && !_isBorderBox)\r\n sizeIsAffected = checkPropertyName(affectingPropsYContentBox, propertyName);\r\n }\r\n if (checkX && !sizeIsAffected) {\r\n sizeIsAffected = checkPropertyName(affectingPropsX, propertyName);\r\n if (!sizeIsAffected && !_isBorderBox)\r\n sizeIsAffected = checkPropertyName(affectingPropsXContentBox, propertyName);\r\n }\r\n return sizeIsAffected;\r\n }\r\n\r\n \r\n //==== Update ====//\r\n\r\n /**\r\n * Updates the variables and size of the textarea element, and manages the scroll on new line or new character.\r\n */\r\n function textareaUpdate() {\r\n if (!_sleeping) {\r\n var wrapAttrOff = !_textareaAutoWrappingCache;\r\n var minWidth = _viewportSize.w;\r\n var minHeight = _viewportSize.h;\r\n var css = { };\r\n var doMeasure = _widthAutoCache || wrapAttrOff;\r\n var origWidth;\r\n var width;\r\n var origHeight;\r\n var height;\r\n\r\n //reset min size\r\n css[_strMinMinus + _strWidth] = _strEmpty;\r\n css[_strMinMinus + _strHeight] = _strEmpty;\r\n\r\n //set width auto\r\n css[_strWidth] = _strAuto;\r\n _targetElement.css(css);\r\n\r\n //measure width\r\n origWidth = _targetElementNative[LEXICON.oW];\r\n width = doMeasure ? MATH.max(origWidth, _targetElementNative[LEXICON.sW] - 1) : 1;\r\n /*width += (_widthAutoCache ? _marginX + (!_isBorderBox ? wrapAttrOff ? 0 : _paddingX + _borderX : 0) : 0);*/\r\n\r\n //set measured width\r\n css[_strWidth] = _widthAutoCache ? _strAuto /*width*/ : _strHundredPercent;\r\n css[_strMinMinus + _strWidth] = _strHundredPercent;\r\n\r\n //set height auto\r\n css[_strHeight] = _strAuto;\r\n _targetElement.css(css);\r\n\r\n //measure height\r\n origHeight = _targetElementNative[LEXICON.oH];\r\n height = MATH.max(origHeight, _targetElementNative[LEXICON.sH] - 1);\r\n\r\n //append correct size values\r\n css[_strWidth] = width;\r\n css[_strHeight] = height;\r\n _textareaCoverElement.css(css);\r\n\r\n //apply min width / min height to prevent textarea collapsing\r\n css[_strMinMinus + _strWidth] = minWidth /*+ (!_isBorderBox && _widthAutoCache ? _paddingX + _borderX : 0)*/;\r\n css[_strMinMinus + _strHeight] = minHeight /*+ (!_isBorderBox && _heightAutoCache ? _paddingY + _borderY : 0)*/;\r\n _targetElement.css(css);\r\n\r\n return {\r\n _originalWidth: origWidth,\r\n _originalHeight: origHeight,\r\n _dynamicWidth: width,\r\n _dynamicHeight: height\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Updates the plugin and DOM to the current options.\r\n * This method should only be called if a update is 100% required.\r\n * @param updateHints A objects which contains hints for this update:\r\n * {\r\n * _hostSizeChanged : boolean,\r\n * _contentSizeChanged : boolean,\r\n * _force : boolean, == preventSwallowing\r\n * _changedOptions : { }, == preventSwallowing && preventSleep\r\n * }\r\n */\r\n function update(updateHints) {\r\n clearTimeout(_swallowedUpdateTimeout);\r\n updateHints = updateHints || { };\r\n _swallowedUpdateHints._hostSizeChanged |= updateHints._hostSizeChanged;\r\n _swallowedUpdateHints._contentSizeChanged |= updateHints._contentSizeChanged;\r\n _swallowedUpdateHints._force |= updateHints._force;\r\n \r\n var now = COMPATIBILITY.now();\r\n var hostSizeChanged = !!_swallowedUpdateHints._hostSizeChanged;\r\n var contentSizeChanged = !!_swallowedUpdateHints._contentSizeChanged;\r\n var force = !!_swallowedUpdateHints._force;\r\n var changedOptions = updateHints._changedOptions; \r\n var swallow = _swallowUpdateLag > 0 && _initialized && !_destroyed && !force && !changedOptions && (now - _lastUpdateTime) < _swallowUpdateLag && (!_heightAutoCache && !_widthAutoCache); \r\n var displayIsHidden;\r\n\r\n if(swallow)\r\n _swallowedUpdateTimeout = setTimeout(update, _swallowUpdateLag);\r\n\r\n //abort update due to:\r\n //destroyed\r\n //swallowing\r\n //sleeping\r\n //host is hidden or has false display\r\n if (_destroyed || swallow || (_sleeping && !changedOptions) || (_initialized && !force && (displayIsHidden = _hostElement.is(':hidden'))) || _hostElement.css('display') === 'inline')\r\n return;\r\n\r\n _lastUpdateTime = now;\r\n _swallowedUpdateHints = { };\r\n \r\n //if scrollbar styling is possible and native scrollbars aren't overlaid the scrollbar styling will be applied which hides the native scrollbars completely.\r\n if (_nativeScrollbarStyling && !(_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y)) {\r\n //native scrollbars are hidden, so change the values to zero\r\n _nativeScrollbarSize.x = 0;\r\n _nativeScrollbarSize.y = 0;\r\n }\r\n else {\r\n //refresh native scrollbar size (in case of zoom)\r\n _nativeScrollbarSize = extendDeep({}, globals.nativeScrollbarSize);\r\n }\r\n\r\n // Scrollbar padding is needed for firefox, because firefox hides scrollbar automatically if the size of the div is too small.\r\n // The calculation: [scrollbar size +3 *3]\r\n // (+3 because of possible decoration e.g. borders, margins etc., but only if native scrollbar is NOT a overlaid scrollbar)\r\n // (*3 because (1)increase / (2)decrease -button and (3)resize handle)\r\n _nativeScrollbarMinSize = {\r\n x: (_nativeScrollbarSize.x + (_nativeScrollbarIsOverlaid.x ? 0 : 3)) * 3,\r\n y: (_nativeScrollbarSize.y + (_nativeScrollbarIsOverlaid.y ? 0 : 3)) * 3\r\n };\r\n \r\n //changedOptions = changedOptions || { };\r\n //freezeResizeObserver(_sizeObserverElement, true);\r\n //freezeResizeObserver(_sizeAutoObserverElement, true);\r\n \r\n var checkCacheAutoForce = function () {\r\n return checkCache.apply(this, [].slice.call(arguments).concat([ force ]));\r\n };\r\n \r\n //save current scroll offset\r\n var currScroll = {\r\n x: _viewportElement[_strScrollLeft](),\r\n y: _viewportElement[_strScrollTop]()\r\n };\r\n\r\n var currentPreparedOptionsScrollbars = _currentPreparedOptions.scrollbars;\r\n var currentPreparedOptionsTextarea = _currentPreparedOptions.textarea;\r\n\r\n //scrollbars visibility:\r\n var scrollbarsVisibility = currentPreparedOptionsScrollbars.visibility;\r\n var scrollbarsVisibilityChanged = checkCacheAutoForce(scrollbarsVisibility, _scrollbarsVisibilityCache);\r\n\r\n //scrollbars autoHide:\r\n var scrollbarsAutoHide = currentPreparedOptionsScrollbars.autoHide;\r\n var scrollbarsAutoHideChanged = checkCacheAutoForce(scrollbarsAutoHide, _scrollbarsAutoHideCache);\r\n\r\n //scrollbars click scrolling\r\n var scrollbarsClickScrolling = currentPreparedOptionsScrollbars.clickScrolling;\r\n var scrollbarsClickScrollingChanged = checkCacheAutoForce(scrollbarsClickScrolling, _scrollbarsClickScrollingCache);\r\n\r\n //scrollbars drag scrolling\r\n var scrollbarsDragScrolling = currentPreparedOptionsScrollbars.dragScrolling;\r\n var scrollbarsDragScrollingChanged = checkCacheAutoForce(scrollbarsDragScrolling, _scrollbarsDragScrollingCache);\r\n\r\n //className\r\n var className = _currentPreparedOptions.className;\r\n var classNameChanged = checkCacheAutoForce(className, _classNameCache);\r\n\r\n //resize\r\n var resize = _currentPreparedOptions.resize;\r\n var resizeChanged = checkCacheAutoForce(resize, _resizeCache) && !_isBody; //body can't be resized since the window itself acts as resize possibility.\r\n\r\n //paddingAbsolute\r\n var paddingAbsolute = _currentPreparedOptions.paddingAbsolute;\r\n var paddingAbsoluteChanged = checkCacheAutoForce(paddingAbsolute, _paddingAbsoluteCache);\r\n\r\n //clipAlways\r\n var clipAlways = _currentPreparedOptions.clipAlways;\r\n var clipAlwaysChanged = checkCacheAutoForce(clipAlways, _clipAlwaysCache);\r\n\r\n //sizeAutoCapable\r\n var sizeAutoCapable = _currentPreparedOptions.sizeAutoCapable && !_isBody; //body can never be size auto, because it shall be always as big as the viewport.\r\n var sizeAutoCapableChanged = checkCacheAutoForce(sizeAutoCapable, _sizeAutoCapableCache);\r\n\r\n //showNativeScrollbars\r\n var ignoreOverlayScrollbarHiding = _currentPreparedOptions.nativeScrollbarsOverlaid.showNativeScrollbars;\r\n var ignoreOverlayScrollbarHidingChanged = checkCacheAutoForce(ignoreOverlayScrollbarHiding, _ignoreOverlayScrollbarHidingCache);\r\n\r\n //autoUpdate\r\n var autoUpdate = _currentPreparedOptions.autoUpdate;\r\n var autoUpdateChanged = checkCacheAutoForce(autoUpdate, _autoUpdateCache);\r\n\r\n //overflowBehavior\r\n var overflowBehavior = _currentPreparedOptions.overflowBehavior;\r\n var overflowBehaviorChanged = checkCacheAutoForce(overflowBehavior, _overflowBehaviorCache, force);\r\n\r\n //dynWidth:\r\n var textareaDynWidth = currentPreparedOptionsTextarea.dynWidth;\r\n var textareaDynWidthChanged = checkCacheAutoForce(_textareaDynWidthCache, textareaDynWidth);\r\n\r\n //dynHeight:\r\n var textareaDynHeight = currentPreparedOptionsTextarea.dynHeight;\r\n var textareaDynHeightChanged = checkCacheAutoForce(_textareaDynHeightCache, textareaDynHeight);\r\n\r\n //scrollbars visibility\r\n _scrollbarsAutoHideNever = scrollbarsAutoHide === 'n';\r\n _scrollbarsAutoHideScroll = scrollbarsAutoHide === 's';\r\n _scrollbarsAutoHideMove = scrollbarsAutoHide === 'm';\r\n _scrollbarsAutoHideLeave = scrollbarsAutoHide === 'l';\r\n\r\n //scrollbars autoHideDelay\r\n _scrollbarsAutoHideDelay = currentPreparedOptionsScrollbars.autoHideDelay;\r\n\r\n //old className\r\n _oldClassName = _classNameCache;\r\n\r\n //resize\r\n _resizeNone = resize === 'n';\r\n _resizeBoth = resize === 'b';\r\n _resizeHorizontal = resize === 'h';\r\n _resizeVertical = resize === 'v';\r\n\r\n //normalizeRTL\r\n _normalizeRTLCache = _currentPreparedOptions.normalizeRTL;\r\n\r\n //ignore overlay scrollbar hiding\r\n ignoreOverlayScrollbarHiding = ignoreOverlayScrollbarHiding && (_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y);\r\n\r\n //refresh options cache\r\n _scrollbarsVisibilityCache = scrollbarsVisibility;\r\n _scrollbarsAutoHideCache = scrollbarsAutoHide;\r\n _scrollbarsClickScrollingCache = scrollbarsClickScrolling;\r\n _scrollbarsDragScrollingCache = scrollbarsDragScrolling;\r\n _classNameCache = className;\r\n _resizeCache = resize;\r\n _paddingAbsoluteCache = paddingAbsolute;\r\n _clipAlwaysCache = clipAlways;\r\n _sizeAutoCapableCache = sizeAutoCapable;\r\n _ignoreOverlayScrollbarHidingCache = ignoreOverlayScrollbarHiding;\r\n _autoUpdateCache = autoUpdate;\r\n _overflowBehaviorCache = extendDeep({}, overflowBehavior);\r\n _textareaDynWidthCache = textareaDynWidth;\r\n _textareaDynHeightCache = textareaDynHeight;\r\n _hasOverflowCache = _hasOverflowCache || { x: false, y: false };\r\n\r\n //set correct class name to the host element\r\n if (classNameChanged) {\r\n removeClass(_hostElement, _oldClassName + _strSpace + _classNameThemeNone);\r\n addClass(_hostElement, className !== undefined && className !== null && className.length > 0 ? className : _classNameThemeNone);\r\n }\r\n\r\n //set correct auto Update\r\n if (autoUpdateChanged) {\r\n if (autoUpdate === true) {\r\n disconnectMutationObservers();\r\n autoUpdateLoop.add(_base);\r\n }\r\n else if (autoUpdate === null) {\r\n if (_autoUpdateRecommended) {\r\n disconnectMutationObservers();\r\n autoUpdateLoop.add(_base);\r\n }\r\n else {\r\n autoUpdateLoop.remove(_base);\r\n connectMutationObservers();\r\n }\r\n }\r\n else {\r\n autoUpdateLoop.remove(_base);\r\n connectMutationObservers();\r\n }\r\n }\r\n\r\n //activate or deactivate size auto capability\r\n if (sizeAutoCapableChanged) {\r\n if (sizeAutoCapable) {\r\n if (!_contentGlueElement) {\r\n _contentGlueElement = FRAMEWORK(generateDiv(_classNameContentGlueElement));\r\n _paddingElement.before(_contentGlueElement);\r\n }\r\n else {\r\n _contentGlueElement.show();\r\n }\r\n if (_sizeAutoObserverAdded) {\r\n _sizeAutoObserverElement.show();\r\n }\r\n else {\r\n _sizeAutoObserverElement = FRAMEWORK(generateDiv(_classNameSizeAutoObserverElement));\r\n _sizeAutoObserverElementNative = _sizeAutoObserverElement[0];\r\n\r\n _contentGlueElement.before(_sizeAutoObserverElement);\r\n var oldSize = {w: -1, h: -1};\r\n setupResizeObserver(_sizeAutoObserverElement, function () {\r\n var newSize = {\r\n w: _sizeAutoObserverElementNative[LEXICON.oW],\r\n h: _sizeAutoObserverElementNative[LEXICON.oH]\r\n };\r\n if (checkCache(newSize, oldSize)) {\r\n if (_initialized && (_heightAutoCache && newSize.h > 0) || (_widthAutoCache && newSize.w > 0)) {\r\n update();\r\n }\r\n else if (_initialized && (!_heightAutoCache && newSize.h === 0) || (!_widthAutoCache && newSize.w === 0)) {\r\n update();\r\n }\r\n }\r\n oldSize = newSize;\r\n });\r\n _sizeAutoObserverAdded = true;\r\n //fix heightAuto detector bug if height is fixed but contentHeight is 0.\r\n //the probability this bug will ever happen is very very low, thats why its ok if we use calc which isn't supported in IE8.\r\n if (_cssCalc !== null)\r\n _sizeAutoObserverElement.css(_strHeight, _cssCalc + '(100% + 1px)');\r\n }\r\n }\r\n else {\r\n if (_sizeAutoObserverAdded)\r\n _sizeAutoObserverElement.hide();\r\n if (_contentGlueElement)\r\n _contentGlueElement.hide();\r\n }\r\n }\r\n\r\n //if force, update all resizeObservers too\r\n if (force) {\r\n _sizeObserverElement.find('*').trigger(_strScroll);\r\n if (_sizeAutoObserverAdded)\r\n _sizeAutoObserverElement.find('*').trigger(_strScroll);\r\n }\r\n\r\n //display hidden:\r\n displayIsHidden = displayIsHidden === undefined ? _hostElement.is(':hidden') : displayIsHidden;\r\n var displayIsHiddenChanged = checkCacheAutoForce(displayIsHidden, _displayIsHiddenCache);\r\n\r\n //textarea AutoWrapping:\r\n var textareaAutoWrapping = _isTextarea ? _targetElement.attr('wrap') !== 'off' : false;\r\n var textareaAutoWrappingChanged = checkCacheAutoForce(textareaAutoWrapping, _textareaAutoWrappingCache);\r\n\r\n //detect direction:\r\n var cssDirection = _hostElement.css('direction');\r\n var cssDirectionChanged = checkCacheAutoForce(cssDirection, _cssDirectionCache);\r\n\r\n //detect box-sizing:\r\n var boxSizing = _hostElement.css('box-sizing');\r\n var boxSizingChanged = checkCacheAutoForce(boxSizing, _cssBoxSizingCache);\r\n\r\n //detect padding:\r\n var padding = {\r\n c: force,\r\n t: parseToZeroOrNumber(_hostElement.css(_strPaddingMinus + _strTop)),\r\n r: parseToZeroOrNumber(_hostElement.css(_strPaddingMinus + _strRight)),\r\n b: parseToZeroOrNumber(_hostElement.css(_strPaddingMinus + _strBottom)),\r\n l: parseToZeroOrNumber(_hostElement.css(_strPaddingMinus + _strLeft))\r\n };\r\n \r\n //width + height auto detecting var:\r\n var sizeAutoObserverElementBCRect;\r\n //exception occurs in IE8 sometimes (unknown exception)\r\n try {\r\n sizeAutoObserverElementBCRect = _sizeAutoObserverAdded ? _sizeAutoObserverElementNative.getBoundingClientRect() : null;\r\n } catch (ex) {\r\n return;\r\n }\r\n\r\n _isRTL = cssDirection === 'rtl';\r\n _isBorderBox = (boxSizing === 'border-box');\r\n var isRTLLeft = _isRTL ? _strLeft : _strRight;\r\n var isRTLRight = _isRTL ? _strRight : _strLeft;\r\n\r\n //detect width auto:\r\n var widthAutoResizeDetection = false;\r\n var widthAutoObserverDetection = (_sizeAutoObserverAdded && (_hostElement.css(_strFloat) !== 'none' /*|| _isTextarea */)) ? (MATH.round(sizeAutoObserverElementBCRect.right - sizeAutoObserverElementBCRect.left) === 0) && (!paddingAbsolute ? (_hostElementNative[LEXICON.cW] - _paddingX) > 0 : true) : false;\r\n if (sizeAutoCapable && !widthAutoObserverDetection) {\r\n var tmpCurrHostWidth = _hostElementNative[LEXICON.oW];\r\n var tmpCurrContentGlueWidth = _contentGlueElement.css(_strWidth);\r\n _contentGlueElement.css(_strWidth, _strAuto);\r\n\r\n var tmpNewHostWidth = _hostElementNative[LEXICON.oW];\r\n _contentGlueElement.css(_strWidth, tmpCurrContentGlueWidth);\r\n widthAutoResizeDetection = tmpCurrHostWidth !== tmpNewHostWidth;\r\n if (!widthAutoResizeDetection) {\r\n _contentGlueElement.css(_strWidth, tmpCurrHostWidth + 1);\r\n tmpNewHostWidth = _hostElementNative[LEXICON.oW];\r\n _contentGlueElement.css(_strWidth, tmpCurrContentGlueWidth);\r\n widthAutoResizeDetection = tmpCurrHostWidth !== tmpNewHostWidth;\r\n }\r\n }\r\n var widthAuto = (widthAutoObserverDetection || widthAutoResizeDetection) && sizeAutoCapable && !displayIsHidden;\r\n var widthAutoChanged = checkCacheAutoForce(widthAuto, _widthAutoCache);\r\n var wasWidthAuto = !widthAuto && _widthAutoCache;\r\n\r\n //detect height auto:\r\n var heightAuto = _sizeAutoObserverAdded && sizeAutoCapable && !displayIsHidden ? (MATH.round(sizeAutoObserverElementBCRect.bottom - sizeAutoObserverElementBCRect.top) === 0) /* && (!paddingAbsolute && (_msieVersion > 9 || !_msieVersion) ? true : true) */ : false;\r\n var heightAutoChanged = checkCacheAutoForce(heightAuto, _heightAutoCache);\r\n var wasHeightAuto = !heightAuto && _heightAutoCache;\r\n\r\n //detect border:\r\n //we need the border only if border box and auto size\r\n var strMinusWidth = '-' + _strWidth;\r\n var updateBorderX = (widthAuto && _isBorderBox) || !_isBorderBox;\r\n var updateBorderY = (heightAuto && _isBorderBox) || !_isBorderBox;\r\n var border = {\r\n c: force,\r\n t: updateBorderY ? parseToZeroOrNumber(_hostElement.css(_strBorderMinus + _strTop + strMinusWidth), true) : 0,\r\n r: updateBorderX ? parseToZeroOrNumber(_hostElement.css(_strBorderMinus + _strRight + strMinusWidth), true) : 0,\r\n b: updateBorderY ? parseToZeroOrNumber(_hostElement.css(_strBorderMinus + _strBottom + strMinusWidth), true) : 0,\r\n l: updateBorderX ? parseToZeroOrNumber(_hostElement.css(_strBorderMinus + _strLeft + strMinusWidth), true) : 0\r\n };\r\n\r\n //detect margin:\r\n var margin = {\r\n c: force,\r\n t: parseToZeroOrNumber(_hostElement.css(_strMarginMinus + _strTop)),\r\n r: parseToZeroOrNumber(_hostElement.css(_strMarginMinus + _strRight)),\r\n b: parseToZeroOrNumber(_hostElement.css(_strMarginMinus + _strBottom)),\r\n l: parseToZeroOrNumber(_hostElement.css(_strMarginMinus + _strLeft))\r\n };\r\n\r\n //detect css max width & height:\r\n var cssMaxValue = {\r\n h: String(_hostElement.css(_strMaxMinus + _strHeight)),\r\n w: String(_hostElement.css(_strMaxMinus + _strWidth))\r\n };\r\n\r\n //vars to apply correct css\r\n var contentElementCSS = { };\r\n var contentGlueElementCSS = { };\r\n\r\n //funcs\r\n var getHostSize = function() {\r\n //has to be clientSize because offsetSize respect borders\r\n return {\r\n w: _hostElementNative[LEXICON.cW],\r\n h: _hostElementNative[LEXICON.cH]\r\n };\r\n };\r\n var getViewportSize = function() {\r\n //viewport size is padding container because it never has padding, margin and a border\r\n //determine zoom rounding error -> sometimes scrollWidth/Height is smaller than clientWidth/Height\r\n //if this happens add the difference to the viewportSize to compensate the rounding error\r\n return {\r\n w: _paddingElementNative[LEXICON.oW] + MATH.max(0, _contentElementNative[LEXICON.cW] - _contentElementNative[LEXICON.sW]),\r\n h: _paddingElementNative[LEXICON.oH] + MATH.max(0, _contentElementNative[LEXICON.cH] - _contentElementNative[LEXICON.sH])\r\n };\r\n };\r\n\r\n //set info for padding\r\n var paddingAbsoluteX = _paddingX = padding.l + padding.r;\r\n var paddingAbsoluteY = _paddingY = padding.t + padding.b;\r\n paddingAbsoluteX *= paddingAbsolute ? 1 : 0;\r\n paddingAbsoluteY *= paddingAbsolute ? 1 : 0;\r\n padding.c = checkCacheAutoForce(padding, _cssPaddingCache);\r\n\r\n //set info for border\r\n _borderX = border.l + border.r;\r\n _borderY = border.t + border.b;\r\n border.c = checkCacheAutoForce(border, _cssBorderCache);\r\n\r\n //set info for margin\r\n _marginX = margin.l + margin.r;\r\n _marginY = margin.t + margin.b;\r\n margin.c = checkCacheAutoForce(margin, _cssMarginCache);\r\n\r\n //set info for css max value\r\n cssMaxValue.ih = parseToZeroOrNumber(cssMaxValue.h); //ih = integer height\r\n cssMaxValue.iw = parseToZeroOrNumber(cssMaxValue.w); //iw = integer width\r\n cssMaxValue.ch = cssMaxValue.h.indexOf('px') > -1; //ch = correct height\r\n cssMaxValue.cw = cssMaxValue.w.indexOf('px') > -1; //cw = correct width\r\n cssMaxValue.c = checkCacheAutoForce(cssMaxValue, _cssMaxValueCache);\r\n\r\n //refresh cache\r\n _displayIsHiddenCache = displayIsHidden;\r\n _textareaAutoWrappingCache = textareaAutoWrapping;\r\n _cssDirectionCache = cssDirection;\r\n _cssBoxSizingCache = boxSizing;\r\n _widthAutoCache = widthAuto;\r\n _heightAutoCache = heightAuto;\r\n _cssPaddingCache = padding;\r\n _cssBorderCache = border;\r\n _cssMarginCache = margin;\r\n _cssMaxValueCache = cssMaxValue;\r\n \r\n //IEFix direction changed\r\n if (cssDirectionChanged && _sizeAutoObserverAdded)\r\n _sizeAutoObserverElement.css(_strFloat, isRTLRight);\r\n\r\n //apply padding:\r\n if (padding.c || cssDirectionChanged || paddingAbsoluteChanged || widthAutoChanged || heightAutoChanged || boxSizingChanged || sizeAutoCapableChanged) {\r\n var paddingElementCSS = {};\r\n var textareaCSS = {};\r\n setTopRightBottomLeft(contentGlueElementCSS, _strMarginMinus, [-padding.t, -padding.r, -padding.b, -padding.l]);\r\n if (paddingAbsolute) {\r\n setTopRightBottomLeft(paddingElementCSS, _strEmpty, [padding.t, padding.r, padding.b, padding.l]);\r\n if (_isTextarea)\r\n setTopRightBottomLeft(textareaCSS, _strPaddingMinus);\r\n else\r\n setTopRightBottomLeft(contentElementCSS, _strPaddingMinus);\r\n }\r\n else {\r\n setTopRightBottomLeft(paddingElementCSS, _strEmpty);\r\n if (_isTextarea)\r\n setTopRightBottomLeft(textareaCSS, _strPaddingMinus, [padding.t, padding.r, padding.b, padding.l]);\r\n else\r\n setTopRightBottomLeft(contentElementCSS, _strPaddingMinus, [padding.t, padding.r, padding.b, padding.l]);\r\n }\r\n _paddingElement.css(paddingElementCSS);\r\n _targetElement.css(textareaCSS);\r\n }\r\n\r\n //viewport size is padding container because it never has padding, margin and a border.\r\n _viewportSize = getViewportSize();\r\n\r\n //update Textarea\r\n var textareaSize = _isTextarea ? textareaUpdate() : false;\r\n var textareaSizeChanged = _isTextarea && checkCacheAutoForce(textareaSize, _textareaSizeCache);\r\n var textareaDynOrigSize = _isTextarea && textareaSize ? {\r\n w : textareaDynWidth ? textareaSize._dynamicWidth : textareaSize._originalWidth,\r\n h : textareaDynHeight ? textareaSize._dynamicHeight : textareaSize._originalHeight\r\n } : { };\r\n _textareaSizeCache = textareaSize;\r\n\r\n //fix height auto / width auto in cooperation with current padding & boxSizing behavior:\r\n if (heightAuto && (heightAutoChanged || paddingAbsoluteChanged || boxSizingChanged || cssMaxValue.c || padding.c || border.c)) {\r\n /*\r\n if (cssMaxValue.ch)\r\n contentElementCSS[_strMaxMinus + _strHeight] =\r\n (cssMaxValue.ch ? (cssMaxValue.ih - paddingAbsoluteY + (_isBorderBox ? -_borderY : _paddingY))\r\n : _strEmpty);\r\n */\r\n contentElementCSS[_strHeight] = _strAuto;\r\n }\r\n else if (heightAutoChanged || paddingAbsoluteChanged) {\r\n contentElementCSS[_strMaxMinus + _strHeight] = _strEmpty;\r\n contentElementCSS[_strHeight] = _strHundredPercent;\r\n }\r\n if (widthAuto && (widthAutoChanged || paddingAbsoluteChanged || boxSizingChanged || cssMaxValue.c || padding.c || border.c || cssDirectionChanged)) {\r\n /*\r\n if (cssMaxValue.cw)\r\n contentElementCSS[_strMaxMinus + _strWidth] =\r\n (cssMaxValue.cw ? (cssMaxValue.iw - paddingAbsoluteX + (_isBorderBox ? -_borderX : _paddingX)) +\r\n (_nativeScrollbarIsOverlaid.y ? _overlayScrollbarDummySize.y : 0)\r\n : _strEmpty);\r\n */\r\n contentElementCSS[_strWidth] = _strAuto;\r\n contentGlueElementCSS[_strMaxMinus + _strWidth] = _strHundredPercent; //IE Fix\r\n }\r\n else if (widthAutoChanged || paddingAbsoluteChanged) {\r\n contentElementCSS[_strMaxMinus + _strWidth] = _strEmpty;\r\n contentElementCSS[_strWidth] = _strHundredPercent;\r\n contentElementCSS[_strFloat] = _strEmpty;\r\n contentGlueElementCSS[_strMaxMinus + _strWidth] = _strEmpty; //IE Fix\r\n }\r\n if (widthAuto) {\r\n if (!cssMaxValue.cw)\r\n contentElementCSS[_strMaxMinus + _strWidth] = _strEmpty;\r\n //textareaDynOrigSize.w || _strAuto :: doesnt works because applied margin will shift width\r\n contentGlueElementCSS[_strWidth] = _strAuto;\r\n\r\n contentElementCSS[_strWidth] = _strAuto;\r\n contentElementCSS[_strFloat] = isRTLRight;\r\n }\r\n else {\r\n contentGlueElementCSS[_strWidth] = _strEmpty;\r\n }\r\n if (heightAuto) {\r\n if (!cssMaxValue.ch)\r\n contentElementCSS[_strMaxMinus + _strHeight] = _strEmpty;\r\n //textareaDynOrigSize.h || _contentElementNative[LEXICON.cH] :: use for anti scroll jumping\r\n contentGlueElementCSS[_strHeight] = textareaDynOrigSize.h || _contentElementNative[LEXICON.cH];\r\n }\r\n else {\r\n contentGlueElementCSS[_strHeight] = _strEmpty;\r\n }\r\n if (sizeAutoCapable)\r\n _contentGlueElement.css(contentGlueElementCSS);\r\n _contentElement.css(contentElementCSS);\r\n\r\n //CHECKPOINT HERE ~\r\n contentElementCSS = {};\r\n contentGlueElementCSS = {};\r\n\r\n //if [content(host) client / scroll size, or target element direction, or content(host) max-sizes] changed, or force is true\r\n if (hostSizeChanged || contentSizeChanged || textareaSizeChanged || cssDirectionChanged || boxSizingChanged || paddingAbsoluteChanged || widthAutoChanged || widthAuto || heightAutoChanged || heightAuto || cssMaxValue.c || ignoreOverlayScrollbarHidingChanged || overflowBehaviorChanged || clipAlwaysChanged || resizeChanged || scrollbarsVisibilityChanged || scrollbarsAutoHideChanged || scrollbarsDragScrollingChanged || scrollbarsClickScrollingChanged || textareaDynWidthChanged || textareaDynHeightChanged || textareaAutoWrappingChanged) {\r\n var strOverflow = 'overflow';\r\n var strOverflowX = strOverflow + '-x';\r\n var strOverflowY = strOverflow + '-y';\r\n var strHidden = 'hidden';\r\n var strVisible = 'visible';\r\n //decide whether the content overflow must get hidden for correct overflow measuring, it !MUST! be always hidden if the height is auto\r\n var hideOverflow4CorrectMeasuring = _restrictedMeasuring ?\r\n (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y) || //it must be hidden if native scrollbars are overlaid\r\n (_viewportSize.w < _nativeScrollbarMinSize.y || _viewportSize.h < _nativeScrollbarMinSize.x) || //it must be hidden if host-element is too small\r\n heightAuto || displayIsHiddenChanged //it must be hidden if height is auto or display was changed\r\n : heightAuto; //if there is not the restricted Measuring bug, it must be hidden if the height is auto\r\n\r\n //Reset the viewport (very important for natively overlaid scrollbars and zoom change\r\n //don't change the overflow prop as it is very expensive and affects performance !A LOT!\r\n var viewportElementResetCSS = { };\r\n var resetXTmp = _hasOverflowCache.y && _hideOverflowCache.ys && !ignoreOverlayScrollbarHiding && !_nativeScrollbarStyling ? (_nativeScrollbarIsOverlaid.y ? _viewportElement.css(isRTLLeft) : -_nativeScrollbarSize.y) : 0;\r\n var resetBottomTmp = _hasOverflowCache.x && _hideOverflowCache.xs && !ignoreOverlayScrollbarHiding && !_nativeScrollbarStyling ? (_nativeScrollbarIsOverlaid.x ? _viewportElement.css(_strBottom) : -_nativeScrollbarSize.x) : 0;\r\n setTopRightBottomLeft(viewportElementResetCSS, _strEmpty);\r\n _viewportElement.css(viewportElementResetCSS);\r\n if(hideOverflow4CorrectMeasuring)\r\n _contentElement.css(strOverflow, strHidden);\r\n\r\n //measure several sizes:\r\n var contentMeasureElement = getContentMeasureElement();\r\n //in Firefox content element has to have overflow hidden, else element margins aren't calculated properly, this element prevents this bug, but only if scrollbars aren't overlaid\r\n var contentMeasureElementGuaranty = _restrictedMeasuring && !hideOverflow4CorrectMeasuring ? _viewportElementNative : contentMeasureElement;\r\n var contentSize = {\r\n //use clientSize because natively overlaidScrollbars add borders\r\n w: textareaDynOrigSize.w || contentMeasureElement[LEXICON.cW],\r\n h: textareaDynOrigSize.h || contentMeasureElement[LEXICON.cH]\r\n };\r\n var scrollSize = {\r\n w: MATH.max(contentMeasureElement[LEXICON.sW], contentMeasureElementGuaranty[LEXICON.sW]),\r\n h: MATH.max(contentMeasureElement[LEXICON.sH], contentMeasureElementGuaranty[LEXICON.sH])\r\n };\r\n\r\n //apply the correct viewport style and measure viewport size\r\n viewportElementResetCSS[_strBottom] = wasHeightAuto ? _strEmpty : resetBottomTmp;\r\n viewportElementResetCSS[isRTLLeft] = wasWidthAuto ? _strEmpty : resetXTmp;\r\n _viewportElement.css(viewportElementResetCSS);\r\n _viewportSize = getViewportSize();\r\n\r\n //measure and correct several sizes\r\n var hostSize = getHostSize();\r\n var contentGlueSize = {\r\n //client/scrollSize + AbsolutePadding -> because padding is only applied to the paddingElement if its absolute, so you have to add it manually\r\n //hostSize is clientSize -> so padding should be added manually, right? FALSE! Because content glue is inside hostElement, so we don't have to worry about padding\r\n w: MATH.max((widthAuto ? contentSize.w : scrollSize.w) + paddingAbsoluteX, hostSize.w),\r\n h: MATH.max((heightAuto ? contentSize.h : scrollSize.h) + paddingAbsoluteY, hostSize.h)\r\n };\r\n contentGlueSize.c = checkCacheAutoForce(contentGlueSize, _contentGlueSizeCache);\r\n _contentGlueSizeCache = contentGlueSize;\r\n\r\n //apply correct contentGlue size\r\n if (sizeAutoCapable) {\r\n //size contentGlue correctly to make sure the element has correct size if the sizing switches to auto\r\n if (contentGlueSize.c || (heightAuto || widthAuto)) {\r\n contentGlueElementCSS[_strWidth] = contentGlueSize.w;\r\n contentGlueElementCSS[_strHeight] = contentGlueSize.h;\r\n\r\n //textarea-sizes are already calculated correctly at this point\r\n if(!_isTextarea) {\r\n contentSize = {\r\n //use clientSize because natively overlaidScrollbars add borders\r\n w: contentMeasureElement[LEXICON.cW],\r\n h: contentMeasureElement[LEXICON.cH]\r\n };\r\n }\r\n }\r\n var textareaCoverCSS = {};\r\n var setContentGlueElementCSSfunction = function(horizontal) {\r\n var scrollbarVars = getScrollbarVars(horizontal);\r\n var wh = scrollbarVars._w_h;\r\n var strWH = scrollbarVars._width_height;\r\n var autoSize = horizontal ? widthAuto : heightAuto;\r\n var borderSize = horizontal ? _borderX : _borderY;\r\n var paddingSize = horizontal ? _paddingX : _paddingY;\r\n var marginSize = horizontal ? _marginX : _marginY;\r\n var maxSize = contentGlueElementCSS[strWH] + (_isBorderBox ? borderSize : -paddingSize);\r\n\r\n //make contentGlue size -1 if element is not auto sized, to make sure that a resize event happens when the element shrinks\r\n if (!autoSize || (!autoSize && border.c))\r\n contentGlueElementCSS[strWH] = hostSize[wh] - (_isBorderBox ? 0 : paddingSize + borderSize) - 1 - marginSize;\r\n\r\n //if size is auto and host is same size as max size, make content glue size +1 to make sure size changes will be detected\r\n if (autoSize && cssMaxValue['c' + wh] && cssMaxValue['i' + wh] === maxSize)\r\n contentGlueElementCSS[strWH] = maxSize + (_isBorderBox ? 0 : paddingSize) + 1;\r\n\r\n //if size is auto and host is smaller than size as min size, make content glue size -1 to make sure size changes will be detected (this is only needed if padding is 0)\r\n if (autoSize && (contentSize[wh] < _viewportSize[wh]) && (horizontal && _isTextarea ? !textareaAutoWrapping : true)) {\r\n if (_isTextarea)\r\n textareaCoverCSS[strWH] = parseToZeroOrNumber(_textareaCoverElement.css(strWH)) - 1;\r\n contentGlueElementCSS[strWH] -= 1;\r\n }\r\n\r\n //make sure content glue size is at least 1\r\n if (contentSize[wh] > 0)\r\n contentGlueElementCSS[strWH] = MATH.max(1, contentGlueElementCSS[strWH]);\r\n };\r\n setContentGlueElementCSSfunction(true);\r\n setContentGlueElementCSSfunction(false);\r\n\r\n if (_isTextarea)\r\n _textareaCoverElement.css(textareaCoverCSS);\r\n _contentGlueElement.css(contentGlueElementCSS);\r\n }\r\n if (widthAuto)\r\n contentElementCSS[_strWidth] = _strHundredPercent;\r\n if (widthAuto && !_isBorderBox && !_mutationObserversConnected)\r\n contentElementCSS[_strFloat] = 'none';\r\n\r\n //apply and reset content style\r\n _contentElement.css(contentElementCSS);\r\n contentElementCSS = {};\r\n\r\n //measure again, but this time all correct sizes:\r\n var contentScrollSize = {\r\n w: MATH.max(contentMeasureElement[LEXICON.sW], contentMeasureElementGuaranty[LEXICON.sW]),\r\n h: MATH.max(contentMeasureElement[LEXICON.sH], contentMeasureElementGuaranty[LEXICON.sH])\r\n };\r\n contentScrollSize.c = contentSizeChanged = checkCacheAutoForce(contentScrollSize, _contentScrollSizeCache);\r\n _contentScrollSizeCache = contentScrollSize;\r\n\r\n //remove overflow hidden to restore overflow\r\n if(hideOverflow4CorrectMeasuring)\r\n _contentElement.css(strOverflow, _strEmpty);\r\n \r\n //refresh viewport size after correct measuring\r\n _viewportSize = getViewportSize();\r\n\r\n hostSize = getHostSize();\r\n hostSizeChanged = checkCacheAutoForce(hostSize, _hostSizeCache);\r\n _hostSizeCache = hostSize;\r\n\r\n var hideOverflowForceTextarea = _isTextarea && (_viewportSize.w === 0 || _viewportSize.h === 0);\r\n var previousOverflow = _overflowAmountCache;\r\n var overflowBehaviorIsVS = { };\r\n var overflowBehaviorIsVH = { };\r\n var overflowBehaviorIsS = { };\r\n var overflowAmount = { };\r\n var hasOverflow = { };\r\n var hideOverflow = { };\r\n var canScroll = { };\r\n var viewportRect = _paddingElementNative.getBoundingClientRect();\r\n var setOverflowVariables = function(horizontal) {\r\n var scrollbarVars = getScrollbarVars(horizontal);\r\n var scrollbarVarsInverted = getScrollbarVars(!horizontal);\r\n var xyI = scrollbarVarsInverted._x_y;\r\n var xy = scrollbarVars._x_y;\r\n var wh = scrollbarVars._w_h;\r\n var widthHeight = scrollbarVars._width_height;\r\n var scrollMax = _strScroll + scrollbarVars._Left_Top + 'Max';\r\n var fractionalOverflowAmount = viewportRect[widthHeight] ? MATH.abs(viewportRect[widthHeight] - _viewportSize[wh]) : 0;\r\n overflowBehaviorIsVS[xy] = overflowBehavior[xy] === 'v-s';\r\n overflowBehaviorIsVH[xy] = overflowBehavior[xy] === 'v-h';\r\n overflowBehaviorIsS[xy] = overflowBehavior[xy] === 's';\r\n overflowAmount[xy] = MATH.max(0, MATH.round((contentScrollSize[wh] - _viewportSize[wh]) * 100) / 100);\r\n overflowAmount[xy] *= (hideOverflowForceTextarea || (_viewportElementNative[scrollMax] === 0 && fractionalOverflowAmount > 0 && fractionalOverflowAmount < 1)) ? 0 : 1;\r\n hasOverflow[xy] = overflowAmount[xy] > 0;\r\n\r\n //hideOverflow:\r\n //x || y : true === overflow is hidden by \"overflow: scroll\" OR \"overflow: hidden\"\r\n //xs || ys : true === overflow is hidden by \"overflow: scroll\"\r\n hideOverflow[xy] = overflowBehaviorIsVS[xy] || overflowBehaviorIsVH[xy] ? (hasOverflow[xyI] && !overflowBehaviorIsVS[xyI] && !overflowBehaviorIsVH[xyI]) : hasOverflow[xy];\r\n hideOverflow[xy + 's'] = hideOverflow[xy] ? (overflowBehaviorIsS[xy] || overflowBehaviorIsVS[xy]) : false;\r\n\r\n canScroll[xy] = hasOverflow[xy] && hideOverflow[xy + 's'];\r\n };\r\n setOverflowVariables(true);\r\n setOverflowVariables(false);\r\n\r\n overflowAmount.c = checkCacheAutoForce(overflowAmount, _overflowAmountCache);\r\n _overflowAmountCache = overflowAmount;\r\n hasOverflow.c = checkCacheAutoForce(hasOverflow, _hasOverflowCache);\r\n _hasOverflowCache = hasOverflow;\r\n hideOverflow.c = checkCacheAutoForce(hideOverflow, _hideOverflowCache);\r\n _hideOverflowCache = hideOverflow;\r\n\r\n //if native scrollbar is overlay at x OR y axis, prepare DOM\r\n if (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y) {\r\n var borderDesign = 'px solid transparent';\r\n var contentArrangeElementCSS = { };\r\n var arrangeContent = { };\r\n var arrangeChanged = force;\r\n var setContentElementCSS;\r\n\r\n if (hasOverflow.x || hasOverflow.y) {\r\n arrangeContent.w = _nativeScrollbarIsOverlaid.y && hasOverflow.y ? contentScrollSize.w + _overlayScrollbarDummySize.y : _strEmpty;\r\n arrangeContent.h = _nativeScrollbarIsOverlaid.x && hasOverflow.x ? contentScrollSize.h + _overlayScrollbarDummySize.x : _strEmpty;\r\n arrangeChanged = checkCacheAutoForce(arrangeContent, _arrangeContentSizeCache);\r\n _arrangeContentSizeCache = arrangeContent;\r\n }\r\n\r\n if (hasOverflow.c || hideOverflow.c || contentScrollSize.c || cssDirectionChanged || widthAutoChanged || heightAutoChanged || widthAuto || heightAuto || ignoreOverlayScrollbarHidingChanged) {\r\n contentElementCSS[_strMarginMinus + isRTLRight] = contentElementCSS[_strBorderMinus + isRTLRight] = _strEmpty;\r\n setContentElementCSS = function(horizontal) {\r\n var scrollbarVars = getScrollbarVars(horizontal);\r\n var scrollbarVarsInverted = getScrollbarVars(!horizontal);\r\n var xy = scrollbarVars._x_y;\r\n var strDirection = horizontal ? _strBottom : isRTLLeft;\r\n var invertedAutoSize = horizontal ? heightAuto : widthAuto;\r\n\r\n if (_nativeScrollbarIsOverlaid[xy] && hasOverflow[xy] && hideOverflow[xy + 's']) {\r\n contentElementCSS[_strMarginMinus + strDirection] = invertedAutoSize ? (ignoreOverlayScrollbarHiding ? _strEmpty : _overlayScrollbarDummySize[xy]) : _strEmpty;\r\n contentElementCSS[_strBorderMinus + strDirection] = ((horizontal ? !invertedAutoSize : true) && !ignoreOverlayScrollbarHiding) ? (_overlayScrollbarDummySize[xy] + borderDesign) : _strEmpty;\r\n }\r\n else {\r\n arrangeContent[scrollbarVarsInverted._w_h] =\r\n contentElementCSS[_strMarginMinus + strDirection] =\r\n contentElementCSS[_strBorderMinus + strDirection] = _strEmpty;\r\n arrangeChanged = true;\r\n }\r\n };\r\n\r\n if (_nativeScrollbarStyling) {\r\n if (ignoreOverlayScrollbarHiding) \r\n removeClass(_viewportElement, _classNameViewportNativeScrollbarsInvisible);\r\n else\r\n addClass(_viewportElement, _classNameViewportNativeScrollbarsInvisible);\r\n }\r\n else {\r\n setContentElementCSS(true);\r\n setContentElementCSS(false);\r\n }\r\n }\r\n if (ignoreOverlayScrollbarHiding) {\r\n arrangeContent.w = arrangeContent.h = _strEmpty;\r\n arrangeChanged = true;\r\n }\r\n if (arrangeChanged && !_nativeScrollbarStyling) {\r\n contentArrangeElementCSS[_strWidth] = hideOverflow.y ? arrangeContent.w : _strEmpty;\r\n contentArrangeElementCSS[_strHeight] = hideOverflow.x ? arrangeContent.h : _strEmpty;\r\n\r\n if (!_contentArrangeElement) {\r\n _contentArrangeElement = FRAMEWORK(generateDiv(_classNameContentArrangeElement));\r\n _viewportElement.prepend(_contentArrangeElement);\r\n }\r\n _contentArrangeElement.css(contentArrangeElementCSS);\r\n }\r\n _contentElement.css(contentElementCSS);\r\n }\r\n\r\n var viewportElementCSS = {};\r\n var paddingElementCSS = {};\r\n var setViewportCSS;\r\n if (hostSizeChanged || hasOverflow.c || hideOverflow.c || contentScrollSize.c || overflowBehaviorChanged || boxSizingChanged || ignoreOverlayScrollbarHidingChanged || cssDirectionChanged || clipAlwaysChanged || heightAutoChanged) {\r\n viewportElementCSS[isRTLRight] = _strEmpty;\r\n setViewportCSS = function(horizontal) {\r\n var scrollbarVars = getScrollbarVars(horizontal);\r\n var scrollbarVarsInverted = getScrollbarVars(!horizontal);\r\n var xy = scrollbarVars._x_y;\r\n var XY = scrollbarVars._X_Y;\r\n var strDirection = horizontal ? _strBottom : isRTLLeft;\r\n\r\n var reset = function () {\r\n viewportElementCSS[strDirection] = _strEmpty;\r\n _contentBorderSize[scrollbarVarsInverted._w_h] = 0;\r\n };\r\n if (hasOverflow[xy] && hideOverflow[xy + 's']) {\r\n viewportElementCSS[strOverflow + XY] = _strScroll;\r\n if (ignoreOverlayScrollbarHiding || _nativeScrollbarStyling) {\r\n reset();\r\n }\r\n else {\r\n viewportElementCSS[strDirection] = -(_nativeScrollbarIsOverlaid[xy] ? _overlayScrollbarDummySize[xy] : _nativeScrollbarSize[xy]);\r\n _contentBorderSize[scrollbarVarsInverted._w_h] = _nativeScrollbarIsOverlaid[xy] ? _overlayScrollbarDummySize[scrollbarVarsInverted._x_y] : 0;\r\n }\r\n } else {\r\n viewportElementCSS[strOverflow + XY] = _strEmpty;\r\n reset();\r\n }\r\n };\r\n setViewportCSS(true);\r\n setViewportCSS(false);\r\n \r\n // if the scroll container is too small and if there is any overflow with no overlay scrollbar (and scrollbar styling isn't possible), \r\n // make viewport element greater in size (Firefox hide Scrollbars fix)\r\n // because firefox starts hiding scrollbars on too small elements\r\n // with this behavior the overflow calculation may be incorrect or the scrollbars would appear suddenly\r\n // https://bugzilla.mozilla.org/show_bug.cgi?id=292284\r\n if (!_nativeScrollbarStyling \r\n && (_viewportSize.h < _nativeScrollbarMinSize.x || _viewportSize.w < _nativeScrollbarMinSize.y)\r\n && ((hasOverflow.x && hideOverflow.x && !_nativeScrollbarIsOverlaid.x) || (hasOverflow.y && hideOverflow.y && !_nativeScrollbarIsOverlaid.y))) {\r\n viewportElementCSS[_strPaddingMinus + _strTop] = _nativeScrollbarMinSize.x;\r\n viewportElementCSS[_strMarginMinus + _strTop] = -_nativeScrollbarMinSize.x;\r\n\r\n viewportElementCSS[_strPaddingMinus + isRTLRight] = _nativeScrollbarMinSize.y;\r\n viewportElementCSS[_strMarginMinus + isRTLRight] = -_nativeScrollbarMinSize.y;\r\n }\r\n else {\r\n viewportElementCSS[_strPaddingMinus + _strTop] =\r\n viewportElementCSS[_strMarginMinus + _strTop] =\r\n viewportElementCSS[_strPaddingMinus + isRTLRight] =\r\n viewportElementCSS[_strMarginMinus + isRTLRight] = _strEmpty;\r\n }\r\n viewportElementCSS[_strPaddingMinus + isRTLLeft] =\r\n viewportElementCSS[_strMarginMinus + isRTLLeft] = _strEmpty;\r\n\r\n //if there is any overflow (x OR y axis) and this overflow shall be hidden, make overflow hidden, else overflow visible\r\n if ((hasOverflow.x && hideOverflow.x) || (hasOverflow.y && hideOverflow.y) || hideOverflowForceTextarea) {\r\n //only hide if is Textarea\r\n if (_isTextarea && hideOverflowForceTextarea) {\r\n paddingElementCSS[strOverflowX] =\r\n paddingElementCSS[strOverflowY] = strHidden;\r\n }\r\n }\r\n else {\r\n if (!clipAlways || (overflowBehaviorIsVH.x || overflowBehaviorIsVS.x || overflowBehaviorIsVH.y || overflowBehaviorIsVS.y)) {\r\n //only un-hide if Textarea\r\n if (_isTextarea) {\r\n paddingElementCSS[strOverflowX] =\r\n paddingElementCSS[strOverflowY] = _strEmpty;\r\n }\r\n viewportElementCSS[strOverflowX] =\r\n viewportElementCSS[strOverflowY] = strVisible;\r\n }\r\n }\r\n\r\n _paddingElement.css(paddingElementCSS);\r\n _viewportElement.css(viewportElementCSS);\r\n viewportElementCSS = { };\r\n\r\n //force soft redraw in webkit because without the scrollbars will may appear because DOM wont be redrawn under special conditions\r\n if ((hasOverflow.c || boxSizingChanged || widthAutoChanged || heightAutoChanged) && !(_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y)) {\r\n var elementStyle = _contentElementNative[LEXICON.s];\r\n var dump;\r\n elementStyle.webkitTransform = 'scale(1)';\r\n elementStyle.display = 'run-in';\r\n dump = _contentElementNative[LEXICON.oH];\r\n elementStyle.display = _strEmpty; //|| dump; //use dump to prevent it from deletion if minify\r\n elementStyle.webkitTransform = _strEmpty;\r\n }\r\n /*\r\n //force hard redraw in webkit if native overlaid scrollbars shall appear\r\n if (ignoreOverlayScrollbarHidingChanged && ignoreOverlayScrollbarHiding) {\r\n _hostElement.hide();\r\n var dump = _hostElementNative[LEXICON.oH];\r\n _hostElement.show();\r\n }\r\n */\r\n }\r\n\r\n //change to direction RTL and width auto Bugfix in Webkit\r\n //without this fix, the DOM still thinks the scrollbar is LTR and thus the content is shifted to the left\r\n contentElementCSS = {};\r\n if (cssDirectionChanged || widthAutoChanged || heightAutoChanged) {\r\n if (_isRTL && widthAuto) {\r\n var floatTmp = _contentElement.css(_strFloat);\r\n var posLeftWithoutFloat = MATH.round(_contentElement.css(_strFloat, _strEmpty).css(_strLeft, _strEmpty).position().left);\r\n _contentElement.css(_strFloat, floatTmp);\r\n var posLeftWithFloat = MATH.round(_contentElement.position().left);\r\n\r\n if (posLeftWithoutFloat !== posLeftWithFloat)\r\n contentElementCSS[_strLeft] = posLeftWithoutFloat;\r\n }\r\n else {\r\n contentElementCSS[_strLeft] = _strEmpty;\r\n }\r\n }\r\n _contentElement.css(contentElementCSS);\r\n\r\n //handle scroll position\r\n if (_isTextarea && contentSizeChanged) {\r\n var textareaInfo = getTextareaInfo();\r\n if (textareaInfo) {\r\n var textareaRowsChanged = _textareaInfoCache === undefined ? true : textareaInfo._rows !== _textareaInfoCache._rows;\r\n var cursorRow = textareaInfo._cursorRow;\r\n var cursorCol = textareaInfo._cursorColumn;\r\n var widestRow = textareaInfo._widestRow;\r\n var lastRow = textareaInfo._rows;\r\n var lastCol = textareaInfo._columns;\r\n var cursorPos = textareaInfo._cursorPosition;\r\n var cursorMax = textareaInfo._cursorMax;\r\n var cursorIsLastPosition = (cursorPos >= cursorMax && _textareaHasFocus);\r\n var textareaScrollAmount = {\r\n x: (!textareaAutoWrapping && (cursorCol === lastCol && cursorRow === widestRow)) ? _overflowAmountCache.x : -1,\r\n y: (textareaAutoWrapping ? cursorIsLastPosition || textareaRowsChanged && (previousOverflow !== undefined ? (currScroll.y === previousOverflow.y) : false) : (cursorIsLastPosition || textareaRowsChanged) && cursorRow === lastRow) ? _overflowAmountCache.y : -1\r\n };\r\n currScroll.x = textareaScrollAmount.x > -1 ? (_isRTL && _normalizeRTLCache && _rtlScrollBehavior.i ? 0 : textareaScrollAmount.x) : currScroll.x; //if inverted, scroll to 0 -> normalized this means to max scroll offset.\r\n currScroll.y = textareaScrollAmount.y > -1 ? textareaScrollAmount.y : currScroll.y;\r\n }\r\n _textareaInfoCache = textareaInfo;\r\n }\r\n if (_isRTL && _rtlScrollBehavior.i && _nativeScrollbarIsOverlaid.y && hasOverflow.x && _normalizeRTLCache)\r\n currScroll.x += _contentBorderSize.w || 0;\r\n if(widthAuto)\r\n _hostElement[_strScrollLeft](0);\r\n if(heightAuto)\r\n _hostElement[_strScrollTop](0);\r\n _viewportElement[_strScrollLeft](currScroll.x)[_strScrollTop](currScroll.y);\r\n\r\n //scrollbars management:\r\n var scrollbarsVisibilityVisible = scrollbarsVisibility === 'v';\r\n var scrollbarsVisibilityHidden = scrollbarsVisibility === 'h';\r\n var scrollbarsVisibilityAuto = scrollbarsVisibility === 'a';\r\n\r\n var showScrollbarH = COMPATIBILITY.bind(refreshScrollbarAppearance, 0, true, true, canScroll.x);\r\n var showScrollbarV = COMPATIBILITY.bind(refreshScrollbarAppearance, 0, false, true, canScroll.y);\r\n var hideScrollbarH = COMPATIBILITY.bind(refreshScrollbarAppearance, 0, true, false, canScroll.x);\r\n var hideScrollbarV = COMPATIBILITY.bind(refreshScrollbarAppearance, 0, false, false, canScroll.y);\r\n\r\n //manage class name which indicates scrollable overflow\r\n if (hideOverflow.x || hideOverflow.y)\r\n addClass(_hostElement, _classNameHostOverflow);\r\n else\r\n removeClass(_hostElement, _classNameHostOverflow);\r\n if (hideOverflow.x)\r\n addClass(_hostElement, _classNameHostOverflowX);\r\n else\r\n removeClass(_hostElement, _classNameHostOverflowX);\r\n if (hideOverflow.y)\r\n addClass(_hostElement, _classNameHostOverflowY);\r\n else\r\n removeClass(_hostElement, _classNameHostOverflowY);\r\n\r\n //add or remove rtl class name for styling purposes\r\n if (cssDirectionChanged) {\r\n if (_isRTL)\r\n addClass(_hostElement, _classNameHostRTL);\r\n else\r\n removeClass(_hostElement, _classNameHostRTL);\r\n }\r\n\r\n //manage the resize feature (CSS3 resize \"polyfill\" for this plugin)\r\n if (_isBody)\r\n addClass(_hostElement, _classNameHostResizeDisabled);\r\n if (resizeChanged) {\r\n var setupCornerEvents = function(remove) {\r\n if(_supportPassiveEvents)\r\n setupPassiveEventListener(_scrollbarCornerElement, _strMouseTouchDownEvent, _resizeOnMouseTouchDown, remove, true);\r\n else\r\n _scrollbarCornerElement[remove ? 'off' : 'on'](_strMouseTouchDownEvent, _resizeOnMouseTouchDown);\r\n };\r\n removeClass(_scrollbarCornerElement, [ \r\n _classNameScrollbarCornerResize,\r\n _classNameScrollbarCornerResizeB,\r\n _classNameScrollbarCornerResizeH,\r\n _classNameScrollbarCornerResizeV].join(_strSpace));\r\n if (_resizeNone) {\r\n addClass(_hostElement, _classNameHostResizeDisabled);\r\n setupCornerEvents(true);\r\n }\r\n else {\r\n removeClass(_hostElement, _classNameHostResizeDisabled);\r\n addClass(_scrollbarCornerElement, _classNameScrollbarCornerResize);\r\n if (_resizeBoth)\r\n addClass(_scrollbarCornerElement, _classNameScrollbarCornerResizeB);\r\n else if (_resizeHorizontal)\r\n addClass(_scrollbarCornerElement, _classNameScrollbarCornerResizeH);\r\n else if (_resizeVertical)\r\n addClass(_scrollbarCornerElement, _classNameScrollbarCornerResizeV);\r\n\r\n setupCornerEvents(true);\r\n setupCornerEvents();\r\n }\r\n }\r\n\r\n //manage the scrollbars general visibility + the scrollbar interactivity (unusable class name)\r\n if (scrollbarsVisibilityChanged || overflowBehaviorChanged || hideOverflow.c || hasOverflow.c || ignoreOverlayScrollbarHidingChanged) {\r\n if (ignoreOverlayScrollbarHiding) {\r\n if (ignoreOverlayScrollbarHidingChanged) {\r\n removeClass(_hostElement, _classNameHostScrolling);\r\n if (ignoreOverlayScrollbarHiding) {\r\n hideScrollbarH();\r\n hideScrollbarV();\r\n }\r\n }\r\n }\r\n else if (scrollbarsVisibilityAuto) {\r\n if (canScroll.x)\r\n showScrollbarH();\r\n else\r\n hideScrollbarH();\r\n\r\n if (canScroll.y)\r\n showScrollbarV();\r\n else\r\n hideScrollbarV();\r\n }\r\n else if (scrollbarsVisibilityVisible) {\r\n showScrollbarH();\r\n showScrollbarV();\r\n }\r\n else if (scrollbarsVisibilityHidden) {\r\n hideScrollbarH();\r\n hideScrollbarV();\r\n }\r\n }\r\n\r\n //manage the scrollbars auto hide feature (auto hide them after specific actions)\r\n if (scrollbarsAutoHideChanged || ignoreOverlayScrollbarHidingChanged) {\r\n if (_scrollbarsAutoHideLeave || _scrollbarsAutoHideMove) {\r\n setupHostMouseTouchEvents(true);\r\n setupHostMouseTouchEvents();\r\n }\r\n else {\r\n setupHostMouseTouchEvents(true);\r\n }\r\n\r\n if (_scrollbarsAutoHideNever)\r\n refreshScrollbarsAutoHide(true);\r\n else\r\n refreshScrollbarsAutoHide(false, true);\r\n }\r\n\r\n //manage scrollbars handle length & offset - don't remove!\r\n if (hostSizeChanged || overflowAmount.c || heightAutoChanged || widthAutoChanged || resizeChanged || boxSizingChanged || paddingAbsoluteChanged || ignoreOverlayScrollbarHidingChanged || cssDirectionChanged) {\r\n refreshScrollbarHandleLength(true);\r\n refreshScrollbarHandleOffset(true);\r\n refreshScrollbarHandleLength(false);\r\n refreshScrollbarHandleOffset(false);\r\n }\r\n\r\n //manage interactivity\r\n if (scrollbarsClickScrollingChanged)\r\n refreshScrollbarsInteractive(true, scrollbarsClickScrolling);\r\n if (scrollbarsDragScrollingChanged)\r\n refreshScrollbarsInteractive(false, scrollbarsDragScrolling);\r\n\r\n //callbacks:\r\n if (cssDirectionChanged) {\r\n dispatchCallback(\"onDirectionChanged\", {\r\n isRTL: _isRTL,\r\n dir: cssDirection\r\n });\r\n }\r\n if (hostSizeChanged) {\r\n dispatchCallback(\"onHostSizeChanged\", {\r\n width: _hostSizeCache.w,\r\n height: _hostSizeCache.h\r\n });\r\n }\r\n if (contentSizeChanged) {\r\n dispatchCallback(\"onContentSizeChanged\", {\r\n width: _contentScrollSizeCache.w,\r\n height: _contentScrollSizeCache.h\r\n });\r\n }\r\n if (hasOverflow.c || hideOverflow.c) {\r\n dispatchCallback(\"onOverflowChanged\", {\r\n x: hasOverflow.x,\r\n y: hasOverflow.y,\r\n xScrollable: hideOverflow.xs,\r\n yScrollable: hideOverflow.ys,\r\n clipped: hideOverflow.x || hideOverflow.y\r\n });\r\n }\r\n if (overflowAmount.c) {\r\n dispatchCallback(\"onOverflowAmountChanged\", {\r\n x: overflowAmount.x,\r\n y: overflowAmount.y\r\n });\r\n }\r\n }\r\n\r\n //fix body min size\r\n if (_isBody && _bodyMinSizeCache && (_hasOverflowCache.c || _bodyMinSizeCache.c)) {\r\n //its possible that no min size was measured until now, because the content arrange element was just added now, in this case, measure now the min size.\r\n if (!_bodyMinSizeCache.f)\r\n bodyMinSizeChanged();\r\n if (_nativeScrollbarIsOverlaid.y && _hasOverflowCache.x)\r\n _contentElement.css(_strMinMinus + _strWidth, _bodyMinSizeCache.w + _overlayScrollbarDummySize.y);\r\n if (_nativeScrollbarIsOverlaid.x && _hasOverflowCache.y)\r\n _contentElement.css(_strMinMinus + _strHeight, _bodyMinSizeCache.h + _overlayScrollbarDummySize.x);\r\n _bodyMinSizeCache.c = false;\r\n }\r\n\r\n //freezeResizeObserver(_sizeObserverElement, false);\r\n //freezeResizeObserver(_sizeAutoObserverElement, false);\r\n\r\n dispatchCallback(\"onUpdated\", { forced: force });\r\n }\r\n\r\n \r\n //==== Options ====//\r\n\r\n /**\r\n * Sets new options but doesn't call the update method.\r\n * @param newOptions The object which contains the new options.\r\n * @returns {*} A object which contains the changed options.\r\n */\r\n function setOptions(newOptions) {\r\n var validatedOpts = _pluginsOptions._validate(newOptions, _pluginsOptions._template, true, _currentOptions)\r\n\r\n _currentOptions = extendDeep({}, _currentOptions, validatedOpts._default);\r\n _currentPreparedOptions = extendDeep({}, _currentPreparedOptions, validatedOpts._prepared);\r\n \r\n return validatedOpts._prepared;\r\n }\r\n\r\n\r\n //==== Structure ====//\r\n\r\n /**\r\n * Builds or destroys the wrapper and helper DOM elements.\r\n * @param destroy Indicates whether the DOM shall be build or destroyed.\r\n */\r\n function setupStructureDOM(destroy) {\r\n var adoptAttrs = _currentPreparedOptions.textarea.inheritedAttrs;\r\n var adoptAttrsMap = { };\r\n var applyAdoptedAttrs = function() {\r\n var applyAdoptedAttrsElm = destroy ? _targetElement : _hostElement;\r\n each(adoptAttrsMap, function(k, v) {\r\n if(type(v) == TYPES.s) {\r\n if(k == LEXICON.c)\r\n applyAdoptedAttrsElm.addClass(v);\r\n else\r\n applyAdoptedAttrsElm.attr(k, v);\r\n }\r\n });\r\n };\r\n var hostElementClassNames = [\r\n _classNameHostElement,\r\n _classNameHostTextareaElement,\r\n _classNameHostResizeDisabled,\r\n _classNameHostRTL,\r\n _classNameHostScrollbarHorizontalHidden,\r\n _classNameHostScrollbarVerticalHidden,\r\n _classNameHostTransition,\r\n _classNameHostScrolling,\r\n _classNameHostOverflow,\r\n _classNameHostOverflowX,\r\n _classNameHostOverflowY,\r\n _classNameThemeNone,\r\n _classNameTextareaElement,\r\n _classNameTextInherit,\r\n _classNameCache].join(_strSpace);\r\n adoptAttrs = type(adoptAttrs) == TYPES.s ? adoptAttrs.split(' ') : adoptAttrs;\r\n if(type(adoptAttrs) == TYPES.a) {\r\n each(adoptAttrs, function(i, v) {\r\n if(type(v) == TYPES.s)\r\n adoptAttrsMap[v] = destroy ? _hostElement.attr(v) : _targetElement.attr(v);\r\n });\r\n }\r\n\r\n if(!destroy) {\r\n if (_isTextarea) {\r\n var hostElementCSS = {};\r\n var parent = _targetElement.parent();\r\n _isTextareaHostGenerated = !(parent.hasClass(_classNameHostTextareaElement) && parent.children()[LEXICON.l] === 1);\r\n\r\n if (!_currentPreparedOptions.sizeAutoCapable) {\r\n hostElementCSS[_strWidth] = _targetElement.css(_strWidth);\r\n hostElementCSS[_strHeight] = _targetElement.css(_strHeight);\r\n }\r\n if(_isTextareaHostGenerated)\r\n _targetElement.wrap(generateDiv(_classNameHostTextareaElement));\r\n\r\n _hostElement = _targetElement.parent();\r\n _hostElement.css(hostElementCSS)\r\n .wrapInner(generateDiv(_classNameContentElement + _strSpace + _classNameTextInherit))\r\n .wrapInner(generateDiv(_classNameViewportElement + _strSpace + _classNameTextInherit))\r\n .wrapInner(generateDiv(_classNamePaddingElement + _strSpace + _classNameTextInherit));\r\n _contentElement = findFirst(_hostElement, _strDot + _classNameContentElement);\r\n _viewportElement = findFirst(_hostElement, _strDot + _classNameViewportElement);\r\n _paddingElement = findFirst(_hostElement, _strDot + _classNamePaddingElement);\r\n _textareaCoverElement = FRAMEWORK(generateDiv(_classNameTextareaCoverElement));\r\n _contentElement.prepend(_textareaCoverElement);\r\n\r\n addClass(_targetElement, _classNameTextareaElement + _strSpace + _classNameTextInherit);\r\n\r\n if(_isTextareaHostGenerated)\r\n applyAdoptedAttrs();\r\n }\r\n else {\r\n _hostElement = _targetElement;\r\n _hostElement.wrapInner(generateDiv(_classNameContentElement))\r\n .wrapInner(generateDiv(_classNameViewportElement))\r\n .wrapInner(generateDiv(_classNamePaddingElement));\r\n _contentElement = findFirst(_hostElement, _strDot + _classNameContentElement);\r\n _viewportElement = findFirst(_hostElement, _strDot + _classNameViewportElement);\r\n _paddingElement = findFirst(_hostElement, _strDot + _classNamePaddingElement);\r\n\r\n addClass(_targetElement, _classNameHostElement);\r\n }\r\n \r\n if (_nativeScrollbarStyling)\r\n addClass(_viewportElement, _classNameViewportNativeScrollbarsInvisible);\r\n if(_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y)\r\n addClass(_viewportElement, _classNameViewportNativeScrollbarsOverlaid);\r\n if (_isBody)\r\n addClass(_htmlElement, _classNameHTMLElement);\r\n\r\n _sizeObserverElement = FRAMEWORK(generateDiv('os-resize-observer-host'));\r\n _hostElement.prepend(_sizeObserverElement);\r\n\r\n _sizeObserverElementNative = _sizeObserverElement[0];\r\n _hostElementNative = _hostElement[0];\r\n _paddingElementNative = _paddingElement[0];\r\n _viewportElementNative = _viewportElement[0];\r\n _contentElementNative = _contentElement[0];\r\n }\r\n else {\r\n _contentElement.contents()\r\n .unwrap()\r\n .unwrap()\r\n .unwrap();\r\n\r\n removeClass(_hostElement, hostElementClassNames);\r\n if (_isTextarea) {\r\n _targetElement.removeAttr(LEXICON.s);\r\n\r\n if(_isTextareaHostGenerated)\r\n applyAdoptedAttrs();\r\n\r\n removeClass(_targetElement, hostElementClassNames);\r\n remove(_textareaCoverElement);\r\n\r\n if(_isTextareaHostGenerated) {\r\n _targetElement.unwrap();\r\n remove(_hostElement);\r\n }\r\n else {\r\n addClass(_hostElement, _classNameHostTextareaElement);\r\n }\r\n }\r\n else {\r\n removeClass(_targetElement, _classNameHostElement);\r\n }\r\n\r\n if (_isBody)\r\n removeClass(_htmlElement, _classNameHTMLElement);\r\n\r\n remove(_sizeObserverElement);\r\n }\r\n }\r\n\r\n /**\r\n * Adds or removes all wrapper elements interactivity events.\r\n * @param destroy Indicates whether the Events shall be added or removed.\r\n */\r\n function setupStructureEvents(destroy) {\r\n var textareaKeyDownRestrictedKeyCodes = [\r\n 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, //F1 to F12\r\n 33, 34, //page up, page down\r\n 37, 38, 39, 40, //left, up, right, down arrows\r\n 16, 17, 18, 19, 20, 144 //Shift, Ctrl, Alt, Pause, CapsLock, NumLock\r\n ];\r\n var textareaKeyDownKeyCodesList = [ ];\r\n var textareaUpdateIntervalID;\r\n var scrollStopDelay = 175;\r\n var scrollStopTimeoutId;\r\n var strOnOff = destroy ? 'off' : 'on';\r\n var updateTextarea;\r\n var viewportOnScroll;\r\n\r\n if(!destroy && _isTextarea) {\r\n _textareaEvents = { };\r\n updateTextarea = function(doClearInterval) {\r\n textareaUpdate();\r\n _base.update(_strAuto);\r\n if(doClearInterval)\r\n clearInterval(textareaUpdateIntervalID);\r\n };\r\n _textareaEvents[_strScroll] = function(event) {\r\n _targetElement[_strScrollLeft](_rtlScrollBehavior.i && _normalizeRTLCache ? 9999999 : 0);\r\n _targetElement[_strScrollTop](0);\r\n COMPATIBILITY.prvD(event);\r\n COMPATIBILITY.stpP(event);\r\n return false;\r\n };\r\n _textareaEvents['drop'] = function() {\r\n setTimeout(function () {\r\n if(!_destroyed)\r\n updateTextarea();\r\n }, 50);\r\n };\r\n _textareaEvents['focus'] = function() {\r\n _textareaHasFocus = true;\r\n };\r\n _textareaEvents['focusout'] = function() {\r\n _textareaHasFocus = false;\r\n textareaKeyDownKeyCodesList = [ ];\r\n updateTextarea(true);\r\n };\r\n if (_msieVersion > 9 || !_autoUpdateRecommended) {\r\n _textareaEvents['input'] = function textareaOnInput() {\r\n updateTextarea();\r\n }\r\n }\r\n else {\r\n _textareaEvents[_strKeyDownEvent] = function textareaOnKeyDown(event) {\r\n var keyCode = event.keyCode;\r\n if (inArray(keyCode, textareaKeyDownRestrictedKeyCodes) > -1)\r\n return;\r\n if (!textareaKeyDownKeyCodesList.length) {\r\n updateTextarea();\r\n textareaUpdateIntervalID = setInterval(updateTextarea, 1000 / 60);\r\n }\r\n if (inArray(keyCode, textareaKeyDownKeyCodesList) === -1)\r\n textareaKeyDownKeyCodesList.push(keyCode);\r\n };\r\n _textareaEvents[_strKeyUpEvent] = function(event) {\r\n var keyCode = event.keyCode;\r\n var index = inArray(keyCode, textareaKeyDownKeyCodesList);\r\n\r\n if (inArray(keyCode, textareaKeyDownRestrictedKeyCodes) > -1)\r\n return;\r\n if (index > -1)\r\n textareaKeyDownKeyCodesList.splice(index, 1);\r\n if (!textareaKeyDownKeyCodesList.length)\r\n updateTextarea(true);\r\n };\r\n }\r\n }\r\n\r\n if (_isTextarea) {\r\n each(_textareaEvents, function(key, value) {\r\n _targetElement[strOnOff](key, value);\r\n });\r\n }\r\n else {\r\n _contentElement[strOnOff](_strTransitionEndEvent, function (event) {\r\n if (_autoUpdateCache === true)\r\n return;\r\n event = event.originalEvent || event;\r\n if (isSizeAffectingCSSProperty(event.propertyName))\r\n _base.update(_strAuto);\r\n });\r\n }\r\n\r\n if(!destroy) {\r\n viewportOnScroll = function(event) {\r\n if (!_sleeping) {\r\n if (scrollStopTimeoutId !== undefined)\r\n clearTimeout(scrollStopTimeoutId);\r\n else {\r\n if (_scrollbarsAutoHideScroll || _scrollbarsAutoHideMove)\r\n refreshScrollbarsAutoHide(true);\r\n\r\n if (!nativeOverlayScrollbarsAreActive())\r\n addClass(_hostElement, _classNameHostScrolling);\r\n\r\n dispatchCallback(\"onScrollStart\", event);\r\n }\r\n\r\n //if a scrollbars handle gets dragged, the mousemove event is responsible for refreshing the handle offset\r\n //because if CSS scroll-snap is used, the handle offset gets only refreshed on every snap point\r\n //this looks laggy & clunky, it looks much better if the offset refreshes with the mousemove\r\n if(!_scrollbarsHandlesDefineScrollPos) {\r\n refreshScrollbarHandleOffset(true);\r\n refreshScrollbarHandleOffset(false);\r\n }\r\n dispatchCallback(\"onScroll\", event);\r\n\r\n scrollStopTimeoutId = setTimeout(function () {\r\n if(!_destroyed) {\r\n //OnScrollStop:\r\n clearTimeout(scrollStopTimeoutId);\r\n scrollStopTimeoutId = undefined;\r\n\r\n if (_scrollbarsAutoHideScroll || _scrollbarsAutoHideMove)\r\n refreshScrollbarsAutoHide(false);\r\n\r\n if (!nativeOverlayScrollbarsAreActive())\r\n removeClass(_hostElement, _classNameHostScrolling);\r\n\r\n dispatchCallback(\"onScrollStop\", event);\r\n }\r\n }, scrollStopDelay);\r\n }\r\n };\r\n\r\n if (_supportPassiveEvents)\r\n setupPassiveEventListener(_viewportElement, _strScroll, viewportOnScroll);\r\n else\r\n _viewportElement.on(_strScroll, viewportOnScroll);\r\n }\r\n }\r\n\r\n\r\n\r\n //==== Scrollbars ====//\r\n\r\n /**\r\n * Builds or destroys all scrollbar DOM elements (scrollbar, track, handle)\r\n * @param destroy Indicates whether the DOM shall be build or destroyed.\r\n */\r\n function setupScrollbarsDOM(destroy) {\r\n if(!destroy) {\r\n _scrollbarHorizontalElement = FRAMEWORK(generateDiv(_classNameScrollbar + _strSpace + _classNameScrollbarHorizontal));\r\n _scrollbarHorizontalTrackElement = FRAMEWORK(generateDiv(_classNameScrollbarTrack));\r\n _scrollbarHorizontalHandleElement = FRAMEWORK(generateDiv(_classNameScrollbarHandle));\r\n _scrollbarVerticalElement = FRAMEWORK(generateDiv(_classNameScrollbar + _strSpace + _classNameScrollbarVertical));\r\n _scrollbarVerticalTrackElement = FRAMEWORK(generateDiv(_classNameScrollbarTrack));\r\n _scrollbarVerticalHandleElement = FRAMEWORK(generateDiv(_classNameScrollbarHandle));\r\n\r\n _scrollbarHorizontalElement.append(_scrollbarHorizontalTrackElement);\r\n _scrollbarHorizontalTrackElement.append(_scrollbarHorizontalHandleElement);\r\n _scrollbarVerticalElement.append(_scrollbarVerticalTrackElement);\r\n _scrollbarVerticalTrackElement.append(_scrollbarVerticalHandleElement);\r\n\r\n _paddingElement.after(_scrollbarVerticalElement);\r\n _paddingElement.after(_scrollbarHorizontalElement);\r\n }\r\n else {\r\n remove(_scrollbarHorizontalElement);\r\n remove(_scrollbarVerticalElement);\r\n }\r\n }\r\n\r\n /**\r\n * Initializes all scrollbar interactivity events. (track and handle dragging, clicking, scrolling)\r\n * @param isHorizontal True if the target scrollbar is the horizontal scrollbar, false if the target scrollbar is the vertical scrollbar.\r\n */\r\n function setupScrollbarEvents(isHorizontal) {\r\n var scrollbarVars = getScrollbarVars(isHorizontal);\r\n var scrollbarVarsInfo = scrollbarVars._info;\r\n var insideIFrame = _windowElementNative.top !== _windowElementNative;\r\n var xy = scrollbarVars._x_y;\r\n var XY = scrollbarVars._X_Y;\r\n var scroll = _strScroll + scrollbarVars._Left_Top;\r\n var strActive = 'active';\r\n var strSnapHandle = 'snapHandle';\r\n var scrollDurationFactor = 1;\r\n var increaseDecreaseScrollAmountKeyCodes = [ 16, 17 ]; //shift, ctrl\r\n var trackTimeout;\r\n var mouseDownScroll;\r\n var mouseDownOffset;\r\n var mouseDownInvertedScale;\r\n \r\n function setupEvent(element, eventNames, listener) {\r\n var collected = type(eventNames) == TYPES.a && type(listener) == TYPES.a;\r\n var i = 0;\r\n \r\n if(collected) {\r\n for (; i < eventNames[LEXICON.l]; i++)\r\n setupEvent(element, eventNames[i], listener[i]);\r\n }\r\n else {\r\n if(_supportPassiveEvents)\r\n setupPassiveEventListener(element, eventNames, listener, false, true);\r\n else\r\n element.on(eventNames, listener);\r\n }\r\n }\r\n function getPointerPosition(event) {\r\n return _msieVersion && insideIFrame ? event['screen' + XY] : COMPATIBILITY.page(event)[xy]; //use screen coordinates in EDGE & IE because the page values are incorrect in frames.\r\n }\r\n function getPreparedScrollbarsOption(name) {\r\n return _currentPreparedOptions.scrollbars[name];\r\n }\r\n function increaseTrackScrollAmount() {\r\n scrollDurationFactor = 0.5;\r\n }\r\n function decreaseTrackScrollAmount() {\r\n scrollDurationFactor = 1;\r\n }\r\n function documentKeyDown(event) {\r\n if (inArray(event.keyCode, increaseDecreaseScrollAmountKeyCodes) > -1)\r\n increaseTrackScrollAmount();\r\n }\r\n function documentKeyUp(event) {\r\n if (inArray(event.keyCode, increaseDecreaseScrollAmountKeyCodes) > -1)\r\n decreaseTrackScrollAmount();\r\n }\r\n function onMouseTouchDownContinue(event) {\r\n var originalEvent = event.originalEvent || event;\r\n var isTouchEvent = originalEvent.touches !== undefined;\r\n return _sleeping || _destroyed || nativeOverlayScrollbarsAreActive() || !_scrollbarsDragScrollingCache || (isTouchEvent && !getPreparedScrollbarsOption('touchSupport')) ? false : COMPATIBILITY.mBtn(event) === 1 || isTouchEvent;\r\n }\r\n function documentDragMove(event) {\r\n if(onMouseTouchDownContinue(event)) {\r\n var trackLength = scrollbarVarsInfo._trackLength;\r\n var handleLength = scrollbarVarsInfo._handleLength;\r\n var scrollRange = scrollbarVarsInfo._maxScroll;\r\n var scrollRaw = (getPointerPosition(event) - mouseDownOffset) * mouseDownInvertedScale;\r\n var scrollDeltaPercent = scrollRaw / (trackLength - handleLength);\r\n var scrollDelta = (scrollRange * scrollDeltaPercent);\r\n scrollDelta = isFinite(scrollDelta) ? scrollDelta : 0;\r\n if (_isRTL && isHorizontal && !_rtlScrollBehavior.i)\r\n scrollDelta *= -1;\r\n\r\n _viewportElement[scroll](MATH.round(mouseDownScroll + scrollDelta));\r\n\r\n if(_scrollbarsHandlesDefineScrollPos)\r\n refreshScrollbarHandleOffset(isHorizontal, mouseDownScroll + scrollDelta);\r\n\r\n if (!_supportPassiveEvents)\r\n COMPATIBILITY.prvD(event);\r\n }\r\n else\r\n documentMouseTouchUp(event);\r\n }\r\n function documentMouseTouchUp(event) {\r\n event = event || event.originalEvent;\r\n\r\n _documentElement.off(_strMouseTouchMoveEvent, documentDragMove)\r\n .off(_strMouseTouchUpEvent, documentMouseTouchUp)\r\n .off(_strKeyDownEvent, documentKeyDown)\r\n .off(_strKeyUpEvent, documentKeyUp)\r\n .off(_strSelectStartEvent, documentOnSelectStart);\r\n\r\n if(_scrollbarsHandlesDefineScrollPos)\r\n refreshScrollbarHandleOffset(isHorizontal, true);\r\n\r\n _scrollbarsHandlesDefineScrollPos = false;\r\n removeClass(_bodyElement, _classNameDragging);\r\n removeClass(scrollbarVars._handle, strActive);\r\n removeClass(scrollbarVars._track, strActive);\r\n removeClass(scrollbarVars._scrollbar, strActive);\r\n\r\n mouseDownScroll = undefined;\r\n mouseDownOffset = undefined;\r\n mouseDownInvertedScale = 1;\r\n\r\n decreaseTrackScrollAmount();\r\n\r\n if (trackTimeout !== undefined) {\r\n _base.scrollStop();\r\n clearTimeout(trackTimeout);\r\n trackTimeout = undefined;\r\n }\r\n\r\n if(event) {\r\n var rect = _hostElementNative.getBoundingClientRect();\r\n var mouseInsideHost = event.clientX >= rect.left && event.clientX <= rect.right && event.clientY >= rect.top && event.clientY <= rect.bottom;\r\n\r\n //if mouse is outside host element\r\n if (!mouseInsideHost)\r\n hostOnMouseLeave();\r\n\r\n if (_scrollbarsAutoHideScroll || _scrollbarsAutoHideMove)\r\n refreshScrollbarsAutoHide(false);\r\n }\r\n }\r\n function onHandleMouseTouchDown(event) {\r\n if (onMouseTouchDownContinue(event))\r\n onHandleMouseTouchDownAction(event);\r\n }\r\n function onHandleMouseTouchDownAction(event) {\r\n mouseDownScroll = _viewportElement[scroll]();\r\n mouseDownScroll = isNaN(mouseDownScroll) ? 0 : mouseDownScroll;\r\n if (_isRTL && isHorizontal && !_rtlScrollBehavior.n || !_isRTL)\r\n mouseDownScroll = mouseDownScroll < 0 ? 0 : mouseDownScroll;\r\n\r\n mouseDownInvertedScale = getHostElementInvertedScale()[xy];\r\n mouseDownOffset = getPointerPosition(event);\r\n\r\n _scrollbarsHandlesDefineScrollPos = !getPreparedScrollbarsOption(strSnapHandle);\r\n addClass(_bodyElement, _classNameDragging);\r\n addClass(scrollbarVars._handle, strActive);\r\n addClass(scrollbarVars._scrollbar, strActive);\r\n\r\n _documentElement.on(_strMouseTouchMoveEvent, documentDragMove)\r\n .on(_strMouseTouchUpEvent, documentMouseTouchUp)\r\n .on(_strSelectStartEvent, documentOnSelectStart);\r\n\r\n if(_msieVersion || !_documentMixed)\r\n COMPATIBILITY.prvD(event);\r\n COMPATIBILITY.stpP(event);\r\n }\r\n function onTrackMouseTouchDown(event) {\r\n if (onMouseTouchDownContinue(event)) {\r\n var scrollDistance = MATH.round(_viewportSize[scrollbarVars._w_h]);\r\n var trackOffset = scrollbarVars._track.offset()[scrollbarVars._left_top];\r\n var ctrlKey = event.ctrlKey;\r\n var instantScroll = event.shiftKey;\r\n var instantScrollTransition = instantScroll && ctrlKey;\r\n var isFirstIteration = true;\r\n var easing = 'linear';\r\n var decreaseScroll;\r\n var finishedCondition;\r\n var scrollActionFinsished = function(transition) {\r\n if(_scrollbarsHandlesDefineScrollPos)\r\n refreshScrollbarHandleOffset(isHorizontal, transition);\r\n };\r\n var scrollActionInstantFinished = function() {\r\n scrollActionFinsished();\r\n onHandleMouseTouchDownAction(event);\r\n };\r\n var scrollAction = function () {\r\n if(!_destroyed) {\r\n var mouseOffset = (mouseDownOffset - trackOffset) * mouseDownInvertedScale;\r\n var handleOffset = scrollbarVarsInfo._handleOffset;\r\n var trackLength = scrollbarVarsInfo._trackLength;\r\n var handleLength = scrollbarVarsInfo._handleLength;\r\n var scrollRange = scrollbarVarsInfo._maxScroll;\r\n var currScroll = scrollbarVarsInfo._currentScroll;\r\n var scrollDuration = 270 * scrollDurationFactor;\r\n var timeoutDelay = isFirstIteration ? MATH.max(400, scrollDuration) : scrollDuration;\r\n var instantScrollPosition = scrollRange * ((mouseOffset - (handleLength / 2)) / (trackLength - handleLength)); // 100% * positionPercent\r\n var rtlIsNormal = _isRTL && isHorizontal && ((!_rtlScrollBehavior.i && !_rtlScrollBehavior.n) || _normalizeRTLCache);\r\n var decreaseScrollCondition = rtlIsNormal ? handleOffset < mouseOffset : handleOffset > mouseOffset;\r\n var scrollObj = { };\r\n var animationObj = {\r\n easing : easing,\r\n step : function(now) {\r\n if(_scrollbarsHandlesDefineScrollPos) {\r\n _viewportElement[scroll](now); //https://github.com/jquery/jquery/issues/4340\r\n refreshScrollbarHandleOffset(isHorizontal, now);\r\n }\r\n }\r\n };\r\n instantScrollPosition = isFinite(instantScrollPosition) ? instantScrollPosition : 0;\r\n instantScrollPosition = _isRTL && isHorizontal && !_rtlScrollBehavior.i ? (scrollRange - instantScrollPosition) : instantScrollPosition;\r\n\r\n //_base.scrollStop();\r\n\r\n if(instantScroll) {\r\n _viewportElement[scroll](instantScrollPosition); //scroll instantly to new position\r\n if(instantScrollTransition) {\r\n //get the scroll position after instant scroll (in case CSS Snap Points are used) to get the correct snapped scroll position\r\n //and the animation stops at the correct point\r\n instantScrollPosition = _viewportElement[scroll]();\r\n //scroll back to the position before instant scrolling so animation can be performed\r\n _viewportElement[scroll](currScroll);\r\n\r\n instantScrollPosition = rtlIsNormal && _rtlScrollBehavior.i ? (scrollRange - instantScrollPosition) : instantScrollPosition;\r\n instantScrollPosition = rtlIsNormal && _rtlScrollBehavior.n ? -instantScrollPosition : instantScrollPosition;\r\n\r\n scrollObj[xy] = instantScrollPosition;\r\n _base.scroll(scrollObj, extendDeep(animationObj, {\r\n duration : 130,\r\n complete : scrollActionInstantFinished\r\n }));\r\n }\r\n else\r\n scrollActionInstantFinished();\r\n }\r\n else {\r\n decreaseScroll = isFirstIteration ? decreaseScrollCondition : decreaseScroll;\r\n finishedCondition = rtlIsNormal\r\n ? (decreaseScroll ? handleOffset + handleLength >= mouseOffset : handleOffset <= mouseOffset)\r\n : (decreaseScroll ? handleOffset <= mouseOffset : handleOffset + handleLength >= mouseOffset);\r\n\r\n if (finishedCondition) {\r\n clearTimeout(trackTimeout);\r\n _base.scrollStop();\r\n trackTimeout = undefined;\r\n scrollActionFinsished(true);\r\n }\r\n else {\r\n trackTimeout = setTimeout(scrollAction, timeoutDelay);\r\n\r\n scrollObj[xy] = (decreaseScroll ? '-=' : '+=') + scrollDistance;\r\n _base.scroll(scrollObj, extendDeep(animationObj, {\r\n duration: scrollDuration\r\n }));\r\n }\r\n isFirstIteration = false;\r\n }\r\n }\r\n };\r\n if (ctrlKey)\r\n increaseTrackScrollAmount();\r\n\r\n mouseDownInvertedScale = getHostElementInvertedScale()[xy];\r\n mouseDownOffset = COMPATIBILITY.page(event)[xy];\r\n\r\n _scrollbarsHandlesDefineScrollPos = !getPreparedScrollbarsOption(strSnapHandle);\r\n addClass(_bodyElement, _classNameDragging);\r\n addClass(scrollbarVars._track, strActive);\r\n addClass(scrollbarVars._scrollbar, strActive);\r\n\r\n _documentElement.on(_strMouseTouchUpEvent, documentMouseTouchUp)\r\n .on(_strKeyDownEvent, documentKeyDown)\r\n .on(_strKeyUpEvent, documentKeyUp)\r\n .on(_strSelectStartEvent, documentOnSelectStart);\r\n\r\n scrollAction();\r\n COMPATIBILITY.prvD(event);\r\n COMPATIBILITY.stpP(event);\r\n }\r\n }\r\n function onTrackMouseTouchEnter(event) {\r\n //make sure both scrollbars will stay visible if one scrollbar is hovered if autoHide is \"scroll\" or \"move\".\r\n _scrollbarsHandleHovered = true;\r\n if (_scrollbarsAutoHideScroll || _scrollbarsAutoHideMove)\r\n refreshScrollbarsAutoHide(true);\r\n }\r\n function onTrackMouseTouchLeave(event) {\r\n _scrollbarsHandleHovered = false;\r\n if (_scrollbarsAutoHideScroll || _scrollbarsAutoHideMove)\r\n refreshScrollbarsAutoHide(false);\r\n }\r\n function onScrollbarMouseTouchDown(event) {\r\n COMPATIBILITY.stpP(event);\r\n }\r\n \r\n setupEvent(scrollbarVars._handle, \r\n _strMouseTouchDownEvent, \r\n onHandleMouseTouchDown);\r\n setupEvent(scrollbarVars._track,\r\n [_strMouseTouchDownEvent, _strMouseTouchEnter, _strMouseTouchLeave], \r\n [onTrackMouseTouchDown, onTrackMouseTouchEnter, onTrackMouseTouchLeave]);\r\n setupEvent(scrollbarVars._scrollbar, \r\n _strMouseTouchDownEvent, \r\n onScrollbarMouseTouchDown);\r\n\r\n if (_supportTransition) {\r\n scrollbarVars._scrollbar.on(_strTransitionEndEvent, function(event) {\r\n if (event.target !== scrollbarVars._scrollbar[0])\r\n return;\r\n refreshScrollbarHandleLength(isHorizontal);\r\n refreshScrollbarHandleOffset(isHorizontal);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Shows or hides the given scrollbar and applied a class name which indicates if the scrollbar is scrollable or not.\r\n * @param isHorizontal True if the horizontal scrollbar is the target, false if the vertical scrollbar is the target.\r\n * @param shallBeVisible True if the scrollbar shall be shown, false if hidden.\r\n * @param canScroll True if the scrollbar is scrollable, false otherwise.\r\n */\r\n function refreshScrollbarAppearance(isHorizontal, shallBeVisible, canScroll) {\r\n var scrollbarClassName = isHorizontal ? _classNameHostScrollbarHorizontalHidden : _classNameHostScrollbarVerticalHidden;\r\n var scrollbarElement = isHorizontal ? _scrollbarHorizontalElement : _scrollbarVerticalElement;\r\n\r\n if (shallBeVisible)\r\n removeClass(_hostElement, scrollbarClassName);\r\n else\r\n addClass(_hostElement, scrollbarClassName);\r\n\r\n if (canScroll)\r\n removeClass(scrollbarElement, _classNameScrollbarUnusable);\r\n else\r\n addClass(scrollbarElement, _classNameScrollbarUnusable);\r\n }\r\n\r\n /**\r\n * Autoshows / autohides both scrollbars with.\r\n * @param shallBeVisible True if the scrollbars shall be autoshown (only the case if they are hidden by a autohide), false if the shall be auto hidden.\r\n * @param delayfree True if the scrollbars shall be hidden without a delay, false or undefined otherwise.\r\n */\r\n function refreshScrollbarsAutoHide(shallBeVisible, delayfree) {\r\n clearTimeout(_scrollbarsAutoHideTimeoutId);\r\n if (shallBeVisible) {\r\n //if(_hasOverflowCache.x && _hideOverflowCache.xs)\r\n removeClass(_scrollbarHorizontalElement, _classNameScrollbarAutoHidden);\r\n //if(_hasOverflowCache.y && _hideOverflowCache.ys)\r\n removeClass(_scrollbarVerticalElement, _classNameScrollbarAutoHidden);\r\n }\r\n else {\r\n var anyActive;\r\n var strActive = 'active';\r\n var hide = function () {\r\n if (!_scrollbarsHandleHovered && !_destroyed) {\r\n anyActive = _scrollbarHorizontalHandleElement.hasClass(strActive) || _scrollbarVerticalHandleElement.hasClass(strActive);\r\n if (!anyActive && (_scrollbarsAutoHideScroll || _scrollbarsAutoHideMove || _scrollbarsAutoHideLeave))\r\n addClass(_scrollbarHorizontalElement, _classNameScrollbarAutoHidden);\r\n if (!anyActive && (_scrollbarsAutoHideScroll || _scrollbarsAutoHideMove || _scrollbarsAutoHideLeave))\r\n addClass(_scrollbarVerticalElement, _classNameScrollbarAutoHidden);\r\n }\r\n };\r\n if (_scrollbarsAutoHideDelay > 0 && delayfree !== true)\r\n _scrollbarsAutoHideTimeoutId = setTimeout(hide, _scrollbarsAutoHideDelay);\r\n else\r\n hide();\r\n }\r\n }\r\n\r\n /**\r\n * Refreshes the handle length of the given scrollbar.\r\n * @param isHorizontal True if the horizontal scrollbar handle shall be refreshed, false if the vertical one shall be refreshed.\r\n */\r\n function refreshScrollbarHandleLength(isHorizontal) {\r\n var handleCSS = {};\r\n var scrollbarVars = getScrollbarVars(isHorizontal);\r\n var scrollbarVarsInfo = scrollbarVars._info;\r\n var digit = 1000000;\r\n //get and apply intended handle length\r\n var handleRatio = MATH.min(1, (_hostSizeCache[scrollbarVars._w_h] - (_paddingAbsoluteCache ? (isHorizontal ? _paddingX : _paddingY) : 0)) / _contentScrollSizeCache[scrollbarVars._w_h]);\r\n handleCSS[scrollbarVars._width_height] = (MATH.floor(handleRatio * 100 * digit) / digit) + \"%\"; //the last * digit / digit is for flooring to the 4th digit\r\n\r\n if (!nativeOverlayScrollbarsAreActive())\r\n scrollbarVars._handle.css(handleCSS);\r\n\r\n //measure the handle length to respect min & max length\r\n scrollbarVarsInfo._handleLength = scrollbarVars._handle[0]['offset' + scrollbarVars._Width_Height];\r\n scrollbarVarsInfo._handleLengthRatio = handleRatio;\r\n }\r\n\r\n /**\r\n * Refreshes the handle offset of the given scrollbar.\r\n * @param isHorizontal True if the horizontal scrollbar handle shall be refreshed, false if the vertical one shall be refreshed.\r\n * @param scrollOrTransition The scroll position of the given scrollbar axis to which the handle shall be moved or a boolean which indicates whether a transition shall be applied. If undefined or boolean if the current scroll-offset is taken. (if isHorizontal ? scrollLeft : scrollTop)\r\n */\r\n function refreshScrollbarHandleOffset(isHorizontal, scrollOrTransition) {\r\n var transition = type(scrollOrTransition) == TYPES.b;\r\n var transitionDuration = 250;\r\n var isRTLisHorizontal = _isRTL && isHorizontal;\r\n var scrollbarVars = getScrollbarVars(isHorizontal);\r\n var scrollbarVarsInfo = scrollbarVars._info;\r\n var strTranslateBrace = 'translate(';\r\n var strTransform = VENDORS._cssProperty('transform');\r\n var strTransition = VENDORS._cssProperty('transition');\r\n var nativeScroll = isHorizontal ? _viewportElement[_strScrollLeft]() : _viewportElement[_strScrollTop]();\r\n var currentScroll = scrollOrTransition === undefined || transition ? nativeScroll : scrollOrTransition;\r\n\r\n //measure the handle length to respect min & max length\r\n var handleLength = scrollbarVarsInfo._handleLength;\r\n var trackLength = scrollbarVars._track[0]['offset' + scrollbarVars._Width_Height];\r\n var handleTrackDiff = trackLength - handleLength;\r\n var handleCSS = {};\r\n var transformOffset;\r\n var translateValue;\r\n\r\n //DONT use the variable '_contentScrollSizeCache[scrollbarVars._w_h]' instead of '_viewportElement[0]['scroll' + scrollbarVars._Width_Height]'\r\n // because its a bit behind during the small delay when content size updates\r\n //(delay = mutationObserverContentLag, if its 0 then this var could be used)\r\n var maxScroll = (_viewportElementNative[_strScroll + scrollbarVars._Width_Height] - _viewportElementNative['client' + scrollbarVars._Width_Height]) * (_rtlScrollBehavior.n && isRTLisHorizontal ? -1 : 1); //* -1 if rtl scroll max is negative\r\n var getScrollRatio = function(base) {\r\n return isNaN(base / maxScroll) ? 0 : MATH.max(0, MATH.min(1, base / maxScroll));\r\n };\r\n var getHandleOffset = function(scrollRatio) {\r\n var offset = handleTrackDiff * scrollRatio;\r\n offset = isNaN(offset) ? 0 : offset;\r\n offset = (isRTLisHorizontal && !_rtlScrollBehavior.i) ? (trackLength - handleLength - offset) : offset;\r\n offset = MATH.max(0, offset);\r\n return offset;\r\n };\r\n var scrollRatio = getScrollRatio(nativeScroll);\r\n var unsnappedScrollRatio = getScrollRatio(currentScroll);\r\n var handleOffset = getHandleOffset(unsnappedScrollRatio);\r\n var snappedHandleOffset = getHandleOffset(scrollRatio);\r\n\r\n scrollbarVarsInfo._maxScroll = maxScroll;\r\n scrollbarVarsInfo._currentScroll = nativeScroll;\r\n scrollbarVarsInfo._currentScrollRatio = scrollRatio;\r\n\r\n if (_supportTransform) {\r\n transformOffset = isRTLisHorizontal ? -(trackLength - handleLength - handleOffset) : handleOffset; //in px\r\n //transformOffset = (transformOffset / trackLength * 100) * (trackLength / handleLength); //in %\r\n translateValue = isHorizontal ? strTranslateBrace + transformOffset + 'px, 0)' : strTranslateBrace + '0, ' + transformOffset + 'px)';\r\n\r\n handleCSS[strTransform] = translateValue;\r\n\r\n //apply or clear up transition\r\n if(_supportTransition)\r\n handleCSS[strTransition] = transition && MATH.abs(handleOffset - scrollbarVarsInfo._handleOffset) > 1 ? getCSSTransitionString(scrollbarVars._handle) + ', ' + (strTransform + _strSpace + transitionDuration + 'ms') : _strEmpty;\r\n }\r\n else\r\n handleCSS[scrollbarVars._left_top] = handleOffset;\r\n\r\n\r\n //only apply css if offset has changed and overflow exists.\r\n if (!nativeOverlayScrollbarsAreActive()) {\r\n scrollbarVars._handle.css(handleCSS);\r\n\r\n //clear up transition\r\n if(_supportTransform && _supportTransition && transition) {\r\n scrollbarVars._handle.one(_strTransitionEndEvent, function() {\r\n if(!_destroyed)\r\n scrollbarVars._handle.css(strTransition, _strEmpty);\r\n });\r\n }\r\n }\r\n\r\n scrollbarVarsInfo._handleOffset = handleOffset;\r\n scrollbarVarsInfo._snappedHandleOffset = snappedHandleOffset;\r\n scrollbarVarsInfo._trackLength = trackLength;\r\n }\r\n\r\n /**\r\n * Refreshes the interactivity of the given scrollbar element.\r\n * @param isTrack True if the track element is the target, false if the handle element is the target.\r\n * @param value True for interactivity false for no interactivity.\r\n */\r\n function refreshScrollbarsInteractive(isTrack, value) {\r\n var action = value ? 'removeClass' : 'addClass';\r\n var element1 = isTrack ? _scrollbarHorizontalTrackElement : _scrollbarHorizontalHandleElement;\r\n var element2 = isTrack ? _scrollbarVerticalTrackElement : _scrollbarVerticalHandleElement;\r\n var className = isTrack ? _classNameScrollbarTrackOff : _classNameScrollbarHandleOff;\r\n\r\n element1[action](className);\r\n element2[action](className);\r\n }\r\n\r\n /**\r\n * Returns a object which is used for fast access for specific variables.\r\n * @param isHorizontal True if the horizontal scrollbar vars shall be accessed, false if the vertical scrollbar vars shall be accessed.\r\n * @returns {{wh: string, WH: string, lt: string, _wh: string, _lt: string, t: *, h: *, c: {}, s: *}}\r\n */\r\n function getScrollbarVars(isHorizontal) {\r\n return {\r\n _width_height: isHorizontal ? _strWidth : _strHeight,\r\n _Width_Height: isHorizontal ? 'Width' : 'Height',\r\n _left_top: isHorizontal ? _strLeft : _strTop,\r\n _Left_Top: isHorizontal ? 'Left' : 'Top',\r\n _x_y: isHorizontal ? _strX : _strY,\r\n _X_Y: isHorizontal ? 'X' : 'Y',\r\n _w_h: isHorizontal ? 'w' : 'h',\r\n _l_t: isHorizontal ? 'l' : 't',\r\n _track: isHorizontal ? _scrollbarHorizontalTrackElement : _scrollbarVerticalTrackElement,\r\n _handle: isHorizontal ? _scrollbarHorizontalHandleElement : _scrollbarVerticalHandleElement,\r\n _scrollbar: isHorizontal ? _scrollbarHorizontalElement : _scrollbarVerticalElement,\r\n _info: isHorizontal ? _scrollHorizontalInfo : _scrollVerticalInfo\r\n };\r\n }\r\n\r\n\r\n //==== Scrollbar Corner ====//\r\n\r\n /**\r\n * Builds or destroys the scrollbar corner DOM element.\r\n * @param destroy Indicates whether the DOM shall be build or destroyed.\r\n */\r\n function setupScrollbarCornerDOM(destroy) {\r\n if(!destroy) {\r\n _scrollbarCornerElement = FRAMEWORK(generateDiv(_classNameScrollbarCorner));\r\n _hostElement.append(_scrollbarCornerElement);\r\n }\r\n else {\r\n remove(_scrollbarCornerElement);\r\n }\r\n }\r\n\r\n /**\r\n * Initializes all scrollbar corner interactivity events.\r\n */\r\n function setupScrollbarCornerEvents() {\r\n var insideIFrame = _windowElementNative.top !== _windowElementNative;\r\n var mouseDownPosition = { };\r\n var mouseDownSize = { };\r\n var mouseDownInvertedScale = { };\r\n\r\n _resizeOnMouseTouchDown = function(event) {\r\n if (onMouseTouchDownContinue(event)) {\r\n if (_mutationObserversConnected) {\r\n _resizeReconnectMutationObserver = true;\r\n disconnectMutationObservers();\r\n }\r\n\r\n mouseDownPosition = getCoordinates(event);\r\n\r\n mouseDownSize.w = _hostElementNative[LEXICON.oW] - (!_isBorderBox ? _paddingX : 0);\r\n mouseDownSize.h = _hostElementNative[LEXICON.oH] - (!_isBorderBox ? _paddingY : 0);\r\n mouseDownInvertedScale = getHostElementInvertedScale();\r\n\r\n _documentElement.on(_strSelectStartEvent, documentOnSelectStart)\r\n .on(_strMouseTouchMoveEvent, documentDragMove)\r\n .on(_strMouseTouchUpEvent, documentMouseTouchUp);\r\n\r\n addClass(_bodyElement, _classNameDragging);\r\n if (_scrollbarCornerElement.setCapture)\r\n _scrollbarCornerElement.setCapture();\r\n\r\n COMPATIBILITY.prvD(event);\r\n COMPATIBILITY.stpP(event);\r\n }\r\n };\r\n function documentDragMove(event) {\r\n if (onMouseTouchDownContinue(event)) {\r\n var pageOffset = getCoordinates(event);\r\n var hostElementCSS = { };\r\n if (_resizeHorizontal || _resizeBoth)\r\n hostElementCSS[_strWidth] = (mouseDownSize.w + (pageOffset.x - mouseDownPosition.x) * mouseDownInvertedScale.x);\r\n if (_resizeVertical || _resizeBoth)\r\n hostElementCSS[_strHeight] = (mouseDownSize.h + (pageOffset.y - mouseDownPosition.y) * mouseDownInvertedScale.y);\r\n _hostElement.css(hostElementCSS);\r\n COMPATIBILITY.stpP(event);\r\n }\r\n else {\r\n documentMouseTouchUp(event);\r\n }\r\n }\r\n function documentMouseTouchUp(event) {\r\n var eventIsTrusted = event !== undefined;\r\n\r\n _documentElement.off(_strSelectStartEvent, documentOnSelectStart)\r\n .off(_strMouseTouchMoveEvent, documentDragMove)\r\n .off(_strMouseTouchUpEvent, documentMouseTouchUp);\r\n\r\n removeClass(_bodyElement, _classNameDragging);\r\n if (_scrollbarCornerElement.releaseCapture)\r\n _scrollbarCornerElement.releaseCapture();\r\n\r\n if (eventIsTrusted) {\r\n if (_resizeReconnectMutationObserver)\r\n connectMutationObservers();\r\n _base.update(_strAuto);\r\n }\r\n _resizeReconnectMutationObserver = false;\r\n }\r\n function onMouseTouchDownContinue(event) {\r\n var originalEvent = event.originalEvent || event;\r\n var isTouchEvent = originalEvent.touches !== undefined;\r\n return _sleeping || _destroyed ? false : COMPATIBILITY.mBtn(event) === 1 || isTouchEvent;\r\n }\r\n function getCoordinates(event) {\r\n return _msieVersion && insideIFrame ? { x : event.screenX , y : event.screenY } : COMPATIBILITY.page(event);\r\n }\r\n }\r\n\r\n\r\n //==== Utils ====//\r\n\r\n /**\r\n * Calls the callback with the given name. The Context of this callback is always _base (this).\r\n * @param name The name of the target which shall be called.\r\n * @param args The args with which the callback shall be called.\r\n */\r\n function dispatchCallback(name, args) {\r\n if(_initialized) {\r\n var callback = _currentPreparedOptions.callbacks[name];\r\n var extensionOnName = name;\r\n var ext;\r\n\r\n if(extensionOnName.substr(0, 2) === 'on')\r\n extensionOnName = extensionOnName.substr(2, 1).toLowerCase() + extensionOnName.substr(3);\r\n\r\n if(type(callback) == TYPES.f)\r\n callback.call(_base, args);\r\n\r\n each(_extensions, function() {\r\n ext = this;\r\n if(type(ext.on) == TYPES.f)\r\n ext.on(extensionOnName, args);\r\n });\r\n }\r\n else if(!_destroyed)\r\n _callbacksInitQeueue.push({ n : name, a : args });\r\n }\r\n\r\n /**\r\n * Sets the \"top, right, bottom, left\" properties, with a given prefix, of the given css object.\r\n * @param targetCSSObject The css object to which the values shall be applied.\r\n * @param prefix The prefix of the \"top, right, bottom, left\" css properties. (example: 'padding-' is a valid prefix)\r\n * @param values A array of values which shall be applied to the \"top, right, bottom, left\" -properties. The array order is [top, right, bottom, left].\r\n * If this argument is undefined the value '' (empty string) will be applied to all properties.\r\n */\r\n function setTopRightBottomLeft(targetCSSObject, prefix, values) {\r\n if (values === undefined)\r\n values = [_strEmpty, _strEmpty, _strEmpty, _strEmpty];\r\n\r\n targetCSSObject[prefix + _strTop] = values[0];\r\n targetCSSObject[prefix + _strRight] = values[1];\r\n targetCSSObject[prefix + _strBottom] = values[2];\r\n targetCSSObject[prefix + _strLeft] = values[3];\r\n }\r\n\r\n /**\r\n * Returns the computed CSS transition string from the given element.\r\n * @param element The element from which the transition string shall be returned.\r\n * @returns {string} The CSS transition string from the given element.\r\n */\r\n function getCSSTransitionString(element) {\r\n var transitionStr = VENDORS._cssProperty('transition');\r\n var assembledValue = element.css(transitionStr);\r\n if(assembledValue)\r\n return assembledValue;\r\n var regExpString = '\\\\s*(' + '([^,(]+(\\\\(.+?\\\\))?)+' + ')[\\\\s,]*';\r\n var regExpMain = new RegExp(regExpString);\r\n var regExpValidate = new RegExp('^(' + regExpString + ')+$');\r\n var properties = 'property duration timing-function delay'.split(' ');\r\n var result = [ ];\r\n var strResult;\r\n var valueArray;\r\n var i = 0;\r\n var j;\r\n var splitCssStyleByComma = function(str) {\r\n strResult = [ ];\r\n if (!str.match(regExpValidate))\r\n return str;\r\n while (str.match(regExpMain)) {\r\n strResult.push(RegExp.$1);\r\n str = str.replace(regExpMain, _strEmpty);\r\n }\r\n\r\n return strResult;\r\n };\r\n for (; i < properties[LEXICON.l]; i++) {\r\n valueArray = splitCssStyleByComma(element.css(transitionStr + '-' + properties[i]));\r\n for (j = 0; j < valueArray[LEXICON.l]; j++)\r\n result[j] = (result[j] ? result[j] + _strSpace : _strEmpty) + valueArray[j];\r\n }\r\n return result.join(', ');\r\n }\r\n\r\n /**\r\n * Calculates the host-elements inverted scale. (invertedScale = 1 / scale)\r\n * @returns {{x: number, y: number}} The scale of the host-element.\r\n */\r\n function getHostElementInvertedScale() {\r\n var rect = _paddingElementNative.getBoundingClientRect();\r\n return {\r\n x : _supportTransform ? 1 / (MATH.round(rect.width) / _paddingElementNative[LEXICON.oW]) || 1 : 1,\r\n y : _supportTransform ? 1 / (MATH.round(rect.height) / _paddingElementNative[LEXICON.oH]) || 1 : 1\r\n };\r\n }\r\n\r\n /**\r\n * Checks whether the given object is a HTMLElement.\r\n * @param o The object which shall be checked.\r\n * @returns {boolean} True the given object is a HTMLElement, false otherwise.\r\n */\r\n function isHTMLElement(o) {\r\n var strOwnerDocument = 'ownerDocument';\r\n var strHTMLElement = 'HTMLElement';\r\n var wnd = o && o[strOwnerDocument] ? (o[strOwnerDocument].parentWindow || window) : window;\r\n return (\r\n typeof wnd[strHTMLElement] == TYPES.o ? o instanceof wnd[strHTMLElement] : //DOM2\r\n o && typeof o == TYPES.o && o !== null && o.nodeType === 1 && typeof o.nodeName == TYPES.s\r\n );\r\n }\r\n\r\n /**\r\n * Compares 2 arrays and returns the differences between them as a array.\r\n * @param a1 The first array which shall be compared.\r\n * @param a2 The second array which shall be compared.\r\n * @returns {Array} The differences between the two arrays.\r\n */\r\n function getArrayDifferences(a1, a2) {\r\n var a = [ ];\r\n var diff = [ ];\r\n var i;\r\n var k;\r\n for (i = 0; i < a1.length; i++)\r\n a[a1[i]] = true;\r\n for (i = 0; i < a2.length; i++) {\r\n if (a[a2[i]])\r\n delete a[a2[i]];\r\n else\r\n a[a2[i]] = true;\r\n }\r\n for (k in a)\r\n diff.push(k);\r\n return diff;\r\n }\r\n\r\n /**\r\n * Returns Zero or the number to which the value can be parsed.\r\n * @param value The value which shall be parsed.\r\n * @param toFloat Indicates whether the number shall be parsed to a float.\r\n */\r\n function parseToZeroOrNumber(value, toFloat) {\r\n var num = toFloat ? parseFloat(value) : parseInt(value, 10);\r\n return isNaN(num) ? 0 : num;\r\n }\r\n\r\n /**\r\n * Gets several information of the textarea and returns them as a object or undefined if the browser doesn't support it.\r\n * @returns {{cursorRow: Number, cursorCol, rows: Number, cols: number, wRow: number, pos: number, max : number}} or undefined if not supported.\r\n */\r\n function getTextareaInfo() {\r\n //read needed values\r\n var textareaCursorPosition = _targetElementNative.selectionStart;\r\n if (textareaCursorPosition === undefined)\r\n return;\r\n\r\n var textareaValue = _targetElement.val();\r\n var textareaLength = textareaValue[LEXICON.l];\r\n var textareaRowSplit = textareaValue.split('\\n');\r\n var textareaLastRow = textareaRowSplit[LEXICON.l];\r\n var textareaCurrentCursorRowSplit = textareaValue.substr(0, textareaCursorPosition).split('\\n');\r\n var widestRow = 0;\r\n var textareaLastCol = 0;\r\n var cursorRow = textareaCurrentCursorRowSplit[LEXICON.l];\r\n var cursorCol = textareaCurrentCursorRowSplit[textareaCurrentCursorRowSplit[LEXICON.l] - 1][LEXICON.l];\r\n var rowCols;\r\n var i;\r\n\r\n //get widest Row and the last column of the textarea\r\n for (i = 0; i < textareaRowSplit[LEXICON.l]; i++) {\r\n rowCols = textareaRowSplit[i][LEXICON.l];\r\n if (rowCols > textareaLastCol) {\r\n widestRow = i + 1;\r\n textareaLastCol = rowCols;\r\n }\r\n }\r\n\r\n return {\r\n _cursorRow: cursorRow, //cursorRow\r\n _cursorColumn: cursorCol, //cursorCol\r\n _rows: textareaLastRow, //rows\r\n _columns: textareaLastCol, //cols\r\n _widestRow: widestRow, //wRow\r\n _cursorPosition: textareaCursorPosition, //pos\r\n _cursorMax: textareaLength //max\r\n };\r\n }\r\n\r\n /**\r\n * Determines whether native overlay scrollbars are active.\r\n * @returns {boolean} True if native overlay scrollbars are active, false otherwise.\r\n */\r\n function nativeOverlayScrollbarsAreActive() {\r\n return (_ignoreOverlayScrollbarHidingCache && (_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y));\r\n }\r\n\r\n /**\r\n * Gets the element which is used to measure the content size.\r\n * @returns {*} TextareaCover if target element is textarea else the ContentElement.\r\n */\r\n function getContentMeasureElement() {\r\n return _isTextarea ? _textareaCoverElement[0] : _contentElementNative;\r\n }\r\n\r\n /**\r\n * Generates a string which represents a HTML div with the given classes or attributes.\r\n * @param classesOrAttrs The class of the div as string or a object which represents the attributes of the div. (The class attribute can also be written as \"className\".)\r\n * @param content The content of the div as string.\r\n * @returns {string} The concated string which represents a HTML div and its content.\r\n */\r\n function generateDiv(classesOrAttrs, content) {\r\n return '<div ' + (classesOrAttrs ? type(classesOrAttrs) == TYPES.s ?\r\n 'class=\"' + classesOrAttrs + '\"' :\r\n (function() {\r\n var key;\r\n var attrs = '';\r\n if(FRAMEWORK.isPlainObject(classesOrAttrs)) {\r\n for (key in classesOrAttrs)\r\n attrs += (key === 'className' ? 'class' : key) + '=\"' + classesOrAttrs[key] + '\" ';\r\n }\r\n return attrs;\r\n })() :\r\n _strEmpty) +\r\n '>' +\r\n (content ? content : _strEmpty) +\r\n '</div>';\r\n }\r\n\r\n /**\r\n * Gets the value of the given property from the given object.\r\n * @param obj The object from which the property value shall be got.\r\n * @param path The property of which the value shall be got.\r\n * @returns {*} Returns the value of the searched property or undefined of the property wasn't found.\r\n */\r\n function getObjectPropVal(obj, path) {\r\n var splits = path.split(_strDot);\r\n var i = 0;\r\n var val;\r\n for(; i < splits.length; i++) {\r\n if(!obj[LEXICON.hOP](splits[i]))\r\n return;\r\n val = obj[splits[i]];\r\n if(i < splits.length && type(val) == TYPES.o)\r\n obj = val;\r\n }\r\n return val;\r\n }\r\n\r\n /**\r\n * Sets the value of the given property from the given object.\r\n * @param obj The object from which the property value shall be set.\r\n * @param path The property of which the value shall be set.\r\n * @param val The value of the property which shall be set.\r\n */\r\n function setObjectPropVal(obj, path, val) {\r\n var splits = path.split(_strDot);\r\n var splitsLength = splits.length;\r\n var i = 0;\r\n var extendObj = { };\r\n var extendObjRoot = extendObj;\r\n for(; i < splitsLength; i++)\r\n extendObj = extendObj[splits[i]] = i + 1 < splitsLength ? { } : val;\r\n FRAMEWORK.extend(obj, extendObjRoot, true);\r\n }\r\n\r\n\r\n //==== Utils Cache ====//\r\n\r\n /**\r\n * Compares two values or objects and returns true if they aren't equal.\r\n * @param current The first value or object which shall be compared.\r\n * @param cache The second value or object which shall be compared.\r\n * @param force If true the returned value is always true.\r\n * @returns {boolean} True if both values or objects aren't equal or force is true, false otherwise.\r\n */\r\n function checkCache(current, cache, force) {\r\n if (force)\r\n return force;\r\n if(type(current) == TYPES.o && type(cache) == TYPES.o) {\r\n for (var prop in current) {\r\n if(prop !== 'c') {\r\n if (current[LEXICON.hOP](prop) && cache[LEXICON.hOP](prop)) {\r\n if(checkCache(current[prop], cache[prop]))\r\n return true;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n return current !== cache;\r\n }\r\n return false;\r\n }\r\n\r\n\r\n //==== Shortcuts ====//\r\n\r\n /**\r\n * jQuery extend method shortcut with a appended \"true\" as first argument.\r\n */\r\n function extendDeep() {\r\n return FRAMEWORK.extend.apply(this, [ true ].concat([].slice.call(arguments)));\r\n }\r\n\r\n /**\r\n * jQuery addClass method shortcut.\r\n */\r\n function addClass(el, classes) {\r\n return _frameworkProto.addClass.call(el, classes);\r\n }\r\n\r\n /**\r\n * jQuery removeClass method shortcut.\r\n */\r\n function removeClass(el, classes) {\r\n return _frameworkProto.removeClass.call(el, classes);\r\n }\r\n\r\n /**\r\n * jQuery remove method shortcut.\r\n */\r\n function remove(el) {\r\n return _frameworkProto.remove.call(el);\r\n }\r\n\r\n /**\r\n * Finds the first child element with the given selector of the given element.\r\n * @param el The root element from which the selector shall be valid.\r\n * @param selector The selector of the searched element.\r\n * @returns {*} The first element which is a child of the given element and matches the givens selector.\r\n */\r\n function findFirst(el, selector) {\r\n return _frameworkProto.find.call(el, selector).eq(0);\r\n }\r\n\r\n\r\n //==== API ====//\r\n\r\n /**\r\n * Puts the instance to sleep. It wont respond to any changes in the DOM and won't update. Scrollbar Interactivity is also disabled as well as the resize handle.\r\n * This behavior can be reset by calling the update method.\r\n */\r\n _base.sleep = function () {\r\n _sleeping = true;\r\n };\r\n\r\n /**\r\n * Updates the plugin and DOM to the current options.\r\n * This method should only be called if a update is 100% required.\r\n * @param force True if every property shall be updated and the cache shall be ignored.\r\n * !INTERNAL USAGE! : force can be a string \"auto\", \"sync\" or \"zoom\" too\r\n * if \"auto\" then before a real update the content size and host element attributes gets checked, and if they changed only then the update method will be called.\r\n * if \"sync\" then the async update process (MutationObserver or UpdateLoop) gets synchronized and a corresponding update takes place if one was needed due to pending changes.\r\n * if \"zoom\" then a update takes place where it's assumed that content and host size changed\r\n * @returns {boolean|undefined} \r\n * If force is \"sync\" then a boolean is returned which indicates whether a update was needed due to pending changes.\r\n * If force is \"auto\" then a boolean is returned whether a update was needed due to attribute or size changes.\r\n * undefined otherwise.\r\n */\r\n _base.update = function (force) {\r\n var attrsChanged;\r\n var contentSizeC;\r\n var isString = type(force) == TYPES.s;\r\n var imgElementSelector = 'img';\r\n var imgElementLoadEvent = 'load';\r\n var doUpdateAuto;\r\n var mutHost;\r\n var mutContent;\r\n if(isString) {\r\n if (force === _strAuto) {\r\n attrsChanged = meaningfulAttrsChanged();\r\n contentSizeC = updateAutoContentSizeChanged();\r\n doUpdateAuto = attrsChanged || contentSizeC;\r\n if (doUpdateAuto) {\r\n update({\r\n _contentSizeChanged : contentSizeC,\r\n _changedOptions : _initialized ? undefined : _currentPreparedOptions\r\n });\r\n }\r\n }\r\n else if (force === _strSync) {\r\n if(_mutationObserversConnected) {\r\n mutHost = _mutationObserverHostCallback(_mutationObserverHost.takeRecords());\r\n mutContent = _mutationObserverContentCallback(_mutationObserverContent.takeRecords());\r\n }\r\n else {\r\n mutHost = _base.update(_strAuto);\r\n }\r\n }\r\n else if (force === 'zoom') {\r\n update({\r\n _hostSizeChanged : true,\r\n _contentSizeChanged : true\r\n });\r\n }\r\n }\r\n else {\r\n force = _sleeping || force;\r\n _sleeping = false;\r\n if(!_base.update(_strSync) || force)\r\n update({ _force : force });\r\n }\r\n if(!_isTextarea) {\r\n _contentElement.find(imgElementSelector).each(function(i, el) {\r\n var index = COMPATIBILITY.inA(el, _imgs);\r\n if (index === -1)\r\n FRAMEWORK(el).off(imgElementLoadEvent, imgOnLoad).on(imgElementLoadEvent, imgOnLoad);\r\n });\r\n }\r\n return doUpdateAuto || mutHost || mutContent;\r\n };\r\n\r\n /**\r\n Gets or sets the current options. The update method will be called automatically if new options were set.\r\n * @param newOptions If new options are given, then the new options will be set, if new options aren't given (undefined or a not a plain object) then the current options will be returned.\r\n * @param value If new options is a property path string, then this value will be used to set the option to which the property path string leads.\r\n * @returns {*}\r\n */\r\n _base.options = function (newOptions, value) {\r\n var option = { };\r\n var changedOps;\r\n \r\n //return current options if newOptions are undefined or empty\r\n if (FRAMEWORK.isEmptyObject(newOptions) || !FRAMEWORK.isPlainObject(newOptions)) {\r\n if (type(newOptions) == TYPES.s) {\r\n if (arguments.length > 1) {\r\n setObjectPropVal(option, newOptions, value);\r\n changedOps = setOptions(option);\r\n }\r\n else\r\n return getObjectPropVal(_currentOptions, newOptions);\r\n }\r\n else\r\n return _currentOptions;\r\n }\r\n else {\r\n changedOps = setOptions(newOptions);\r\n }\r\n \r\n if(!FRAMEWORK.isEmptyObject(changedOps)) {\r\n update({ _changedOptions : changedOps });\r\n } \r\n };\r\n\r\n /**\r\n * Restore the DOM, disconnects all observers, remove all resize observers and put the instance to sleep.\r\n */\r\n _base.destroy = function () {\r\n //remove this instance from auto update loop\r\n autoUpdateLoop.remove(_base);\r\n\r\n //disconnect all mutation observers\r\n disconnectMutationObservers();\r\n\r\n //remove all resize observers\r\n setupResizeObserver(_sizeObserverElement);\r\n setupResizeObserver(_sizeAutoObserverElement);\r\n\r\n //remove all extensions\r\n for(var extName in _extensions)\r\n _base.removeExt(extName);\r\n\r\n //remove all events from host element\r\n setupHostMouseTouchEvents(true);\r\n\r\n //remove all events from structure\r\n setupStructureEvents(true);\r\n\r\n //remove all helper / detection elements\r\n if (_contentGlueElement)\r\n remove(_contentGlueElement);\r\n if (_contentArrangeElement)\r\n remove(_contentArrangeElement);\r\n if (_sizeAutoObserverAdded)\r\n remove(_sizeAutoObserverElement);\r\n\r\n //remove all generated DOM\r\n setupScrollbarsDOM(true);\r\n setupScrollbarCornerDOM(true);\r\n setupStructureDOM(true);\r\n\r\n //remove all generated image load events\r\n for(var i = 0; i < _imgs[LEXICON.l]; i++)\r\n FRAMEWORK(_imgs[i]).off('load', imgOnLoad);\r\n _imgs = undefined;\r\n\r\n _destroyed = true;\r\n _sleeping = true;\r\n\r\n //remove this instance from the instances list\r\n INSTANCES(pluginTargetElement, 0);\r\n dispatchCallback(\"onDestroyed\");\r\n\r\n //remove all properties and methods\r\n //for (var property in _base)\r\n // delete _base[property];\r\n //_base = undefined;\r\n };\r\n\r\n /**\r\n * Scrolls to a given position or element.\r\n * @param coordinates\r\n * 1. Can be \"coordinates\" which looks like:\r\n * { x : ?, y : ? } OR Object with x and y properties\r\n * { left : ?, top : ? } OR Object with left and top properties\r\n * { l : ?, t : ? } OR Object with l and t properties\r\n * [ ?, ? ] OR Array where the first two element are the coordinates (first is x, second is y)\r\n * ? A single value which stays for both axis\r\n * A value can be a number, a string or a calculation.\r\n *\r\n * Operators:\r\n * [NONE] The current scroll will be overwritten by the value.\r\n * '+=' The value will be added to the current scroll offset\r\n * '-=' The value will be subtracted from the current scroll offset\r\n * '*=' The current scroll wil be multiplicated by the value.\r\n * '/=' The current scroll wil be divided by the value.\r\n *\r\n * Units:\r\n * [NONE] The value is the final scroll amount. final = (value * 1)\r\n * 'px' Same as none\r\n * '%' The value is dependent on the current scroll value. final = ((currentScrollValue / 100) * value)\r\n * 'vw' The value is multiplicated by the viewport width. final = (value * viewportWidth)\r\n * 'vh' The value is multiplicated by the viewport height. final = (value * viewportHeight)\r\n *\r\n * example final values:\r\n * 200, '200px', '50%', '1vw', '1vh', '+=200', '/=1vw', '*=2px', '-=5vh', '+=33%', '+= 50% - 2px', '-= 1vw - 50%'\r\n *\r\n * 2. Can be a HTML or jQuery element:\r\n * The final scroll offset is the offset (without margin) of the given HTML / jQuery element.\r\n *\r\n * 3. Can be a object with a HTML or jQuery element with additional settings:\r\n * {\r\n * el : [HTMLElement, jQuery element], MUST be specified, else this object isn't valid.\r\n * scroll : [string, array, object], Default value is 'always'.\r\n * block : [string, array, object], Default value is 'begin'.\r\n * margin : [number, boolean, array, object] Default value is false.\r\n * }\r\n *\r\n * Possible scroll settings are:\r\n * 'always' Scrolls always.\r\n * 'ifneeded' Scrolls only if the element isnt fully in view.\r\n * 'never' Scrolls never.\r\n *\r\n * Possible block settings are:\r\n * 'begin' Both axis shall be docked to the \"begin\" edge. - The element will be docked to the top and left edge of the viewport.\r\n * 'end' Both axis shall be docked to the \"end\" edge. - The element will be docked to the bottom and right edge of the viewport. (If direction is RTL to the bottom and left edge.)\r\n * 'center' Both axis shall be docked to \"center\". - The element will be centered in the viewport.\r\n * 'nearest' The element will be docked to the nearest edge(s).\r\n *\r\n * Possible margin settings are: -- The actual margin of the element wont be affect, this option affects only the final scroll offset.\r\n * [BOOLEAN] If true the css margin of the element will be used, if false no margin will be used.\r\n * [NUMBER] The margin will be used for all edges.\r\n *\r\n * @param duration The duration of the scroll animation, OR a jQuery animation configuration object.\r\n * @param easing The animation easing.\r\n * @param complete The animation complete callback.\r\n * @returns {{\r\n * position: {x: number, y: number},\r\n * ratio: {x: number, y: number},\r\n * max: {x: number, y: number},\r\n * handleOffset: {x: number, y: number},\r\n * handleLength: {x: number, y: number},\r\n * handleLengthRatio: {x: number, y: number}, t\r\n * rackLength: {x: number, y: number},\r\n * isRTL: boolean,\r\n * isRTLNormalized: boolean\r\n * }}\r\n */\r\n _base.scroll = function (coordinates, duration, easing, complete) {\r\n if (arguments.length === 0 || coordinates === undefined) {\r\n var infoX = _scrollHorizontalInfo;\r\n var infoY = _scrollVerticalInfo;\r\n var normalizeInvert = _normalizeRTLCache && _isRTL && _rtlScrollBehavior.i;\r\n var normalizeNegate = _normalizeRTLCache && _isRTL && _rtlScrollBehavior.n;\r\n var scrollX = infoX._currentScroll;\r\n var scrollXRatio = infoX._currentScrollRatio;\r\n var maxScrollX = infoX._maxScroll;\r\n scrollXRatio = normalizeInvert ? 1 - scrollXRatio : scrollXRatio;\r\n scrollX = normalizeInvert ? maxScrollX - scrollX : scrollX;\r\n scrollX *= normalizeNegate ? -1 : 1;\r\n maxScrollX *= normalizeNegate ? -1 : 1;\r\n\r\n return {\r\n position : {\r\n x : scrollX,\r\n y : infoY._currentScroll\r\n },\r\n ratio : {\r\n x : scrollXRatio,\r\n y : infoY._currentScrollRatio\r\n },\r\n max : {\r\n x : maxScrollX,\r\n y : infoY._maxScroll\r\n },\r\n handleOffset : {\r\n x : infoX._handleOffset,\r\n y : infoY._handleOffset\r\n },\r\n handleLength : {\r\n x : infoX._handleLength,\r\n y : infoY._handleLength\r\n },\r\n handleLengthRatio : {\r\n x : infoX._handleLengthRatio,\r\n y : infoY._handleLengthRatio\r\n },\r\n trackLength : {\r\n x : infoX._trackLength,\r\n y : infoY._trackLength\r\n },\r\n snappedHandleOffset : {\r\n x : infoX._snappedHandleOffset,\r\n y : infoY._snappedHandleOffset\r\n },\r\n isRTL: _isRTL,\r\n isRTLNormalized: _normalizeRTLCache\r\n };\r\n }\r\n \r\n _base.update(_strSync);\r\n \r\n var normalizeRTL = _normalizeRTLCache;\r\n var coordinatesXAxisProps = [_strX, _strLeft, 'l'];\r\n var coordinatesYAxisProps = [_strY, _strTop, 't'];\r\n var coordinatesOperators = ['+=', '-=', '*=', '/='];\r\n var durationIsObject = type(duration) == TYPES.o;\r\n var completeCallback = durationIsObject ? duration.complete : complete;\r\n var i;\r\n var finalScroll = { };\r\n var specialEasing = {};\r\n var doScrollLeft;\r\n var doScrollTop;\r\n var animationOptions;\r\n var strEnd = 'end';\r\n var strBegin = 'begin';\r\n var strCenter = 'center';\r\n var strNearest = 'nearest';\r\n var strAlways = 'always';\r\n var strNever = 'never';\r\n var strIfNeeded = 'ifneeded';\r\n var strLength = LEXICON.l;\r\n var settingsAxis;\r\n var settingsScroll;\r\n var settingsBlock;\r\n var settingsMargin;\r\n var finalElement;\r\n var elementObjSettingsAxisValues = [_strX, _strY, 'xy', 'yx'];\r\n var elementObjSettingsBlockValues = [strBegin, strEnd, strCenter, strNearest];\r\n var elementObjSettingsScrollValues = [strAlways, strNever, strIfNeeded];\r\n var coordinatesIsElementObj = coordinates[LEXICON.hOP]('el');\r\n var possibleElement = coordinatesIsElementObj ? coordinates.el : coordinates;\r\n var possibleElementIsJQuery = possibleElement instanceof FRAMEWORK || JQUERY ? possibleElement instanceof JQUERY : false;\r\n var possibleElementIsHTMLElement = possibleElementIsJQuery ? false : isHTMLElement(possibleElement);\r\n var proxyCompleteCallback = type(completeCallback) != TYPES.f ? undefined : function() {\r\n if(doScrollLeft)\r\n refreshScrollbarHandleOffset(true);\r\n if(doScrollTop)\r\n refreshScrollbarHandleOffset(false);\r\n completeCallback();\r\n };\r\n var checkSettingsStringValue = function (currValue, allowedValues) {\r\n for (i = 0; i < allowedValues[strLength]; i++) {\r\n if (currValue === allowedValues[i])\r\n return true;\r\n }\r\n return false;\r\n };\r\n var getRawScroll = function (isX, coordinates) {\r\n var coordinateProps = isX ? coordinatesXAxisProps : coordinatesYAxisProps;\r\n coordinates = type(coordinates) == TYPES.s || type(coordinates) == TYPES.n ? [ coordinates, coordinates ] : coordinates;\r\n\r\n if (type(coordinates) == TYPES.a)\r\n return isX ? coordinates[0] : coordinates[1];\r\n else if (type(coordinates) == TYPES.o) {\r\n //decides RTL normalization \"hack\" with .n\r\n //normalizeRTL = type(coordinates.n) == TYPES.b ? coordinates.n : normalizeRTL; \r\n for (i = 0; i < coordinateProps[strLength]; i++)\r\n if (coordinateProps[i] in coordinates)\r\n return coordinates[coordinateProps[i]];\r\n }\r\n };\r\n var getFinalScroll = function (isX, rawScroll) {\r\n var isString = type(rawScroll) == TYPES.s;\r\n var operator;\r\n var amount;\r\n var scrollInfo = isX ? _scrollHorizontalInfo : _scrollVerticalInfo;\r\n var currScroll = scrollInfo._currentScroll;\r\n var maxScroll = scrollInfo._maxScroll;\r\n var mult = ' * ';\r\n var finalValue;\r\n var isRTLisX = _isRTL && isX;\r\n var normalizeShortcuts = isRTLisX && _rtlScrollBehavior.n && !normalizeRTL;\r\n var strReplace = 'replace';\r\n var evalFunc = eval;\r\n var possibleOperator;\r\n if (isString) {\r\n //check operator\r\n if (rawScroll[strLength] > 2) {\r\n possibleOperator = rawScroll.substr(0, 2);\r\n if(inArray(possibleOperator, coordinatesOperators) > -1)\r\n operator = possibleOperator;\r\n }\r\n\r\n //calculate units and shortcuts\r\n rawScroll = operator ? rawScroll.substr(2) : rawScroll;\r\n rawScroll = rawScroll\r\n [strReplace](/min/g, 0) //'min' = 0%\r\n [strReplace](/</g, 0) //'<' = 0%\r\n [strReplace](/max/g, (normalizeShortcuts ? '-' : _strEmpty) + _strHundredPercent) //'max' = 100%\r\n [strReplace](/>/g, (normalizeShortcuts ? '-' : _strEmpty) + _strHundredPercent) //'>' = 100%\r\n [strReplace](/px/g, _strEmpty)\r\n [strReplace](/%/g, mult + (maxScroll * (isRTLisX && _rtlScrollBehavior.n ? -1 : 1) / 100.0))\r\n [strReplace](/vw/g, mult + _viewportSize.w)\r\n [strReplace](/vh/g, mult + _viewportSize.h);\r\n amount = parseToZeroOrNumber(isNaN(rawScroll) ? parseToZeroOrNumber(evalFunc(rawScroll), true).toFixed() : rawScroll);\r\n }\r\n else {\r\n amount = rawScroll;\r\n }\r\n\r\n if (amount !== undefined && !isNaN(amount) && type(amount) == TYPES.n) {\r\n var normalizeIsRTLisX = normalizeRTL && isRTLisX;\r\n var operatorCurrScroll = currScroll * (normalizeIsRTLisX && _rtlScrollBehavior.n ? -1 : 1);\r\n var invert = normalizeIsRTLisX && _rtlScrollBehavior.i;\r\n var negate = normalizeIsRTLisX && _rtlScrollBehavior.n;\r\n operatorCurrScroll = invert ? (maxScroll - operatorCurrScroll) : operatorCurrScroll;\r\n switch (operator) {\r\n case '+=':\r\n finalValue = operatorCurrScroll + amount;\r\n break;\r\n case '-=':\r\n finalValue = operatorCurrScroll - amount;\r\n break;\r\n case '*=':\r\n finalValue = operatorCurrScroll * amount;\r\n break;\r\n case '/=':\r\n finalValue = operatorCurrScroll / amount;\r\n break;\r\n default:\r\n finalValue = amount;\r\n break;\r\n }\r\n finalValue = invert ? maxScroll - finalValue : finalValue;\r\n finalValue *= negate ? -1 : 1;\r\n finalValue = isRTLisX && _rtlScrollBehavior.n ? MATH.min(0, MATH.max(maxScroll, finalValue)) : MATH.max(0, MATH.min(maxScroll, finalValue));\r\n }\r\n return finalValue === currScroll ? undefined : finalValue;\r\n };\r\n var getPerAxisValue = function (value, valueInternalType, defaultValue, allowedValues) {\r\n var resultDefault = [ defaultValue, defaultValue ];\r\n var valueType = type(value);\r\n var valueArrLength;\r\n var valueArrItem;\r\n\r\n //value can be [ string, or array of two strings ]\r\n if (valueType == valueInternalType) {\r\n value = [value, value];\r\n }\r\n else if (valueType == TYPES.a) {\r\n valueArrLength = value[strLength];\r\n if (valueArrLength > 2 || valueArrLength < 1)\r\n value = resultDefault;\r\n else {\r\n if (valueArrLength === 1)\r\n value[1] = defaultValue;\r\n for (i = 0; i < valueArrLength; i++) {\r\n valueArrItem = value[i];\r\n if (type(valueArrItem) != valueInternalType || !checkSettingsStringValue(valueArrItem, allowedValues)) {\r\n value = resultDefault;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n else if (valueType == TYPES.o)\r\n value = [ value[_strX]|| defaultValue, value[_strY] || defaultValue];\r\n else\r\n value = resultDefault;\r\n return { x : value[0], y : value[1] };\r\n };\r\n var generateMargin = function (marginTopRightBottomLeftArray) {\r\n var result = [ ];\r\n var currValue;\r\n var currValueType;\r\n var valueDirections = [ _strTop, _strRight, _strBottom, _strLeft ];\r\n for(i = 0; i < marginTopRightBottomLeftArray[strLength]; i++) {\r\n if(i === valueDirections[strLength])\r\n break;\r\n currValue = marginTopRightBottomLeftArray[i];\r\n currValueType = type(currValue);\r\n if(currValueType == TYPES.b)\r\n result.push(currValue ? parseToZeroOrNumber(finalElement.css(_strMarginMinus + valueDirections[i])) : 0);\r\n else\r\n result.push(currValueType == TYPES.n ? currValue : 0);\r\n }\r\n return result;\r\n };\r\n\r\n if (possibleElementIsJQuery || possibleElementIsHTMLElement) {\r\n //get settings\r\n var margin = coordinatesIsElementObj ? coordinates.margin : 0;\r\n var axis = coordinatesIsElementObj ? coordinates.axis : 0;\r\n var scroll = coordinatesIsElementObj ? coordinates.scroll : 0;\r\n var block = coordinatesIsElementObj ? coordinates.block : 0;\r\n var marginDefault = [ 0, 0, 0, 0 ];\r\n var marginType = type(margin);\r\n var marginLength;\r\n finalElement = possibleElementIsJQuery ? possibleElement : FRAMEWORK(possibleElement);\r\n if (finalElement[strLength] === 0)\r\n return;\r\n\r\n //margin can be [ boolean, number, array of 2, array of 4, object ]\r\n if (marginType == TYPES.n || marginType == TYPES.b)\r\n margin = generateMargin([margin, margin, margin, margin]);\r\n else if (marginType == TYPES.a) {\r\n marginLength = margin[strLength];\r\n if(marginLength === 2)\r\n margin = generateMargin([margin[0], margin[1], margin[0], margin[1]]);\r\n else if(marginLength >= 4)\r\n margin = generateMargin(margin);\r\n else\r\n margin = marginDefault;\r\n }\r\n else if (marginType == TYPES.o)\r\n margin = generateMargin([margin[_strTop], margin[_strRight], margin[_strBottom], margin[_strLeft]]);\r\n else\r\n margin = marginDefault;\r\n\r\n //block = type(block) === TYPES.b ? block ? [ strNearest, strBegin ] : [ strNearest, strEnd ] : block;\r\n settingsAxis = checkSettingsStringValue(axis, elementObjSettingsAxisValues) ? axis : 'xy';\r\n settingsScroll = getPerAxisValue(scroll, TYPES.s, strAlways, elementObjSettingsScrollValues);\r\n settingsBlock = getPerAxisValue(block, TYPES.s, strBegin, elementObjSettingsBlockValues);\r\n settingsMargin = margin;\r\n\r\n var viewportScroll = {\r\n l: _scrollHorizontalInfo._currentScroll,\r\n t: _scrollVerticalInfo._currentScroll\r\n };\r\n // use padding element instead of viewport element because padding element has never padding, margin or position applied.\r\n var viewportOffset = _paddingElement.offset();\r\n\r\n //get coordinates\r\n var elementOffset = finalElement.offset();\r\n var doNotScroll = {\r\n x : settingsScroll.x == strNever || settingsAxis == _strY,\r\n y : settingsScroll.y == strNever || settingsAxis == _strX\r\n };\r\n elementOffset[_strTop] -= settingsMargin[0];\r\n elementOffset[_strLeft] -= settingsMargin[3];\r\n var elementScrollCoordinates = {\r\n x: MATH.round(elementOffset[_strLeft] - viewportOffset[_strLeft] + viewportScroll.l),\r\n y: MATH.round(elementOffset[_strTop] - viewportOffset[_strTop] + viewportScroll.t)\r\n };\r\n if (_isRTL) {\r\n if (!_rtlScrollBehavior.n && !_rtlScrollBehavior.i)\r\n elementScrollCoordinates.x = MATH.round(viewportOffset[_strLeft] - elementOffset[_strLeft] + viewportScroll.l);\r\n if (_rtlScrollBehavior.n && normalizeRTL)\r\n elementScrollCoordinates.x *= -1;\r\n if (_rtlScrollBehavior.i && normalizeRTL)\r\n elementScrollCoordinates.x = MATH.round(viewportOffset[_strLeft] - elementOffset[_strLeft] + (_scrollHorizontalInfo._maxScroll - viewportScroll.l));\r\n }\r\n\r\n //measuring is required\r\n if (settingsBlock.x != strBegin || settingsBlock.y != strBegin || settingsScroll.x == strIfNeeded || settingsScroll.y == strIfNeeded || _isRTL) {\r\n var measuringElm = finalElement[0];\r\n var rawElementSize = _supportTransform ? measuringElm.getBoundingClientRect() : {\r\n width : measuringElm[LEXICON.oW],\r\n height : measuringElm[LEXICON.oH]\r\n };\r\n var elementSize = {\r\n w: rawElementSize[_strWidth] + settingsMargin[3] + settingsMargin[1],\r\n h: rawElementSize[_strHeight] + settingsMargin[0] + settingsMargin[2]\r\n };\r\n var finalizeBlock = function(isX) {\r\n var vars = getScrollbarVars(isX);\r\n var wh = vars._w_h;\r\n var lt = vars._left_top;\r\n var xy = vars._x_y;\r\n var blockIsEnd = settingsBlock[xy] == (isX ? _isRTL ? strBegin : strEnd : strEnd);\r\n var blockIsCenter = settingsBlock[xy] == strCenter;\r\n var blockIsNearest = settingsBlock[xy] == strNearest;\r\n var scrollNever = settingsScroll[xy] == strNever;\r\n var scrollIfNeeded = settingsScroll[xy] == strIfNeeded;\r\n var vpSize = _viewportSize[wh];\r\n var vpOffset = viewportOffset[lt];\r\n var elSize = elementSize[wh];\r\n var elOffset = elementOffset[lt];\r\n var divide = blockIsCenter ? 2 : 1;\r\n var elementCenterOffset = elOffset + (elSize / 2);\r\n var viewportCenterOffset = vpOffset + (vpSize / 2);\r\n var isInView =\r\n elSize <= vpSize\r\n && elOffset >= vpOffset\r\n && elOffset + elSize <= vpOffset + vpSize;\r\n\r\n if(scrollNever)\r\n doNotScroll[xy] = true;\r\n else if(!doNotScroll[xy]) {\r\n if (blockIsNearest || scrollIfNeeded) {\r\n doNotScroll[xy] = scrollIfNeeded ? isInView : false;\r\n blockIsEnd = elSize < vpSize ? elementCenterOffset > viewportCenterOffset : elementCenterOffset < viewportCenterOffset;\r\n }\r\n elementScrollCoordinates[xy] -= blockIsEnd || blockIsCenter ? ((vpSize / divide) - (elSize / divide)) * (isX && _isRTL && normalizeRTL ? -1 : 1) : 0;\r\n }\r\n };\r\n finalizeBlock(true);\r\n finalizeBlock(false);\r\n }\r\n\r\n if (doNotScroll.y)\r\n delete elementScrollCoordinates.y;\r\n if (doNotScroll.x)\r\n delete elementScrollCoordinates.x;\r\n\r\n coordinates = elementScrollCoordinates;\r\n }\r\n\r\n finalScroll[_strScrollLeft] = getFinalScroll(true, getRawScroll(true, coordinates));\r\n finalScroll[_strScrollTop] = getFinalScroll(false, getRawScroll(false, coordinates));\r\n doScrollLeft = finalScroll[_strScrollLeft] !== undefined;\r\n doScrollTop = finalScroll[_strScrollTop] !== undefined;\r\n\r\n if ((doScrollLeft || doScrollTop) && (duration > 0 || durationIsObject)) {\r\n if (durationIsObject) {\r\n duration.complete = proxyCompleteCallback;\r\n _viewportElement.animate(finalScroll, duration);\r\n }\r\n else {\r\n animationOptions = {\r\n duration: duration,\r\n complete: proxyCompleteCallback\r\n };\r\n if (type(easing) == TYPES.a || FRAMEWORK.isPlainObject(easing)) {\r\n specialEasing[_strScrollLeft] = easing[0] || easing.x;\r\n specialEasing[_strScrollTop] = easing[1] || easing.y;\r\n animationOptions.specialEasing = specialEasing;\r\n }\r\n else {\r\n animationOptions.easing = easing;\r\n }\r\n _viewportElement.animate(finalScroll, animationOptions);\r\n }\r\n }\r\n else {\r\n if (doScrollLeft)\r\n _viewportElement[_strScrollLeft](finalScroll[_strScrollLeft]);\r\n if (doScrollTop)\r\n _viewportElement[_strScrollTop](finalScroll[_strScrollTop]);\r\n }\r\n };\r\n\r\n /**\r\n * Stops all scroll animations.\r\n * @returns {*} The current OverlayScrollbars instance (for chaining).\r\n */\r\n _base.scrollStop = function (param1, param2, param3) {\r\n _viewportElement.stop(param1, param2, param3);\r\n return _base;\r\n };\r\n\r\n /**\r\n * Returns all relevant elements.\r\n * @param elementName The name of the element which shall be returned.\r\n * @returns {{target: *, host: *, padding: *, viewport: *, content: *, scrollbarHorizontal: {scrollbar: *, track: *, handle: *}, scrollbarVertical: {scrollbar: *, track: *, handle: *}, scrollbarCorner: *} | *}\r\n */\r\n _base.getElements = function (elementName) {\r\n var obj = {\r\n target: _targetElementNative,\r\n host: _hostElementNative,\r\n padding: _paddingElementNative,\r\n viewport: _viewportElementNative,\r\n content: _contentElementNative,\r\n scrollbarHorizontal: {\r\n scrollbar: _scrollbarHorizontalElement[0],\r\n track: _scrollbarHorizontalTrackElement[0],\r\n handle: _scrollbarHorizontalHandleElement[0]\r\n },\r\n scrollbarVertical: {\r\n scrollbar: _scrollbarVerticalElement[0],\r\n track: _scrollbarVerticalTrackElement[0],\r\n handle: _scrollbarVerticalHandleElement[0]\r\n },\r\n scrollbarCorner: _scrollbarCornerElement[0]\r\n };\r\n return type(elementName) == TYPES.s ? getObjectPropVal(obj, elementName) : obj;\r\n };\r\n\r\n /**\r\n * Returns a object which describes the current state of this instance.\r\n * @param stateProperty A specific property from the state object which shall be returned.\r\n * @returns {{widthAuto, heightAuto, overflowAmount, hideOverflow, hasOverflow, contentScrollSize, viewportSize, hostSize, autoUpdate} | *}\r\n */\r\n _base.getState = function (stateProperty) {\r\n function prepare(obj) {\r\n if (!FRAMEWORK.isPlainObject(obj))\r\n return obj;\r\n var extended = extendDeep({}, obj);\r\n var changePropertyName = function (from, to) {\r\n if (extended[LEXICON.hOP](from)) {\r\n extended[to] = extended[from];\r\n delete extended[from];\r\n }\r\n };\r\n changePropertyName('w', _strWidth); //change w to width\r\n changePropertyName('h', _strHeight); //change h to height\r\n delete extended.c; //delete c (the 'changed' prop)\r\n return extended;\r\n };\r\n var obj = {\r\n destroyed: !!prepare(_destroyed),\r\n sleeping: !!prepare(_sleeping),\r\n autoUpdate: prepare(!_mutationObserversConnected),\r\n widthAuto: prepare(_widthAutoCache),\r\n heightAuto: prepare(_heightAutoCache),\r\n padding: prepare(_cssPaddingCache),\r\n overflowAmount: prepare(_overflowAmountCache),\r\n hideOverflow: prepare(_hideOverflowCache),\r\n hasOverflow: prepare(_hasOverflowCache),\r\n contentScrollSize: prepare(_contentScrollSizeCache),\r\n viewportSize: prepare(_viewportSize),\r\n hostSize: prepare(_hostSizeCache),\r\n documentMixed : prepare(_documentMixed)\r\n };\r\n return type(stateProperty) == TYPES.s ? getObjectPropVal(obj, stateProperty) : obj;\r\n };\r\n\r\n /**\r\n * Gets all or specific extension instance.\r\n * @param extName The name of the extension from which the instance shall be got.\r\n * @returns {{}} The instance of the extension with the given name or undefined if the instance couldn't be found.\r\n */\r\n _base.ext = function(extName) {\r\n var result;\r\n var privateMethods = _extensionsPrivateMethods.split(' ');\r\n var i = 0;\r\n if(type(extName) == TYPES.s) {\r\n if(_extensions[LEXICON.hOP](extName)) {\r\n result = extendDeep({}, _extensions[extName]);\r\n for (; i < privateMethods.length; i++)\r\n delete result[privateMethods[i]];\r\n }\r\n }\r\n else {\r\n result = { };\r\n for(i in _extensions)\r\n result[i] = extendDeep({ }, _base.ext(i));\r\n }\r\n return result;\r\n };\r\n\r\n /**\r\n * Adds a extension to this instance.\r\n * @param extName The name of the extension which shall be added.\r\n * @param extensionOptions The extension options which shall be used.\r\n * @returns {{}} The instance of the added extension or undefined if the extension couldn't be added properly.\r\n */\r\n _base.addExt = function(extName, extensionOptions) {\r\n var registeredExtensionObj = _plugin.extension(extName);\r\n var instance;\r\n var instanceAdded;\r\n var instanceContract;\r\n var contractResult;\r\n var contractFulfilled = true;\r\n if(registeredExtensionObj) {\r\n if(!_extensions[LEXICON.hOP](extName)) {\r\n instance = registeredExtensionObj.extensionFactory.call(_base,\r\n extendDeep({ }, registeredExtensionObj.defaultOptions),\r\n FRAMEWORK,\r\n COMPATIBILITY);\r\n\r\n if (instance) {\r\n instanceContract = instance.contract;\r\n if (type(instanceContract) == TYPES.f) {\r\n contractResult = instanceContract(window);\r\n contractFulfilled = type(contractResult) == TYPES.b ? contractResult : contractFulfilled;\r\n }\r\n if(contractFulfilled) {\r\n _extensions[extName] = instance;\r\n instanceAdded = instance.added;\r\n if(type(instanceAdded) == TYPES.f)\r\n instanceAdded(extensionOptions);\r\n\r\n return _base.ext(extName);\r\n }\r\n }\r\n }\r\n else\r\n return _base.ext(extName);\r\n }\r\n else\r\n console.warn(\"A extension with the name \\\"\" + extName + \"\\\" isn't registered.\");\r\n };\r\n\r\n /**\r\n * Removes a extension from this instance.\r\n * @param extName The name of the extension which shall be removed.\r\n * @returns {boolean} True if the extension was removed, false otherwise e.g. if the extension wasn't added before.\r\n */\r\n _base.removeExt = function(extName) {\r\n var instance = _extensions[extName];\r\n var instanceRemoved;\r\n if(instance) {\r\n delete _extensions[extName];\r\n\r\n instanceRemoved = instance.removed;\r\n if(type(instanceRemoved) == TYPES.f)\r\n instanceRemoved();\r\n\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n /**\r\n * Constructs the plugin.\r\n * @param targetElement The element to which the plugin shall be applied.\r\n * @param options The initial options of the plugin.\r\n * @param extensions The extension(s) which shall be added right after the initialization.\r\n * @returns {boolean} True if the plugin was successfully initialized, false otherwise.\r\n */\r\n function construct(targetElement, options, extensions) {\r\n _defaultOptions = globals.defaultOptions;\r\n _nativeScrollbarStyling = globals.nativeScrollbarStyling;\r\n _nativeScrollbarSize = extendDeep({}, globals.nativeScrollbarSize);\r\n _nativeScrollbarIsOverlaid = extendDeep({}, globals.nativeScrollbarIsOverlaid);\r\n _overlayScrollbarDummySize = extendDeep({}, globals.overlayScrollbarDummySize);\r\n _rtlScrollBehavior = extendDeep({}, globals.rtlScrollBehavior);\r\n\r\n //parse & set options but don't update\r\n setOptions(extendDeep({ }, _defaultOptions, options));\r\n\r\n //check if the plugin hasn't to be initialized\r\n if (_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.x && !_currentPreparedOptions.nativeScrollbarsOverlaid.initialize) {\r\n dispatchCallback(\"onInitializationWithdrawn\");\r\n return false;\r\n }\r\n\r\n _cssCalc = globals.cssCalc;\r\n _msieVersion = globals.msie;\r\n _autoUpdateRecommended = globals.autoUpdateRecommended;\r\n _supportTransition = globals.supportTransition;\r\n _supportTransform = globals.supportTransform;\r\n _supportPassiveEvents = globals.supportPassiveEvents;\r\n _supportResizeObserver = globals.supportResizeObserver;\r\n _supportMutationObserver = globals.supportMutationObserver;\r\n _restrictedMeasuring = globals.restrictedMeasuring;\r\n _documentElement = FRAMEWORK(targetElement.ownerDocument);\r\n _documentElementNative = _documentElement[0];\r\n _windowElement = FRAMEWORK(_documentElementNative.defaultView || _documentElementNative.parentWindow);\r\n _windowElementNative = _windowElement[0];\r\n _htmlElement = findFirst(_documentElement, 'html');\r\n _bodyElement = findFirst(_htmlElement, 'body');\r\n _targetElement = FRAMEWORK(targetElement);\r\n _targetElementNative = _targetElement[0];\r\n _isTextarea = _targetElement.is('textarea');\r\n _isBody = _targetElement.is('body');\r\n _documentMixed = _documentElementNative !== document;\r\n\r\n var initBodyScroll;\r\n if (_isBody) {\r\n initBodyScroll = {};\r\n initBodyScroll.l = MATH.max(_targetElement[_strScrollLeft](), _htmlElement[_strScrollLeft](), _windowElement[_strScrollLeft]());\r\n initBodyScroll.t = MATH.max(_targetElement[_strScrollTop](), _htmlElement[_strScrollTop](), _windowElement[_strScrollTop]());\r\n }\r\n\r\n //build OverlayScrollbars DOM and Events\r\n setupStructureDOM();\r\n setupStructureEvents();\r\n\r\n //build Scrollbars DOM and Events\r\n setupScrollbarsDOM();\r\n setupScrollbarEvents(true);\r\n setupScrollbarEvents(false);\r\n\r\n //build Scrollbar Corner DOM and Events\r\n setupScrollbarCornerDOM();\r\n setupScrollbarCornerEvents();\r\n\r\n //create mutation observers\r\n createMutationObservers();\r\n\r\n if(_isBody) {\r\n //apply the body scroll to handle it right in the update method\r\n _viewportElement[_strScrollLeft](initBodyScroll.l)[_strScrollTop](initBodyScroll.t);\r\n\r\n //set the focus on the viewport element so you dont have to click on the page to use keyboard keys (up / down / space) for scrolling\r\n if(document.activeElement == targetElement && _viewportElementNative.focus) {\r\n //set a tabindex to make the viewportElement focusable\r\n _viewportElement.attr('tabindex', '-1');\r\n _viewportElementNative.focus();\r\n /* the tabindex has to be removed due to;\r\n * If you set the tabindex attribute on an <div>, then its child content cannot be scrolled with the arrow keys unless you set tabindex on the content, too\r\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex\r\n */\r\n _viewportElement.one(_strMouseTouchDownEvent, function() {\r\n _viewportElement.removeAttr('tabindex');\r\n });\r\n }\r\n }\r\n\r\n //build resize observer for the host element\r\n setupResizeObserver(_sizeObserverElement, hostOnResized);\r\n\r\n //update for the first time & initialize cache\r\n _base.update(_strAuto);\r\n\r\n //the plugin is initialized now!\r\n _initialized = true;\r\n dispatchCallback(\"onInitialized\");\r\n\r\n //call all callbacks which would fire before the initialized was complete\r\n each(_callbacksInitQeueue, function(index, value) { dispatchCallback(value.n, value.a); });\r\n _callbacksInitQeueue = [ ];\r\n\r\n //add extensions\r\n if(type(extensions) == TYPES.s)\r\n extensions = [ extensions ];\r\n if(COMPATIBILITY.isA(extensions))\r\n each(extensions, function (index, value) {_base.addExt(value); });\r\n else if(FRAMEWORK.isPlainObject(extensions))\r\n each(extensions, function (key, value) { _base.addExt(key, value); });\r\n\r\n //add the transition class for transitions AFTER the first update & AFTER the applied extensions (for preventing unwanted transitions)\r\n setTimeout(function () {\r\n if (_supportTransition && !_destroyed)\r\n addClass(_hostElement, _classNameHostTransition);\r\n }, 333);\r\n\r\n return _initialized;\r\n }\r\n\r\n if (construct(pluginTargetElement, options, extensions)) {\r\n INSTANCES(pluginTargetElement, _base);\r\n return _base;\r\n }\r\n _base = undefined;\r\n }\r\n\r\n /**\r\n * Initializes a new OverlayScrollbarsInstance object or changes options if already initialized or returns the current instance.\r\n * @param pluginTargetElements The elements to which the Plugin shall be initialized.\r\n * @param options The custom options with which the plugin shall be initialized.\r\n * @param extensions The extension(s) which shall be added right after initialization.\r\n * @returns {*}\r\n */\r\n _plugin = window[PLUGINNAME] = function(pluginTargetElements, options, extensions) {\r\n if(arguments[LEXICON.l] === 0)\r\n return this;\r\n\r\n var arr = [ ];\r\n var optsIsPlainObj = FRAMEWORK.isPlainObject(options);\r\n var inst;\r\n var result;\r\n\r\n //pluginTargetElements is null or undefined\r\n if(!pluginTargetElements)\r\n return optsIsPlainObj || !options ? result : arr;\r\n\r\n /*\r\n pluginTargetElements will be converted to:\r\n 1. A jQueryElement Array\r\n 2. A HTMLElement Array\r\n 3. A Array with a single HTML Element\r\n so pluginTargetElements is always a array.\r\n */\r\n pluginTargetElements = pluginTargetElements[LEXICON.l] != undefined ? pluginTargetElements : [ pluginTargetElements[0] || pluginTargetElements ];\r\n initOverlayScrollbarsStatics();\r\n\r\n if(pluginTargetElements[LEXICON.l] > 0) {\r\n if(optsIsPlainObj) {\r\n FRAMEWORK.each(pluginTargetElements, function (i, v) {\r\n inst = v;\r\n if(inst !== undefined)\r\n arr.push(OverlayScrollbarsInstance(inst, options, extensions, _pluginsGlobals, _pluginsAutoUpdateLoop));\r\n });\r\n }\r\n else {\r\n FRAMEWORK.each(pluginTargetElements, function(i, v) {\r\n inst = INSTANCES(v);\r\n if((options === '!' && _plugin.valid(inst)) || (COMPATIBILITY.type(options) == TYPES.f && options(v, inst)))\r\n arr.push(inst);\r\n else if(options === undefined)\r\n arr.push(inst);\r\n });\r\n }\r\n result = arr[LEXICON.l] === 1 ? arr[0] : arr;\r\n }\r\n return result;\r\n };\r\n\r\n /**\r\n * Returns a object which contains global information about the plugin and each instance of it.\r\n * The returned object is just a copy, that means that changes to the returned object won't have any effect to the original object.\r\n */\r\n _plugin.globals = function () {\r\n initOverlayScrollbarsStatics();\r\n var globals = FRAMEWORK.extend(true, { }, _pluginsGlobals);\r\n delete globals['msie'];\r\n return globals;\r\n };\r\n\r\n /**\r\n * Gets or Sets the default options for each new plugin initialization.\r\n * @param newDefaultOptions The object with which the default options shall be extended.\r\n */\r\n _plugin.defaultOptions = function(newDefaultOptions) {\r\n initOverlayScrollbarsStatics();\r\n var currDefaultOptions = _pluginsGlobals.defaultOptions;\r\n if(newDefaultOptions === undefined)\r\n return FRAMEWORK.extend(true, { }, currDefaultOptions);\r\n\r\n //set the new default options\r\n _pluginsGlobals.defaultOptions = FRAMEWORK.extend(true, { }, currDefaultOptions , _pluginsOptions._validate(newDefaultOptions, _pluginsOptions._template, true, currDefaultOptions)._default);\r\n };\r\n\r\n /**\r\n * Checks whether the passed instance is a non-destroyed OverlayScrollbars instance.\r\n * @param osInstance The potential OverlayScrollbars instance which shall be checked.\r\n * @returns {boolean} True if the passed value is a non-destroyed OverlayScrollbars instance, false otherwise.\r\n */\r\n _plugin.valid = function (osInstance) {\r\n return osInstance instanceof _plugin && !osInstance.getState().destroyed;\r\n };\r\n\r\n /**\r\n * Registers, Unregisters or returns a extension.\r\n * Register: Pass the name and the extension. (defaultOptions is optional)\r\n * Unregister: Pass the name and anything except a function as extension parameter.\r\n * Get extension: Pass the name of the extension which shall be got.\r\n * Get all extensions: Pass no arguments.\r\n * @param extensionName The name of the extension which shall be registered, unregistered or returned.\r\n * @param extension A function which generates the instance of the extension or anything other to remove a already registered extension.\r\n * @param defaultOptions The default options which shall be used for the registered extension.\r\n */\r\n _plugin.extension = function(extensionName, extension, defaultOptions) {\r\n var extNameTypeString = COMPATIBILITY.type(extensionName) == TYPES.s;\r\n var argLen = arguments[LEXICON.l];\r\n var i = 0;\r\n if(argLen < 1 || !extNameTypeString) {\r\n //return a copy of all extension objects\r\n return FRAMEWORK.extend(true, { length : _pluginsExtensions[LEXICON.l] }, _pluginsExtensions);\r\n }\r\n else if(extNameTypeString) {\r\n if(COMPATIBILITY.type(extension) == TYPES.f) {\r\n //register extension\r\n _pluginsExtensions.push({\r\n name : extensionName,\r\n extensionFactory : extension,\r\n defaultOptions : defaultOptions\r\n });\r\n }\r\n else {\r\n for(; i < _pluginsExtensions[LEXICON.l]; i++) {\r\n if (_pluginsExtensions[i].name === extensionName) {\r\n if(argLen > 1)\r\n _pluginsExtensions.splice(i, 1); //remove extension\r\n else\r\n return FRAMEWORK.extend(true, { }, _pluginsExtensions[i]); //return extension with the given name\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n return _plugin;\r\n })();\r\n\r\n if(JQUERY && JQUERY.fn) {\r\n /**\r\n * The jQuery initialization interface.\r\n * @param options The initial options for the construction of the plugin. To initialize the plugin, this option has to be a object! If it isn't a object, the instance(s) are returned and the plugin wont be initialized.\r\n * @param extensions The extension(s) which shall be added right after initialization.\r\n * @returns {*} After initialization it returns the jQuery element array, else it returns the instance(s) of the elements which are selected.\r\n */\r\n JQUERY.fn.overlayScrollbars = function (options, extensions) {\r\n var _elements = this;\r\n if(JQUERY.isPlainObject(options)) {\r\n JQUERY.each(_elements, function() { PLUGIN(this, options, extensions); });\r\n return _elements;\r\n }\r\n else\r\n return PLUGIN(_elements, options);\r\n };\r\n }\r\n return PLUGIN;\r\n }\r\n));\n\n\n// WEBPACK FOOTER //\n// ./scripts/vendor/jquery.overlayScrollbars.js","// txtTruncate - a jQuery plugin to truncate text\r\n// version 1.1.0\r\n// https://github.com/blakehaswell/txtTruncate\r\n//\r\n// Copyright (c) 2011-2012 Blake Haswell\r\n// Licensed under the MIT license: http://opensource.org/licenses/MIT\r\n(function ($) {\r\n\r\n 'use strict';\r\n\r\n\r\n // Constructor\r\n function Truncator(elem, options) {\r\n\r\n // Cache the instance.\r\n var self = this;\r\n\r\n self.$elem = $(elem);\r\n self.lineHeight = self._getLineHeight();\r\n self.origHeight = self.$elem.height();\r\n self.origTxt = self.$elem.text();\r\n\r\n // Override default settings with passed options (if any)\r\n self.settings = $.extend({}, self._defaults, options || {});\r\n\r\n self._setLines();\r\n\r\n self.truncate();\r\n\r\n // Text should be truncated whenever the window has been resized so that it\r\n // works as expected on fluid layouts\r\n var timeout;\r\n $(window).resize(function(){\r\n\r\n // Clear any existing timeout.\r\n clearTimeout(timeout);\r\n\r\n // Create a new one.\r\n timeout = setTimeout($.proxy(self.truncate, self), 200);\r\n });\r\n }\r\n\r\n\r\n Truncator.prototype = {\r\n\r\n /**\r\n * If the element doesn't fit in the specified number of lines then we\r\n * collapse the element to the desired height and truncate the text.\r\n */\r\n hide: function () {\r\n if (this._getCurrentLines() > this.settings.lines) {\r\n this.$elem.animate({\r\n height: this.lineHeight * this.settings.lines,\r\n }, $.proxy(this.truncate, this));\r\n }\r\n },\r\n\r\n /**\r\n * Restores the element's original text and expands the element to take\r\n * up the required space.\r\n */\r\n show: function () {\r\n\r\n // Set the element's height to the current height to stop it from\r\n // getting bigger when we restore the original text\r\n this.$elem.height(this.$elem.height());\r\n\r\n this._restoreOrigTxt();\r\n this.$elem.animate({\r\n height: this.origHeight,\r\n });\r\n\r\n },\r\n\r\n /**\r\n * Removes characters from the element until it fits in the specified\r\n * number of lines.\r\n */\r\n truncate: function () {\r\n\r\n // Prepare the element before calculating the lines\r\n this._prepareElem();\r\n\r\n var currTxt = this._restoreOrigTxt(),\r\n origTxtLines = this._getCurrentLines(),\r\n charsPerLine = Math.round(currTxt.length / origTxtLines),\r\n charsPerHalfLine = Math.round(charsPerLine / 2);\r\n\r\n // Only continue to truncate if we have more lines than we want\r\n if (origTxtLines > this.settings.lines) {\r\n\r\n // If we have way more lines than we want take a guess at how\r\n // much to cull\r\n if (origTxtLines > this.settings.lines + 1) {\r\n\r\n // Given our charsPerLine value, truncate text so it's about\r\n // 1 line too tall\r\n currTxt = this._truncateElementTxt((this.settings.lines + 1) * charsPerLine);\r\n\r\n // If we still have way too many lines then keep removing\r\n // half a line of text until we only have 1 line more than\r\n // we want\r\n while (this._getCurrentLines() > this.settings.lines + 1) {\r\n currTxt = this._truncateElementTxt(currTxt.length - charsPerHalfLine);\r\n }\r\n\r\n }\r\n\r\n // Take off 1 character at a time until we have the number of\r\n // lines we want.\r\n while (this._getCurrentLines() > this.settings.lines) {\r\n\r\n // Due to potential weirdness where height() and lineHeight produce different values even for one line, we need to stop infinite loops.\r\n // If we're down to half a line and still truncating, something has gone wrong.\r\n if (currTxt.length == charsPerHalfLine) {\r\n this._recoverFromLoop(currTxt);\r\n break;\r\n }\r\n\r\n // Otherwise, truncate.\r\n currTxt = this._truncateElementTxt(currTxt.length - 1);\r\n }\r\n }\r\n\r\n this._restoreElem();\r\n\r\n },\r\n\r\n /**\r\n * The default settings to use if no `options` argument is provided when\r\n * instantiating the Truncator.\r\n */\r\n _defaults: {\r\n end : '…',\r\n lines : null,\r\n },\r\n\r\n /**\r\n * Get the line height, if we're in IE and there's no unit of measurement convert it to a %\r\n * so jQuery can calculate the right px value and IE doesn't explode.\r\n */\r\n _getLineHeight : function () {\r\n var ieVal = null;\r\n\r\n // check if IE's 'currentStyle' is available\r\n if (document.body.currentStyle) {\r\n\r\n // get the line height as IE reports it - note % are converted to pt\r\n ieVal = this.$elem.get(0).currentStyle.lineHeight;\r\n\r\n // if there's no unit of measurement\r\n if (!ieVal.match(/px|PX|pt|PT|em|EM/)) {\r\n\r\n // set the lineHeight to an equivalent % so that IE reports a value\r\n // jQuery can work with\r\n this.$elem.css('line-height', (ieVal * 100) + '%');\r\n }\r\n }\r\n\r\n return parseInt(this.$elem.css('line-height'), 10);\r\n },\r\n\r\n /**\r\n * Determines how many \"lines\" the element takes up (based on\r\n * its height).\r\n */\r\n _getCurrentLines: function () {\r\n return Math.round(this.$elem.height() / this.lineHeight);\r\n },\r\n\r\n /**\r\n * Prepares the element to be manipulated by the truncate method by\r\n * removing CSS properties which influence height.\r\n *\r\n * TODO Call at the start of the truncate method and reset properties to their original value at the end?\r\n */\r\n _prepareElem: function () {\r\n\r\n // Store the original CSS values so we can restore them later\r\n this.css = {\r\n height : $.style(this.$elem, 'height') || 'auto',\r\n maxHeight : this.$elem.css('max-height'),\r\n minHeight : this.$elem.css('min-height'),\r\n };\r\n\r\n // Remove CSS values which influence the height of the element\r\n this.$elem.css({\r\n height : 'auto',\r\n maxHeight : 'none',\r\n minHeight : 0,\r\n });\r\n },\r\n\r\n /**\r\n * Helps recover from infinite loops brought on by stupid discrepancies between height and line-height.\r\n * @param string currTxt The currently displayed text.\r\n */\r\n _recoverFromLoop: function(currTxt){\r\n\r\n // Grab the current height of the element (which should be the 'ideal' height).\r\n var height = this.$elem.height();\r\n var maxLength = this.origTxt.length;\r\n\r\n // Now keep adding characters back until the height changes, or alternatively, we've restored all the characters.\r\n while (height == this.$elem.height() && currTxt.length < maxLength) {\r\n currTxt = this._truncateElementTxt(currTxt.length + 1);\r\n }\r\n\r\n // If the height actually changed, take off the last character we added.\r\n if (this.$elem.height() != height) {\r\n this._truncateElementTxt(currTxt.length - 1);\r\n }\r\n\r\n // If we wound up displaying everything, drop the ...\r\n if (currTxt.length == maxLength) {\r\n this._restoreOrigTxt();\r\n }\r\n },\r\n\r\n /**\r\n * Restores the element's original styles.\r\n */\r\n _restoreElem: function () {\r\n this.$elem.css(this.css);\r\n },\r\n\r\n /**\r\n * Restores the element's original text. Return value is the\r\n * original text.\r\n */\r\n _restoreOrigTxt: function () {\r\n this.$elem.text(this.origTxt);\r\n return this.origTxt;\r\n },\r\n\r\n /**\r\n * If a number of lines hasn't been defined in the settings then we set\r\n * the lines based on the element's `max-height` or, failing that,\r\n * default to 1 line.\r\n */\r\n _setLines: function () {\r\n\r\n // If a maximum number of lines hasn't been defined then we\r\n // calculate it\r\n if (!this.settings.lines) {\r\n\r\n // If the element's max-height is greater than its line-height\r\n // we use that to calculate the number of lines\r\n var maxHeight = parseInt(this.$elem.css('max-height'), 10);\r\n\r\n if (maxHeight > this.lineHeight) {\r\n this.settings.lines = Math.floor(maxHeight / this.lineHeight);\r\n }\r\n\r\n // Otherwise we'll just assume that we want to truncate to\r\n // 1 line\r\n else {\r\n this.settings.lines = 1;\r\n }\r\n\r\n }\r\n\r\n },\r\n\r\n /**\r\n * Given a `length`, this method truncates the element's text to that\r\n * length and adds the prepends the `end` string.\r\n *\r\n * Returns the truncated text (not including the `end` string).\r\n */\r\n _truncateElementTxt: function (length) {\r\n var txt = this.origTxt.substring(0, length);\r\n this.$elem.text(txt + this.settings.end);\r\n return txt;\r\n },\r\n\r\n };\r\n\r\n\r\n // jQuery plugin\r\n $.fn.txtTruncate = function (options) {\r\n return this.each(function () {\r\n $(this).data('truncator', new Truncator(this, options));\r\n });\r\n };\r\n\r\n\r\n}(jQuery));\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/vendor/jquery.txtTruncate.js","import 'bootstrap';\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/autoload/_bootstrap.js","/*!\n * Bootstrap v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :\n typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :\n (global = global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n}(this, function (exports, $, Popper) { 'use strict';\n\n $ = $ && $.hasOwnProperty('default') ? $['default'] : $;\n Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\n var TRANSITION_END = 'transitionend';\n var MAX_UID = 1000000;\n var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle: function handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n\n return undefined; // eslint-disable-line no-undefined\n }\n };\n }\n\n function transitionEndEmulator(duration) {\n var _this = this;\n\n var called = false;\n $(this).one(Util.TRANSITION_END, function () {\n called = true;\n });\n setTimeout(function () {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n\n function setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator;\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n\n var Util = {\n TRANSITION_END: 'bsTransitionEnd',\n getUID: function getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix));\n\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n var selector = element.getAttribute('data-target');\n\n if (!selector || selector === '#') {\n var hrefAttr = element.getAttribute('href');\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n }\n\n try {\n return document.querySelector(selector) ? selector : null;\n } catch (err) {\n return null;\n }\n },\n getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n var transitionDuration = $(element).css('transition-duration');\n var transitionDelay = $(element).css('transition-delay');\n var floatTransitionDuration = parseFloat(transitionDuration);\n var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END);\n },\n // TODO: Remove in v5\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n }\n }\n }\n },\n findShadowRoot: function findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n var root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return Util.findShadowRoot(element.parentNode);\n }\n };\n setTransitionEndSupport();\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME = 'alert';\n var VERSION = '4.3.1';\n var DATA_KEY = 'bs.alert';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $.fn[NAME];\n var Selector = {\n DISMISS: '[data-dismiss=\"alert\"]'\n };\n var Event = {\n CLOSE: \"close\" + EVENT_KEY,\n CLOSED: \"closed\" + EVENT_KEY,\n CLICK_DATA_API: \"click\" + EVENT_KEY + DATA_API_KEY\n };\n var ClassName = {\n ALERT: 'alert',\n FADE: 'fade',\n SHOW: 'show'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Alert =\n /*#__PURE__*/\n function () {\n function Alert(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Alert.prototype;\n\n // Public\n _proto.close = function close(element) {\n var rootElement = this._element;\n\n if (element) {\n rootElement = this._getRootElement(element);\n }\n\n var customEvent = this._triggerCloseEvent(rootElement);\n\n if (customEvent.isDefaultPrevented()) {\n return;\n }\n\n this._removeElement(rootElement);\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY);\n this._element = null;\n } // Private\n ;\n\n _proto._getRootElement = function _getRootElement(element) {\n var selector = Util.getSelectorFromElement(element);\n var parent = false;\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n if (!parent) {\n parent = $(element).closest(\".\" + ClassName.ALERT)[0];\n }\n\n return parent;\n };\n\n _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n var closeEvent = $.Event(Event.CLOSE);\n $(element).trigger(closeEvent);\n return closeEvent;\n };\n\n _proto._removeElement = function _removeElement(element) {\n var _this = this;\n\n $(element).removeClass(ClassName.SHOW);\n\n if (!$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element);\n\n return;\n }\n\n var transitionDuration = Util.getTransitionDurationFromElement(element);\n $(element).one(Util.TRANSITION_END, function (event) {\n return _this._destroyElement(element, event);\n }).emulateTransitionEnd(transitionDuration);\n };\n\n _proto._destroyElement = function _destroyElement(element) {\n $(element).detach().trigger(Event.CLOSED).remove();\n } // Static\n ;\n\n Alert._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $(this);\n var data = $element.data(DATA_KEY);\n\n if (!data) {\n data = new Alert(this);\n $element.data(DATA_KEY, data);\n }\n\n if (config === 'close') {\n data[config](this);\n }\n });\n };\n\n Alert._handleDismiss = function _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n\n alertInstance.close(this);\n };\n };\n\n _createClass(Alert, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }]);\n\n return Alert;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Alert._jQueryInterface;\n $.fn[NAME].Constructor = Alert;\n\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return Alert._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$1 = 'button';\n var VERSION$1 = '4.3.1';\n var DATA_KEY$1 = 'bs.button';\n var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n var DATA_API_KEY$1 = '.data-api';\n var JQUERY_NO_CONFLICT$1 = $.fn[NAME$1];\n var ClassName$1 = {\n ACTIVE: 'active',\n BUTTON: 'btn',\n FOCUS: 'focus'\n };\n var Selector$1 = {\n DATA_TOGGLE_CARROT: '[data-toggle^=\"button\"]',\n DATA_TOGGLE: '[data-toggle=\"buttons\"]',\n INPUT: 'input:not([type=\"hidden\"])',\n ACTIVE: '.active',\n BUTTON: '.btn'\n };\n var Event$1 = {\n CLICK_DATA_API: \"click\" + EVENT_KEY$1 + DATA_API_KEY$1,\n FOCUS_BLUR_DATA_API: \"focus\" + EVENT_KEY$1 + DATA_API_KEY$1 + \" \" + (\"blur\" + EVENT_KEY$1 + DATA_API_KEY$1)\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Button =\n /*#__PURE__*/\n function () {\n function Button(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Button.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n var triggerChangeEvent = true;\n var addAriaPressed = true;\n var rootElement = $(this._element).closest(Selector$1.DATA_TOGGLE)[0];\n\n if (rootElement) {\n var input = this._element.querySelector(Selector$1.INPUT);\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked && this._element.classList.contains(ClassName$1.ACTIVE)) {\n triggerChangeEvent = false;\n } else {\n var activeElement = rootElement.querySelector(Selector$1.ACTIVE);\n\n if (activeElement) {\n $(activeElement).removeClass(ClassName$1.ACTIVE);\n }\n }\n }\n\n if (triggerChangeEvent) {\n if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {\n return;\n }\n\n input.checked = !this._element.classList.contains(ClassName$1.ACTIVE);\n $(input).trigger('change');\n }\n\n input.focus();\n addAriaPressed = false;\n }\n }\n\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName$1.ACTIVE));\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(ClassName$1.ACTIVE);\n }\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$1);\n this._element = null;\n } // Static\n ;\n\n Button._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$1);\n\n if (!data) {\n data = new Button(this);\n $(this).data(DATA_KEY$1, data);\n }\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n };\n\n _createClass(Button, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$1;\n }\n }]);\n\n return Button;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$1.CLICK_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {\n event.preventDefault();\n var button = event.target;\n\n if (!$(button).hasClass(ClassName$1.BUTTON)) {\n button = $(button).closest(Selector$1.BUTTON);\n }\n\n Button._jQueryInterface.call($(button), 'toggle');\n }).on(Event$1.FOCUS_BLUR_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {\n var button = $(event.target).closest(Selector$1.BUTTON)[0];\n $(button).toggleClass(ClassName$1.FOCUS, /^focus(in)?$/.test(event.type));\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$1] = Button._jQueryInterface;\n $.fn[NAME$1].Constructor = Button;\n\n $.fn[NAME$1].noConflict = function () {\n $.fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n return Button._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$2 = 'carousel';\n var VERSION$2 = '4.3.1';\n var DATA_KEY$2 = 'bs.carousel';\n var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n var DATA_API_KEY$2 = '.data-api';\n var JQUERY_NO_CONFLICT$2 = $.fn[NAME$2];\n var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n var SWIPE_THRESHOLD = 40;\n var Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n };\n var DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n };\n var Direction = {\n NEXT: 'next',\n PREV: 'prev',\n LEFT: 'left',\n RIGHT: 'right'\n };\n var Event$2 = {\n SLIDE: \"slide\" + EVENT_KEY$2,\n SLID: \"slid\" + EVENT_KEY$2,\n KEYDOWN: \"keydown\" + EVENT_KEY$2,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$2,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$2,\n TOUCHSTART: \"touchstart\" + EVENT_KEY$2,\n TOUCHMOVE: \"touchmove\" + EVENT_KEY$2,\n TOUCHEND: \"touchend\" + EVENT_KEY$2,\n POINTERDOWN: \"pointerdown\" + EVENT_KEY$2,\n POINTERUP: \"pointerup\" + EVENT_KEY$2,\n DRAG_START: \"dragstart\" + EVENT_KEY$2,\n LOAD_DATA_API: \"load\" + EVENT_KEY$2 + DATA_API_KEY$2,\n CLICK_DATA_API: \"click\" + EVENT_KEY$2 + DATA_API_KEY$2\n };\n var ClassName$2 = {\n CAROUSEL: 'carousel',\n ACTIVE: 'active',\n SLIDE: 'slide',\n RIGHT: 'carousel-item-right',\n LEFT: 'carousel-item-left',\n NEXT: 'carousel-item-next',\n PREV: 'carousel-item-prev',\n ITEM: 'carousel-item',\n POINTER_EVENT: 'pointer-event'\n };\n var Selector$2 = {\n ACTIVE: '.active',\n ACTIVE_ITEM: '.active.carousel-item',\n ITEM: '.carousel-item',\n ITEM_IMG: '.carousel-item img',\n NEXT_PREV: '.carousel-item-next, .carousel-item-prev',\n INDICATORS: '.carousel-indicators',\n DATA_SLIDE: '[data-slide], [data-slide-to]',\n DATA_RIDE: '[data-ride=\"carousel\"]'\n };\n var PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Carousel =\n /*#__PURE__*/\n function () {\n function Carousel(element, config) {\n this._items = null;\n this._interval = null;\n this._activeElement = null;\n this._isPaused = false;\n this._isSliding = false;\n this.touchTimeout = null;\n this.touchStartX = 0;\n this.touchDeltaX = 0;\n this._config = this._getConfig(config);\n this._element = element;\n this._indicatorsElement = this._element.querySelector(Selector$2.INDICATORS);\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Carousel.prototype;\n\n // Public\n _proto.next = function next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT);\n }\n };\n\n _proto.nextWhenVisible = function nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {\n this.next();\n }\n };\n\n _proto.prev = function prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV);\n }\n };\n\n _proto.pause = function pause(event) {\n if (!event) {\n this._isPaused = true;\n }\n\n if (this._element.querySelector(Selector$2.NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element);\n this.cycle(true);\n }\n\n clearInterval(this._interval);\n this._interval = null;\n };\n\n _proto.cycle = function cycle(event) {\n if (!event) {\n this._isPaused = false;\n }\n\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n }\n };\n\n _proto.to = function to(index) {\n var _this = this;\n\n this._activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);\n\n var activeIndex = this._getItemIndex(this._activeElement);\n\n if (index > this._items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n $(this._element).one(Event$2.SLID, function () {\n return _this.to(index);\n });\n return;\n }\n\n if (activeIndex === index) {\n this.pause();\n this.cycle();\n return;\n }\n\n var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;\n\n this._slide(direction, this._items[index]);\n };\n\n _proto.dispose = function dispose() {\n $(this._element).off(EVENT_KEY$2);\n $.removeData(this._element, DATA_KEY$2);\n this._items = null;\n this._config = null;\n this._element = null;\n this._interval = null;\n this._isPaused = null;\n this._isSliding = null;\n this._activeElement = null;\n this._indicatorsElement = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default, config);\n Util.typeCheckConfig(NAME$2, config, DefaultType);\n return config;\n };\n\n _proto._handleSwipe = function _handleSwipe() {\n var absDeltax = Math.abs(this.touchDeltaX);\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return;\n }\n\n var direction = absDeltax / this.touchDeltaX; // swipe left\n\n if (direction > 0) {\n this.prev();\n } // swipe right\n\n\n if (direction < 0) {\n this.next();\n }\n };\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this2 = this;\n\n if (this._config.keyboard) {\n $(this._element).on(Event$2.KEYDOWN, function (event) {\n return _this2._keydown(event);\n });\n }\n\n if (this._config.pause === 'hover') {\n $(this._element).on(Event$2.MOUSEENTER, function (event) {\n return _this2.pause(event);\n }).on(Event$2.MOUSELEAVE, function (event) {\n return _this2.cycle(event);\n });\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners();\n }\n };\n\n _proto._addTouchEventListeners = function _addTouchEventListeners() {\n var _this3 = this;\n\n if (!this._touchSupported) {\n return;\n }\n\n var start = function start(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchStartX = event.originalEvent.clientX;\n } else if (!_this3._pointerEvent) {\n _this3.touchStartX = event.originalEvent.touches[0].clientX;\n }\n };\n\n var move = function move(event) {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n _this3.touchDeltaX = 0;\n } else {\n _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;\n }\n };\n\n var end = function end(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n }\n\n _this3._handleSwipe();\n\n if (_this3._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n _this3.pause();\n\n if (_this3.touchTimeout) {\n clearTimeout(_this3.touchTimeout);\n }\n\n _this3.touchTimeout = setTimeout(function (event) {\n return _this3.cycle(event);\n }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n }\n };\n\n $(this._element.querySelectorAll(Selector$2.ITEM_IMG)).on(Event$2.DRAG_START, function (e) {\n return e.preventDefault();\n });\n\n if (this._pointerEvent) {\n $(this._element).on(Event$2.POINTERDOWN, function (event) {\n return start(event);\n });\n $(this._element).on(Event$2.POINTERUP, function (event) {\n return end(event);\n });\n\n this._element.classList.add(ClassName$2.POINTER_EVENT);\n } else {\n $(this._element).on(Event$2.TOUCHSTART, function (event) {\n return start(event);\n });\n $(this._element).on(Event$2.TOUCHMOVE, function (event) {\n return move(event);\n });\n $(this._element).on(Event$2.TOUCHEND, function (event) {\n return end(event);\n });\n }\n };\n\n _proto._keydown = function _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault();\n this.prev();\n break;\n\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault();\n this.next();\n break;\n\n default:\n }\n };\n\n _proto._getItemIndex = function _getItemIndex(element) {\n this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(Selector$2.ITEM)) : [];\n return this._items.indexOf(element);\n };\n\n _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n var isNextDirection = direction === Direction.NEXT;\n var isPrevDirection = direction === Direction.PREV;\n\n var activeIndex = this._getItemIndex(activeElement);\n\n var lastItemIndex = this._items.length - 1;\n var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement;\n }\n\n var delta = direction === Direction.PREV ? -1 : 1;\n var itemIndex = (activeIndex + delta) % this._items.length;\n return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n };\n\n _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n var targetIndex = this._getItemIndex(relatedTarget);\n\n var fromIndex = this._getItemIndex(this._element.querySelector(Selector$2.ACTIVE_ITEM));\n\n var slideEvent = $.Event(Event$2.SLIDE, {\n relatedTarget: relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n });\n $(this._element).trigger(slideEvent);\n return slideEvent;\n };\n\n _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector$2.ACTIVE));\n $(indicators).removeClass(ClassName$2.ACTIVE);\n\n var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName$2.ACTIVE);\n }\n }\n };\n\n _proto._slide = function _slide(direction, element) {\n var _this4 = this;\n\n var activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);\n\n var activeElementIndex = this._getItemIndex(activeElement);\n\n var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n var nextElementIndex = this._getItemIndex(nextElement);\n\n var isCycling = Boolean(this._interval);\n var directionalClassName;\n var orderClassName;\n var eventDirectionName;\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName$2.LEFT;\n orderClassName = ClassName$2.NEXT;\n eventDirectionName = Direction.LEFT;\n } else {\n directionalClassName = ClassName$2.RIGHT;\n orderClassName = ClassName$2.PREV;\n eventDirectionName = Direction.RIGHT;\n }\n\n if (nextElement && $(nextElement).hasClass(ClassName$2.ACTIVE)) {\n this._isSliding = false;\n return;\n }\n\n var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n if (slideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return;\n }\n\n this._isSliding = true;\n\n if (isCycling) {\n this.pause();\n }\n\n this._setActiveIndicatorElement(nextElement);\n\n var slidEvent = $.Event(Event$2.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n });\n\n if ($(this._element).hasClass(ClassName$2.SLIDE)) {\n $(nextElement).addClass(orderClassName);\n Util.reflow(nextElement);\n $(activeElement).addClass(directionalClassName);\n $(nextElement).addClass(directionalClassName);\n var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);\n\n if (nextElementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n this._config.interval = nextElementInterval;\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval;\n }\n\n var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n $(activeElement).one(Util.TRANSITION_END, function () {\n $(nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(ClassName$2.ACTIVE);\n $(activeElement).removeClass(ClassName$2.ACTIVE + \" \" + orderClassName + \" \" + directionalClassName);\n _this4._isSliding = false;\n setTimeout(function () {\n return $(_this4._element).trigger(slidEvent);\n }, 0);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n $(activeElement).removeClass(ClassName$2.ACTIVE);\n $(nextElement).addClass(ClassName$2.ACTIVE);\n this._isSliding = false;\n $(this._element).trigger(slidEvent);\n }\n\n if (isCycling) {\n this.cycle();\n }\n } // Static\n ;\n\n Carousel._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$2);\n\n var _config = _objectSpread({}, Default, $(this).data());\n\n if (typeof config === 'object') {\n _config = _objectSpread({}, _config, config);\n }\n\n var action = typeof config === 'string' ? config : _config.slide;\n\n if (!data) {\n data = new Carousel(this, _config);\n $(this).data(DATA_KEY$2, data);\n }\n\n if (typeof config === 'number') {\n data.to(config);\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n }\n\n data[action]();\n } else if (_config.interval && _config.ride) {\n data.pause();\n data.cycle();\n }\n });\n };\n\n Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n var selector = Util.getSelectorFromElement(this);\n\n if (!selector) {\n return;\n }\n\n var target = $(selector)[0];\n\n if (!target || !$(target).hasClass(ClassName$2.CAROUSEL)) {\n return;\n }\n\n var config = _objectSpread({}, $(target).data(), $(this).data());\n\n var slideIndex = this.getAttribute('data-slide-to');\n\n if (slideIndex) {\n config.interval = false;\n }\n\n Carousel._jQueryInterface.call($(target), config);\n\n if (slideIndex) {\n $(target).data(DATA_KEY$2).to(slideIndex);\n }\n\n event.preventDefault();\n };\n\n _createClass(Carousel, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$2;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n\n return Carousel;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$2.CLICK_DATA_API, Selector$2.DATA_SLIDE, Carousel._dataApiClickHandler);\n $(window).on(Event$2.LOAD_DATA_API, function () {\n var carousels = [].slice.call(document.querySelectorAll(Selector$2.DATA_RIDE));\n\n for (var i = 0, len = carousels.length; i < len; i++) {\n var $carousel = $(carousels[i]);\n\n Carousel._jQueryInterface.call($carousel, $carousel.data());\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$2] = Carousel._jQueryInterface;\n $.fn[NAME$2].Constructor = Carousel;\n\n $.fn[NAME$2].noConflict = function () {\n $.fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n return Carousel._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$3 = 'collapse';\n var VERSION$3 = '4.3.1';\n var DATA_KEY$3 = 'bs.collapse';\n var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n var DATA_API_KEY$3 = '.data-api';\n var JQUERY_NO_CONFLICT$3 = $.fn[NAME$3];\n var Default$1 = {\n toggle: true,\n parent: ''\n };\n var DefaultType$1 = {\n toggle: 'boolean',\n parent: '(string|element)'\n };\n var Event$3 = {\n SHOW: \"show\" + EVENT_KEY$3,\n SHOWN: \"shown\" + EVENT_KEY$3,\n HIDE: \"hide\" + EVENT_KEY$3,\n HIDDEN: \"hidden\" + EVENT_KEY$3,\n CLICK_DATA_API: \"click\" + EVENT_KEY$3 + DATA_API_KEY$3\n };\n var ClassName$3 = {\n SHOW: 'show',\n COLLAPSE: 'collapse',\n COLLAPSING: 'collapsing',\n COLLAPSED: 'collapsed'\n };\n var Dimension = {\n WIDTH: 'width',\n HEIGHT: 'height'\n };\n var Selector$3 = {\n ACTIVES: '.show, .collapsing',\n DATA_TOGGLE: '[data-toggle=\"collapse\"]'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Collapse =\n /*#__PURE__*/\n function () {\n function Collapse(element, config) {\n this._isTransitioning = false;\n this._element = element;\n this._config = this._getConfig(config);\n this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n var toggleList = [].slice.call(document.querySelectorAll(Selector$3.DATA_TOGGLE));\n\n for (var i = 0, len = toggleList.length; i < len; i++) {\n var elem = toggleList[i];\n var selector = Util.getSelectorFromElement(elem);\n var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n return foundElem === element;\n });\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector;\n\n this._triggerArray.push(elem);\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null;\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n var _proto = Collapse.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if ($(this._element).hasClass(ClassName$3.SHOW)) {\n this.hide();\n } else {\n this.show();\n }\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if (this._isTransitioning || $(this._element).hasClass(ClassName$3.SHOW)) {\n return;\n }\n\n var actives;\n var activesData;\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(Selector$3.ACTIVES)).filter(function (elem) {\n if (typeof _this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === _this._config.parent;\n }\n\n return elem.classList.contains(ClassName$3.COLLAPSE);\n });\n\n if (actives.length === 0) {\n actives = null;\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY$3);\n\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n\n var startEvent = $.Event(Event$3.SHOW);\n $(this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');\n\n if (!activesData) {\n $(actives).data(DATA_KEY$3, null);\n }\n }\n\n var dimension = this._getDimension();\n\n $(this._element).removeClass(ClassName$3.COLLAPSE).addClass(ClassName$3.COLLAPSING);\n this._element.style[dimension] = 0;\n\n if (this._triggerArray.length) {\n $(this._triggerArray).removeClass(ClassName$3.COLLAPSED).attr('aria-expanded', true);\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n $(_this._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).addClass(ClassName$3.SHOW);\n _this._element.style[dimension] = '';\n\n _this.setTransitioning(false);\n\n $(_this._element).trigger(Event$3.SHOWN);\n };\n\n var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n var scrollSize = \"scroll\" + capitalizedDimension;\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n this._element.style[dimension] = this._element[scrollSize] + \"px\";\n };\n\n _proto.hide = function hide() {\n var _this2 = this;\n\n if (this._isTransitioning || !$(this._element).hasClass(ClassName$3.SHOW)) {\n return;\n }\n\n var startEvent = $.Event(Event$3.HIDE);\n $(this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n var dimension = this._getDimension();\n\n this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n Util.reflow(this._element);\n $(this._element).addClass(ClassName$3.COLLAPSING).removeClass(ClassName$3.COLLAPSE).removeClass(ClassName$3.SHOW);\n var triggerArrayLength = this._triggerArray.length;\n\n if (triggerArrayLength > 0) {\n for (var i = 0; i < triggerArrayLength; i++) {\n var trigger = this._triggerArray[i];\n var selector = Util.getSelectorFromElement(trigger);\n\n if (selector !== null) {\n var $elem = $([].slice.call(document.querySelectorAll(selector)));\n\n if (!$elem.hasClass(ClassName$3.SHOW)) {\n $(trigger).addClass(ClassName$3.COLLAPSED).attr('aria-expanded', false);\n }\n }\n }\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n _this2.setTransitioning(false);\n\n $(_this2._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).trigger(Event$3.HIDDEN);\n };\n\n this._element.style[dimension] = '';\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n };\n\n _proto.setTransitioning = function setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning;\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$3);\n this._config = null;\n this._parent = null;\n this._element = null;\n this._triggerArray = null;\n this._isTransitioning = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default$1, config);\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n Util.typeCheckConfig(NAME$3, config, DefaultType$1);\n return config;\n };\n\n _proto._getDimension = function _getDimension() {\n var hasWidth = $(this._element).hasClass(Dimension.WIDTH);\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;\n };\n\n _proto._getParent = function _getParent() {\n var _this3 = this;\n\n var parent;\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent; // It's a jQuery object\n\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0];\n }\n } else {\n parent = document.querySelector(this._config.parent);\n }\n\n var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n var children = [].slice.call(parent.querySelectorAll(selector));\n $(children).each(function (i, element) {\n _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n });\n return parent;\n };\n\n _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n var isOpen = $(element).hasClass(ClassName$3.SHOW);\n\n if (triggerArray.length) {\n $(triggerArray).toggleClass(ClassName$3.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n }\n } // Static\n ;\n\n Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n var selector = Util.getSelectorFromElement(element);\n return selector ? document.querySelector(selector) : null;\n };\n\n Collapse._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data(DATA_KEY$3);\n\n var _config = _objectSpread({}, Default$1, $this.data(), typeof config === 'object' && config ? config : {});\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n if (!data) {\n data = new Collapse(this, _config);\n $this.data(DATA_KEY$3, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Collapse, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$3;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$1;\n }\n }]);\n\n return Collapse;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$3.CLICK_DATA_API, Selector$3.DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n var $trigger = $(this);\n var selector = Util.getSelectorFromElement(this);\n var selectors = [].slice.call(document.querySelectorAll(selector));\n $(selectors).each(function () {\n var $target = $(this);\n var data = $target.data(DATA_KEY$3);\n var config = data ? 'toggle' : $trigger.data();\n\n Collapse._jQueryInterface.call($target, config);\n });\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$3] = Collapse._jQueryInterface;\n $.fn[NAME$3].Constructor = Collapse;\n\n $.fn[NAME$3].noConflict = function () {\n $.fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n return Collapse._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$4 = 'dropdown';\n var VERSION$4 = '4.3.1';\n var DATA_KEY$4 = 'bs.dropdown';\n var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n var DATA_API_KEY$4 = '.data-api';\n var JQUERY_NO_CONFLICT$4 = $.fn[NAME$4];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE);\n var Event$4 = {\n HIDE: \"hide\" + EVENT_KEY$4,\n HIDDEN: \"hidden\" + EVENT_KEY$4,\n SHOW: \"show\" + EVENT_KEY$4,\n SHOWN: \"shown\" + EVENT_KEY$4,\n CLICK: \"click\" + EVENT_KEY$4,\n CLICK_DATA_API: \"click\" + EVENT_KEY$4 + DATA_API_KEY$4,\n KEYDOWN_DATA_API: \"keydown\" + EVENT_KEY$4 + DATA_API_KEY$4,\n KEYUP_DATA_API: \"keyup\" + EVENT_KEY$4 + DATA_API_KEY$4\n };\n var ClassName$4 = {\n DISABLED: 'disabled',\n SHOW: 'show',\n DROPUP: 'dropup',\n DROPRIGHT: 'dropright',\n DROPLEFT: 'dropleft',\n MENURIGHT: 'dropdown-menu-right',\n MENULEFT: 'dropdown-menu-left',\n POSITION_STATIC: 'position-static'\n };\n var Selector$4 = {\n DATA_TOGGLE: '[data-toggle=\"dropdown\"]',\n FORM_CHILD: '.dropdown form',\n MENU: '.dropdown-menu',\n NAVBAR_NAV: '.navbar-nav',\n VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n };\n var AttachmentMap = {\n TOP: 'top-start',\n TOPEND: 'top-end',\n BOTTOM: 'bottom-start',\n BOTTOMEND: 'bottom-end',\n RIGHT: 'right-start',\n RIGHTEND: 'right-end',\n LEFT: 'left-start',\n LEFTEND: 'left-end'\n };\n var Default$2 = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic'\n };\n var DefaultType$2 = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Dropdown =\n /*#__PURE__*/\n function () {\n function Dropdown(element, config) {\n this._element = element;\n this._popper = null;\n this._config = this._getConfig(config);\n this._menu = this._getMenuElement();\n this._inNavbar = this._detectNavbar();\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Dropdown.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED)) {\n return;\n }\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n var isActive = $(this._menu).hasClass(ClassName$4.SHOW);\n\n Dropdown._clearMenus();\n\n if (isActive) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $.Event(Event$4.SHOW, relatedTarget);\n $(parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n } // Disable totally Popper.js for Dropdown in Navbar\n\n\n if (!this._inNavbar) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper.js (https://popper.js.org/)');\n }\n\n var referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = parent;\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference; // Check if it's jQuery element\n\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0];\n }\n } // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n\n\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(ClassName$4.POSITION_STATIC);\n }\n\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());\n } // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && $(parent).closest(Selector$4.NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop);\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n $(this._menu).toggleClass(ClassName$4.SHOW);\n $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));\n };\n\n _proto.show = function show() {\n if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || $(this._menu).hasClass(ClassName$4.SHOW)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $.Event(Event$4.SHOW, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $(parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n\n $(this._menu).toggleClass(ClassName$4.SHOW);\n $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));\n };\n\n _proto.hide = function hide() {\n if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || !$(this._menu).hasClass(ClassName$4.SHOW)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var hideEvent = $.Event(Event$4.HIDE, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $(parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n $(this._menu).toggleClass(ClassName$4.SHOW);\n $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$4);\n $(this._element).off(EVENT_KEY$4);\n this._element = null;\n this._menu = null;\n\n if (this._popper !== null) {\n this._popper.destroy();\n\n this._popper = null;\n }\n };\n\n _proto.update = function update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Private\n ;\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this = this;\n\n $(this._element).on(Event$4.CLICK, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.toggle();\n });\n };\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, this.constructor.Default, $(this._element).data(), config);\n Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._getMenuElement = function _getMenuElement() {\n if (!this._menu) {\n var parent = Dropdown._getParentFromElement(this._element);\n\n if (parent) {\n this._menu = parent.querySelector(Selector$4.MENU);\n }\n }\n\n return this._menu;\n };\n\n _proto._getPlacement = function _getPlacement() {\n var $parentDropdown = $(this._element.parentNode);\n var placement = AttachmentMap.BOTTOM; // Handle dropup\n\n if ($parentDropdown.hasClass(ClassName$4.DROPUP)) {\n placement = AttachmentMap.TOP;\n\n if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {\n placement = AttachmentMap.TOPEND;\n }\n } else if ($parentDropdown.hasClass(ClassName$4.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT;\n } else if ($parentDropdown.hasClass(ClassName$4.DROPLEFT)) {\n placement = AttachmentMap.LEFT;\n } else if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND;\n }\n\n return placement;\n };\n\n _proto._detectNavbar = function _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0;\n };\n\n _proto._getOffset = function _getOffset() {\n var _this2 = this;\n\n var offset = {};\n\n if (typeof this._config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});\n return data;\n };\n } else {\n offset.offset = this._config.offset;\n }\n\n return offset;\n };\n\n _proto._getPopperConfig = function _getPopperConfig() {\n var popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n } // Disable Popper.js if we have a static display\n\n };\n\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n };\n }\n\n return popperConfig;\n } // Static\n ;\n\n Dropdown._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$4);\n\n var _config = typeof config === 'object' ? config : null;\n\n if (!data) {\n data = new Dropdown(this, _config);\n $(this).data(DATA_KEY$4, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n Dropdown._clearMenus = function _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return;\n }\n\n var toggles = [].slice.call(document.querySelectorAll(Selector$4.DATA_TOGGLE));\n\n for (var i = 0, len = toggles.length; i < len; i++) {\n var parent = Dropdown._getParentFromElement(toggles[i]);\n\n var context = $(toggles[i]).data(DATA_KEY$4);\n var relatedTarget = {\n relatedTarget: toggles[i]\n };\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n\n if (!context) {\n continue;\n }\n\n var dropdownMenu = context._menu;\n\n if (!$(parent).hasClass(ClassName$4.SHOW)) {\n continue;\n }\n\n if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {\n continue;\n }\n\n var hideEvent = $.Event(Event$4.HIDE, relatedTarget);\n $(parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n continue;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop);\n }\n\n toggles[i].setAttribute('aria-expanded', 'false');\n $(dropdownMenu).removeClass(ClassName$4.SHOW);\n $(parent).removeClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));\n }\n };\n\n Dropdown._getParentFromElement = function _getParentFromElement(element) {\n var parent;\n var selector = Util.getSelectorFromElement(element);\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n return parent || element.parentNode;\n } // eslint-disable-next-line complexity\n ;\n\n Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector$4.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (this.disabled || $(this).hasClass(ClassName$4.DISABLED)) {\n return;\n }\n\n var parent = Dropdown._getParentFromElement(this);\n\n var isActive = $(parent).hasClass(ClassName$4.SHOW);\n\n if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n var toggle = parent.querySelector(Selector$4.DATA_TOGGLE);\n $(toggle).trigger('focus');\n }\n\n $(this).trigger('click');\n return;\n }\n\n var items = [].slice.call(parent.querySelectorAll(Selector$4.VISIBLE_ITEMS));\n\n if (items.length === 0) {\n return;\n }\n\n var index = items.indexOf(event.target);\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) {\n // Up\n index--;\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n // Down\n index++;\n }\n\n if (index < 0) {\n index = 0;\n }\n\n items[index].focus();\n };\n\n _createClass(Dropdown, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$4;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$2;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$2;\n }\n }]);\n\n return Dropdown;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$4.KEYDOWN_DATA_API, Selector$4.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event$4.KEYDOWN_DATA_API, Selector$4.MENU, Dropdown._dataApiKeydownHandler).on(Event$4.CLICK_DATA_API + \" \" + Event$4.KEYUP_DATA_API, Dropdown._clearMenus).on(Event$4.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n Dropdown._jQueryInterface.call($(this), 'toggle');\n }).on(Event$4.CLICK_DATA_API, Selector$4.FORM_CHILD, function (e) {\n e.stopPropagation();\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$4] = Dropdown._jQueryInterface;\n $.fn[NAME$4].Constructor = Dropdown;\n\n $.fn[NAME$4].noConflict = function () {\n $.fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n return Dropdown._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$5 = 'modal';\n var VERSION$5 = '4.3.1';\n var DATA_KEY$5 = 'bs.modal';\n var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n var DATA_API_KEY$5 = '.data-api';\n var JQUERY_NO_CONFLICT$5 = $.fn[NAME$5];\n var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var Default$3 = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n };\n var DefaultType$3 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n };\n var Event$5 = {\n HIDE: \"hide\" + EVENT_KEY$5,\n HIDDEN: \"hidden\" + EVENT_KEY$5,\n SHOW: \"show\" + EVENT_KEY$5,\n SHOWN: \"shown\" + EVENT_KEY$5,\n FOCUSIN: \"focusin\" + EVENT_KEY$5,\n RESIZE: \"resize\" + EVENT_KEY$5,\n CLICK_DISMISS: \"click.dismiss\" + EVENT_KEY$5,\n KEYDOWN_DISMISS: \"keydown.dismiss\" + EVENT_KEY$5,\n MOUSEUP_DISMISS: \"mouseup.dismiss\" + EVENT_KEY$5,\n MOUSEDOWN_DISMISS: \"mousedown.dismiss\" + EVENT_KEY$5,\n CLICK_DATA_API: \"click\" + EVENT_KEY$5 + DATA_API_KEY$5\n };\n var ClassName$5 = {\n SCROLLABLE: 'modal-dialog-scrollable',\n SCROLLBAR_MEASURER: 'modal-scrollbar-measure',\n BACKDROP: 'modal-backdrop',\n OPEN: 'modal-open',\n FADE: 'fade',\n SHOW: 'show'\n };\n var Selector$5 = {\n DIALOG: '.modal-dialog',\n MODAL_BODY: '.modal-body',\n DATA_TOGGLE: '[data-toggle=\"modal\"]',\n DATA_DISMISS: '[data-dismiss=\"modal\"]',\n FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT: '.sticky-top'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Modal =\n /*#__PURE__*/\n function () {\n function Modal(element, config) {\n this._config = this._getConfig(config);\n this._element = element;\n this._dialog = element.querySelector(Selector$5.DIALOG);\n this._backdrop = null;\n this._isShown = false;\n this._isBodyOverflowing = false;\n this._ignoreBackdropClick = false;\n this._isTransitioning = false;\n this._scrollbarWidth = 0;\n } // Getters\n\n\n var _proto = Modal.prototype;\n\n // Public\n _proto.toggle = function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n };\n\n _proto.show = function show(relatedTarget) {\n var _this = this;\n\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n if ($(this._element).hasClass(ClassName$5.FADE)) {\n this._isTransitioning = true;\n }\n\n var showEvent = $.Event(Event$5.SHOW, {\n relatedTarget: relatedTarget\n });\n $(this._element).trigger(showEvent);\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = true;\n\n this._checkScrollbar();\n\n this._setScrollbar();\n\n this._adjustDialog();\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $(this._element).on(Event$5.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) {\n return _this.hide(event);\n });\n $(this._dialog).on(Event$5.MOUSEDOWN_DISMISS, function () {\n $(_this._element).one(Event$5.MOUSEUP_DISMISS, function (event) {\n if ($(event.target).is(_this._element)) {\n _this._ignoreBackdropClick = true;\n }\n });\n });\n\n this._showBackdrop(function () {\n return _this._showElement(relatedTarget);\n });\n };\n\n _proto.hide = function hide(event) {\n var _this2 = this;\n\n if (event) {\n event.preventDefault();\n }\n\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n var hideEvent = $.Event(Event$5.HIDE);\n $(this._element).trigger(hideEvent);\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = false;\n var transition = $(this._element).hasClass(ClassName$5.FADE);\n\n if (transition) {\n this._isTransitioning = true;\n }\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $(document).off(Event$5.FOCUSIN);\n $(this._element).removeClass(ClassName$5.SHOW);\n $(this._element).off(Event$5.CLICK_DISMISS);\n $(this._dialog).off(Event$5.MOUSEDOWN_DISMISS);\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, function (event) {\n return _this2._hideModal(event);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n this._hideModal();\n }\n };\n\n _proto.dispose = function dispose() {\n [window, this._element, this._dialog].forEach(function (htmlElement) {\n return $(htmlElement).off(EVENT_KEY$5);\n });\n /**\n * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `Event.CLICK_DATA_API` event that should remain\n */\n\n $(document).off(Event$5.FOCUSIN);\n $.removeData(this._element, DATA_KEY$5);\n this._config = null;\n this._element = null;\n this._dialog = null;\n this._backdrop = null;\n this._isShown = null;\n this._isBodyOverflowing = null;\n this._ignoreBackdropClick = null;\n this._isTransitioning = null;\n this._scrollbarWidth = null;\n };\n\n _proto.handleUpdate = function handleUpdate() {\n this._adjustDialog();\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default$3, config);\n Util.typeCheckConfig(NAME$5, config, DefaultType$3);\n return config;\n };\n\n _proto._showElement = function _showElement(relatedTarget) {\n var _this3 = this;\n\n var transition = $(this._element).hasClass(ClassName$5.FADE);\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n if ($(this._dialog).hasClass(ClassName$5.SCROLLABLE)) {\n this._dialog.querySelector(Selector$5.MODAL_BODY).scrollTop = 0;\n } else {\n this._element.scrollTop = 0;\n }\n\n if (transition) {\n Util.reflow(this._element);\n }\n\n $(this._element).addClass(ClassName$5.SHOW);\n\n if (this._config.focus) {\n this._enforceFocus();\n }\n\n var shownEvent = $.Event(Event$5.SHOWN, {\n relatedTarget: relatedTarget\n });\n\n var transitionComplete = function transitionComplete() {\n if (_this3._config.focus) {\n _this3._element.focus();\n }\n\n _this3._isTransitioning = false;\n $(_this3._element).trigger(shownEvent);\n };\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n } else {\n transitionComplete();\n }\n };\n\n _proto._enforceFocus = function _enforceFocus() {\n var _this4 = this;\n\n $(document).off(Event$5.FOCUSIN) // Guard against infinite focus loop\n .on(Event$5.FOCUSIN, function (event) {\n if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) {\n _this4._element.focus();\n }\n });\n };\n\n _proto._setEscapeEvent = function _setEscapeEvent() {\n var _this5 = this;\n\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event$5.KEYDOWN_DISMISS, function (event) {\n if (event.which === ESCAPE_KEYCODE$1) {\n event.preventDefault();\n\n _this5.hide();\n }\n });\n } else if (!this._isShown) {\n $(this._element).off(Event$5.KEYDOWN_DISMISS);\n }\n };\n\n _proto._setResizeEvent = function _setResizeEvent() {\n var _this6 = this;\n\n if (this._isShown) {\n $(window).on(Event$5.RESIZE, function (event) {\n return _this6.handleUpdate(event);\n });\n } else {\n $(window).off(Event$5.RESIZE);\n }\n };\n\n _proto._hideModal = function _hideModal() {\n var _this7 = this;\n\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._isTransitioning = false;\n\n this._showBackdrop(function () {\n $(document.body).removeClass(ClassName$5.OPEN);\n\n _this7._resetAdjustments();\n\n _this7._resetScrollbar();\n\n $(_this7._element).trigger(Event$5.HIDDEN);\n });\n };\n\n _proto._removeBackdrop = function _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove();\n this._backdrop = null;\n }\n };\n\n _proto._showBackdrop = function _showBackdrop(callback) {\n var _this8 = this;\n\n var animate = $(this._element).hasClass(ClassName$5.FADE) ? ClassName$5.FADE : '';\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div');\n this._backdrop.className = ClassName$5.BACKDROP;\n\n if (animate) {\n this._backdrop.classList.add(animate);\n }\n\n $(this._backdrop).appendTo(document.body);\n $(this._element).on(Event$5.CLICK_DISMISS, function (event) {\n if (_this8._ignoreBackdropClick) {\n _this8._ignoreBackdropClick = false;\n return;\n }\n\n if (event.target !== event.currentTarget) {\n return;\n }\n\n if (_this8._config.backdrop === 'static') {\n _this8._element.focus();\n } else {\n _this8.hide();\n }\n });\n\n if (animate) {\n Util.reflow(this._backdrop);\n }\n\n $(this._backdrop).addClass(ClassName$5.SHOW);\n\n if (!callback) {\n return;\n }\n\n if (!animate) {\n callback();\n return;\n }\n\n var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName$5.SHOW);\n\n var callbackRemove = function callbackRemove() {\n _this8._removeBackdrop();\n\n if (callback) {\n callback();\n }\n };\n\n if ($(this._element).hasClass(ClassName$5.FADE)) {\n var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n } // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n ;\n\n _proto._adjustDialog = function _adjustDialog() {\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n }\n };\n\n _proto._resetAdjustments = function _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n };\n\n _proto._checkScrollbar = function _checkScrollbar() {\n var rect = document.body.getBoundingClientRect();\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;\n this._scrollbarWidth = this._getScrollbarWidth();\n };\n\n _proto._setScrollbar = function _setScrollbar() {\n var _this9 = this;\n\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));\n var stickyContent = [].slice.call(document.querySelectorAll(Selector$5.STICKY_CONTENT)); // Adjust fixed content padding\n\n $(fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight;\n var calculatedPadding = $(element).css('padding-right');\n $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + \"px\");\n }); // Adjust sticky content margin\n\n $(stickyContent).each(function (index, element) {\n var actualMargin = element.style.marginRight;\n var calculatedMargin = $(element).css('margin-right');\n $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + \"px\");\n }); // Adjust body padding\n\n var actualPadding = document.body.style.paddingRight;\n var calculatedPadding = $(document.body).css('padding-right');\n $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n }\n\n $(document.body).addClass(ClassName$5.OPEN);\n };\n\n _proto._resetScrollbar = function _resetScrollbar() {\n // Restore fixed content padding\n var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));\n $(fixedContent).each(function (index, element) {\n var padding = $(element).data('padding-right');\n $(element).removeData('padding-right');\n element.style.paddingRight = padding ? padding : '';\n }); // Restore sticky content\n\n var elements = [].slice.call(document.querySelectorAll(\"\" + Selector$5.STICKY_CONTENT));\n $(elements).each(function (index, element) {\n var margin = $(element).data('margin-right');\n\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right');\n }\n }); // Restore body padding\n\n var padding = $(document.body).data('padding-right');\n $(document.body).removeData('padding-right');\n document.body.style.paddingRight = padding ? padding : '';\n };\n\n _proto._getScrollbarWidth = function _getScrollbarWidth() {\n // thx d.walsh\n var scrollDiv = document.createElement('div');\n scrollDiv.className = ClassName$5.SCROLLBAR_MEASURER;\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n } // Static\n ;\n\n Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$5);\n\n var _config = _objectSpread({}, Default$3, $(this).data(), typeof config === 'object' && config ? config : {});\n\n if (!data) {\n data = new Modal(this, _config);\n $(this).data(DATA_KEY$5, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](relatedTarget);\n } else if (_config.show) {\n data.show(relatedTarget);\n }\n });\n };\n\n _createClass(Modal, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$5;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$3;\n }\n }]);\n\n return Modal;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$5.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) {\n var _this10 = this;\n\n var target;\n var selector = Util.getSelectorFromElement(this);\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n var config = $(target).data(DATA_KEY$5) ? 'toggle' : _objectSpread({}, $(target).data(), $(this).data());\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault();\n }\n\n var $target = $(target).one(Event$5.SHOW, function (showEvent) {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return;\n }\n\n $target.one(Event$5.HIDDEN, function () {\n if ($(_this10).is(':visible')) {\n _this10.focus();\n }\n });\n });\n\n Modal._jQueryInterface.call($(target), config, this);\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$5] = Modal._jQueryInterface;\n $.fn[NAME$5].Constructor = Modal;\n\n $.fn[NAME$5].noConflict = function () {\n $.fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n return Modal._jQueryInterface;\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n };\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase();\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));\n }\n\n return true;\n }\n\n var regExp = allowedAttributeList.filter(function (attrRegex) {\n return attrRegex instanceof RegExp;\n }); // Check if a regular expression validates the attribute.\n\n for (var i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml;\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml);\n }\n\n var domParser = new window.DOMParser();\n var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n var whitelistKeys = Object.keys(whiteList);\n var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n\n var _loop = function _loop(i, len) {\n var el = elements[i];\n var elName = el.nodeName.toLowerCase();\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el);\n return \"continue\";\n }\n\n var attributeList = [].slice.call(el.attributes);\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n attributeList.forEach(function (attr) {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName);\n }\n });\n };\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var _ret = _loop(i, len);\n\n if (_ret === \"continue\") continue;\n }\n\n return createdDocument.body.innerHTML;\n }\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$6 = 'tooltip';\n var VERSION$6 = '4.3.1';\n var DATA_KEY$6 = 'bs.tooltip';\n var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];\n var CLASS_PREFIX = 'bs-tooltip';\n var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n var DefaultType$4 = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n whiteList: 'object'\n };\n var AttachmentMap$1 = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n };\n var Default$4 = {\n animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist\n };\n var HoverState = {\n SHOW: 'show',\n OUT: 'out'\n };\n var Event$6 = {\n HIDE: \"hide\" + EVENT_KEY$6,\n HIDDEN: \"hidden\" + EVENT_KEY$6,\n SHOW: \"show\" + EVENT_KEY$6,\n SHOWN: \"shown\" + EVENT_KEY$6,\n INSERTED: \"inserted\" + EVENT_KEY$6,\n CLICK: \"click\" + EVENT_KEY$6,\n FOCUSIN: \"focusin\" + EVENT_KEY$6,\n FOCUSOUT: \"focusout\" + EVENT_KEY$6,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$6,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$6\n };\n var ClassName$6 = {\n FADE: 'fade',\n SHOW: 'show'\n };\n var Selector$6 = {\n TOOLTIP: '.tooltip',\n TOOLTIP_INNER: '.tooltip-inner',\n ARROW: '.arrow'\n };\n var Trigger = {\n HOVER: 'hover',\n FOCUS: 'focus',\n CLICK: 'click',\n MANUAL: 'manual'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Tooltip =\n /*#__PURE__*/\n function () {\n function Tooltip(element, config) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org/)');\n } // private\n\n\n this._isEnabled = true;\n this._timeout = 0;\n this._hoverState = '';\n this._activeTrigger = {};\n this._popper = null; // Protected\n\n this.element = element;\n this.config = this._getConfig(config);\n this.tip = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Tooltip.prototype;\n\n // Public\n _proto.enable = function enable() {\n this._isEnabled = true;\n };\n\n _proto.disable = function disable() {\n this._isEnabled = false;\n };\n\n _proto.toggleEnabled = function toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n };\n\n _proto.toggle = function toggle(event) {\n if (!this._isEnabled) {\n return;\n }\n\n if (event) {\n var dataKey = this.constructor.DATA_KEY;\n var context = $(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $(event.currentTarget).data(dataKey, context);\n }\n\n context._activeTrigger.click = !context._activeTrigger.click;\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context);\n } else {\n context._leave(null, context);\n }\n } else {\n if ($(this.getTipElement()).hasClass(ClassName$6.SHOW)) {\n this._leave(null, this);\n\n return;\n }\n\n this._enter(null, this);\n }\n };\n\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n $.removeData(this.element, this.constructor.DATA_KEY);\n $(this.element).off(this.constructor.EVENT_KEY);\n $(this.element).closest('.modal').off('hide.bs.modal');\n\n if (this.tip) {\n $(this.tip).remove();\n }\n\n this._isEnabled = null;\n this._timeout = null;\n this._hoverState = null;\n this._activeTrigger = null;\n\n if (this._popper !== null) {\n this._popper.destroy();\n }\n\n this._popper = null;\n this.element = null;\n this.config = null;\n this.tip = null;\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n var showEvent = $.Event(this.constructor.Event.SHOW);\n\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent);\n var shadowRoot = Util.findShadowRoot(this.element);\n var isInTheDom = $.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return;\n }\n\n var tip = this.getTipElement();\n var tipId = Util.getUID(this.constructor.NAME);\n tip.setAttribute('id', tipId);\n this.element.setAttribute('aria-describedby', tipId);\n this.setContent();\n\n if (this.config.animation) {\n $(tip).addClass(ClassName$6.FADE);\n }\n\n var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n var attachment = this._getAttachment(placement);\n\n this.addAttachmentClass(attachment);\n\n var container = this._getContainer();\n\n $(tip).data(this.constructor.DATA_KEY, this);\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container);\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED);\n this._popper = new Popper(this.element, tip, {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: Selector$6.ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: function onCreate(data) {\n if (data.originalPlacement !== data.placement) {\n _this._handlePopperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n return _this._handlePopperPlacementChange(data);\n }\n });\n $(tip).addClass(ClassName$6.SHOW); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop);\n }\n\n var complete = function complete() {\n if (_this.config.animation) {\n _this._fixTransition();\n }\n\n var prevHoverState = _this._hoverState;\n _this._hoverState = null;\n $(_this.element).trigger(_this.constructor.Event.SHOWN);\n\n if (prevHoverState === HoverState.OUT) {\n _this._leave(null, _this);\n }\n };\n\n if ($(this.tip).hasClass(ClassName$6.FADE)) {\n var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n }\n };\n\n _proto.hide = function hide(callback) {\n var _this2 = this;\n\n var tip = this.getTipElement();\n var hideEvent = $.Event(this.constructor.Event.HIDE);\n\n var complete = function complete() {\n if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip);\n }\n\n _this2._cleanTipClass();\n\n _this2.element.removeAttribute('aria-describedby');\n\n $(_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n if (_this2._popper !== null) {\n _this2._popper.destroy();\n }\n\n if (callback) {\n callback();\n }\n };\n\n $(this.element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n $(tip).removeClass(ClassName$6.SHOW); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop);\n }\n\n this._activeTrigger[Trigger.CLICK] = false;\n this._activeTrigger[Trigger.FOCUS] = false;\n this._activeTrigger[Trigger.HOVER] = false;\n\n if ($(this.tip).hasClass(ClassName$6.FADE)) {\n var transitionDuration = Util.getTransitionDurationFromElement(tip);\n $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n\n this._hoverState = '';\n };\n\n _proto.update = function update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Protected\n ;\n\n _proto.isWithContent = function isWithContent() {\n return Boolean(this.getTitle());\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $(this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var tip = this.getTipElement();\n this.setElementContent($(tip.querySelectorAll(Selector$6.TOOLTIP_INNER)), this.getTitle());\n $(tip).removeClass(ClassName$6.FADE + \" \" + ClassName$6.SHOW);\n };\n\n _proto.setElementContent = function setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content);\n }\n } else {\n $element.text($(content).text());\n }\n\n return;\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n }\n\n $element.html(content);\n } else {\n $element.text(content);\n }\n };\n\n _proto.getTitle = function getTitle() {\n var title = this.element.getAttribute('data-original-title');\n\n if (!title) {\n title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n }\n\n return title;\n } // Private\n ;\n\n _proto._getOffset = function _getOffset() {\n var _this3 = this;\n\n var offset = {};\n\n if (typeof this.config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _objectSpread({}, data.offsets, _this3.config.offset(data.offsets, _this3.element) || {});\n return data;\n };\n } else {\n offset.offset = this.config.offset;\n }\n\n return offset;\n };\n\n _proto._getContainer = function _getContainer() {\n if (this.config.container === false) {\n return document.body;\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container);\n }\n\n return $(document).find(this.config.container);\n };\n\n _proto._getAttachment = function _getAttachment(placement) {\n return AttachmentMap$1[placement.toUpperCase()];\n };\n\n _proto._setListeners = function _setListeners() {\n var _this4 = this;\n\n var triggers = this.config.trigger.split(' ');\n triggers.forEach(function (trigger) {\n if (trigger === 'click') {\n $(_this4.element).on(_this4.constructor.Event.CLICK, _this4.config.selector, function (event) {\n return _this4.toggle(event);\n });\n } else if (trigger !== Trigger.MANUAL) {\n var eventIn = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSEENTER : _this4.constructor.Event.FOCUSIN;\n var eventOut = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSELEAVE : _this4.constructor.Event.FOCUSOUT;\n $(_this4.element).on(eventIn, _this4.config.selector, function (event) {\n return _this4._enter(event);\n }).on(eventOut, _this4.config.selector, function (event) {\n return _this4._leave(event);\n });\n }\n });\n $(this.element).closest('.modal').on('hide.bs.modal', function () {\n if (_this4.element) {\n _this4.hide();\n }\n });\n\n if (this.config.selector) {\n this.config = _objectSpread({}, this.config, {\n trigger: 'manual',\n selector: ''\n });\n } else {\n this._fixTitle();\n }\n };\n\n _proto._fixTitle = function _fixTitle() {\n var titleType = typeof this.element.getAttribute('data-original-title');\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n this.element.setAttribute('title', '');\n }\n };\n\n _proto._enter = function _enter(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $(event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;\n }\n\n if ($(context.getTipElement()).hasClass(ClassName$6.SHOW) || context._hoverState === HoverState.SHOW) {\n context._hoverState = HoverState.SHOW;\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HoverState.SHOW;\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HoverState.SHOW) {\n context.show();\n }\n }, context.config.delay.show);\n };\n\n _proto._leave = function _leave(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $(event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;\n }\n\n if (context._isWithActiveTrigger()) {\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HoverState.OUT;\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HoverState.OUT) {\n context.hide();\n }\n }, context.config.delay.hide);\n };\n\n _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n for (var trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n };\n\n _proto._getConfig = function _getConfig(config) {\n var dataAttributes = $(this.element).data();\n Object.keys(dataAttributes).forEach(function (dataAttr) {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr];\n }\n });\n config = _objectSpread({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n }\n\n return config;\n };\n\n _proto._getDelegateConfig = function _getDelegateConfig() {\n var config = {};\n\n if (this.config) {\n for (var key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key];\n }\n }\n }\n\n return config;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $(this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''));\n }\n };\n\n _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n var popperInstance = popperData.instance;\n this.tip = popperInstance.popper;\n\n this._cleanTipClass();\n\n this.addAttachmentClass(this._getAttachment(popperData.placement));\n };\n\n _proto._fixTransition = function _fixTransition() {\n var tip = this.getTipElement();\n var initConfigAnimation = this.config.animation;\n\n if (tip.getAttribute('x-placement') !== null) {\n return;\n }\n\n $(tip).removeClass(ClassName$6.FADE);\n this.config.animation = false;\n this.hide();\n this.show();\n this.config.animation = initConfigAnimation;\n } // Static\n ;\n\n Tooltip._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$6);\n\n var _config = typeof config === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Tooltip(this, _config);\n $(this).data(DATA_KEY$6, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tooltip, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$6;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$4;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$6;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$6;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event$6;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$6;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$4;\n }\n }]);\n\n return Tooltip;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $.fn[NAME$6] = Tooltip._jQueryInterface;\n $.fn[NAME$6].Constructor = Tooltip;\n\n $.fn[NAME$6].noConflict = function () {\n $.fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n return Tooltip._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$7 = 'popover';\n var VERSION$7 = '4.3.1';\n var DATA_KEY$7 = 'bs.popover';\n var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];\n var CLASS_PREFIX$1 = 'bs-popover';\n var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n\n var Default$5 = _objectSpread({}, Tooltip.Default, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div></div>'\n });\n\n var DefaultType$5 = _objectSpread({}, Tooltip.DefaultType, {\n content: '(string|element|function)'\n });\n\n var ClassName$7 = {\n FADE: 'fade',\n SHOW: 'show'\n };\n var Selector$7 = {\n TITLE: '.popover-header',\n CONTENT: '.popover-body'\n };\n var Event$7 = {\n HIDE: \"hide\" + EVENT_KEY$7,\n HIDDEN: \"hidden\" + EVENT_KEY$7,\n SHOW: \"show\" + EVENT_KEY$7,\n SHOWN: \"shown\" + EVENT_KEY$7,\n INSERTED: \"inserted\" + EVENT_KEY$7,\n CLICK: \"click\" + EVENT_KEY$7,\n FOCUSIN: \"focusin\" + EVENT_KEY$7,\n FOCUSOUT: \"focusout\" + EVENT_KEY$7,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$7,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$7\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Popover =\n /*#__PURE__*/\n function (_Tooltip) {\n _inheritsLoose(Popover, _Tooltip);\n\n function Popover() {\n return _Tooltip.apply(this, arguments) || this;\n }\n\n var _proto = Popover.prototype;\n\n // Overrides\n _proto.isWithContent = function isWithContent() {\n return this.getTitle() || this._getContent();\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $(this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events\n\n this.setElementContent($tip.find(Selector$7.TITLE), this.getTitle());\n\n var content = this._getContent();\n\n if (typeof content === 'function') {\n content = content.call(this.element);\n }\n\n this.setElementContent($tip.find(Selector$7.CONTENT), content);\n $tip.removeClass(ClassName$7.FADE + \" \" + ClassName$7.SHOW);\n } // Private\n ;\n\n _proto._getContent = function _getContent() {\n return this.element.getAttribute('data-content') || this.config.content;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $(this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''));\n }\n } // Static\n ;\n\n Popover._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$7);\n\n var _config = typeof config === 'object' ? config : null;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Popover(this, _config);\n $(this).data(DATA_KEY$7, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Popover, null, [{\n key: \"VERSION\",\n // Getters\n get: function get() {\n return VERSION$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$5;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$7;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$7;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event$7;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$7;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$5;\n }\n }]);\n\n return Popover;\n }(Tooltip);\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $.fn[NAME$7] = Popover._jQueryInterface;\n $.fn[NAME$7].Constructor = Popover;\n\n $.fn[NAME$7].noConflict = function () {\n $.fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n return Popover._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$8 = 'scrollspy';\n var VERSION$8 = '4.3.1';\n var DATA_KEY$8 = 'bs.scrollspy';\n var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n var DATA_API_KEY$6 = '.data-api';\n var JQUERY_NO_CONFLICT$8 = $.fn[NAME$8];\n var Default$6 = {\n offset: 10,\n method: 'auto',\n target: ''\n };\n var DefaultType$6 = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n };\n var Event$8 = {\n ACTIVATE: \"activate\" + EVENT_KEY$8,\n SCROLL: \"scroll\" + EVENT_KEY$8,\n LOAD_DATA_API: \"load\" + EVENT_KEY$8 + DATA_API_KEY$6\n };\n var ClassName$8 = {\n DROPDOWN_ITEM: 'dropdown-item',\n DROPDOWN_MENU: 'dropdown-menu',\n ACTIVE: 'active'\n };\n var Selector$8 = {\n DATA_SPY: '[data-spy=\"scroll\"]',\n ACTIVE: '.active',\n NAV_LIST_GROUP: '.nav, .list-group',\n NAV_LINKS: '.nav-link',\n NAV_ITEMS: '.nav-item',\n LIST_ITEMS: '.list-group-item',\n DROPDOWN: '.dropdown',\n DROPDOWN_ITEMS: '.dropdown-item',\n DROPDOWN_TOGGLE: '.dropdown-toggle'\n };\n var OffsetMethod = {\n OFFSET: 'offset',\n POSITION: 'position'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var ScrollSpy =\n /*#__PURE__*/\n function () {\n function ScrollSpy(element, config) {\n var _this = this;\n\n this._element = element;\n this._scrollElement = element.tagName === 'BODY' ? window : element;\n this._config = this._getConfig(config);\n this._selector = this._config.target + \" \" + Selector$8.NAV_LINKS + \",\" + (this._config.target + \" \" + Selector$8.LIST_ITEMS + \",\") + (this._config.target + \" \" + Selector$8.DROPDOWN_ITEMS);\n this._offsets = [];\n this._targets = [];\n this._activeTarget = null;\n this._scrollHeight = 0;\n $(this._scrollElement).on(Event$8.SCROLL, function (event) {\n return _this._process(event);\n });\n this.refresh();\n\n this._process();\n } // Getters\n\n\n var _proto = ScrollSpy.prototype;\n\n // Public\n _proto.refresh = function refresh() {\n var _this2 = this;\n\n var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;\n var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;\n this._offsets = [];\n this._targets = [];\n this._scrollHeight = this._getScrollHeight();\n var targets = [].slice.call(document.querySelectorAll(this._selector));\n targets.map(function (element) {\n var target;\n var targetSelector = Util.getSelectorFromElement(element);\n\n if (targetSelector) {\n target = document.querySelector(targetSelector);\n }\n\n if (target) {\n var targetBCR = target.getBoundingClientRect();\n\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [$(target)[offsetMethod]().top + offsetBase, targetSelector];\n }\n }\n\n return null;\n }).filter(function (item) {\n return item;\n }).sort(function (a, b) {\n return a[0] - b[0];\n }).forEach(function (item) {\n _this2._offsets.push(item[0]);\n\n _this2._targets.push(item[1]);\n });\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$8);\n $(this._scrollElement).off(EVENT_KEY$8);\n this._element = null;\n this._scrollElement = null;\n this._config = null;\n this._selector = null;\n this._offsets = null;\n this._targets = null;\n this._activeTarget = null;\n this._scrollHeight = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default$6, typeof config === 'object' && config ? config : {});\n\n if (typeof config.target !== 'string') {\n var id = $(config.target).attr('id');\n\n if (!id) {\n id = Util.getUID(NAME$8);\n $(config.target).attr('id', id);\n }\n\n config.target = \"#\" + id;\n }\n\n Util.typeCheckConfig(NAME$8, config, DefaultType$6);\n return config;\n };\n\n _proto._getScrollTop = function _getScrollTop() {\n return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n };\n\n _proto._getScrollHeight = function _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n };\n\n _proto._getOffsetHeight = function _getOffsetHeight() {\n return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n };\n\n _proto._process = function _process() {\n var scrollTop = this._getScrollTop() + this._config.offset;\n\n var scrollHeight = this._getScrollHeight();\n\n var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh();\n }\n\n if (scrollTop >= maxScroll) {\n var target = this._targets[this._targets.length - 1];\n\n if (this._activeTarget !== target) {\n this._activate(target);\n }\n\n return;\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null;\n\n this._clear();\n\n return;\n }\n\n var offsetLength = this._offsets.length;\n\n for (var i = offsetLength; i--;) {\n var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n if (isActiveTarget) {\n this._activate(this._targets[i]);\n }\n }\n };\n\n _proto._activate = function _activate(target) {\n this._activeTarget = target;\n\n this._clear();\n\n var queries = this._selector.split(',').map(function (selector) {\n return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n });\n\n var $link = $([].slice.call(document.querySelectorAll(queries.join(','))));\n\n if ($link.hasClass(ClassName$8.DROPDOWN_ITEM)) {\n $link.closest(Selector$8.DROPDOWN).find(Selector$8.DROPDOWN_TOGGLE).addClass(ClassName$8.ACTIVE);\n $link.addClass(ClassName$8.ACTIVE);\n } else {\n // Set triggered link as active\n $link.addClass(ClassName$8.ACTIVE); // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_LINKS + \", \" + Selector$8.LIST_ITEMS).addClass(ClassName$8.ACTIVE); // Handle special case when .nav-link is inside .nav-item\n\n $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_ITEMS).children(Selector$8.NAV_LINKS).addClass(ClassName$8.ACTIVE);\n }\n\n $(this._scrollElement).trigger(Event$8.ACTIVATE, {\n relatedTarget: target\n });\n };\n\n _proto._clear = function _clear() {\n [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {\n return node.classList.contains(ClassName$8.ACTIVE);\n }).forEach(function (node) {\n return node.classList.remove(ClassName$8.ACTIVE);\n });\n } // Static\n ;\n\n ScrollSpy._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$8);\n\n var _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new ScrollSpy(this, _config);\n $(this).data(DATA_KEY$8, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(ScrollSpy, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$8;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$6;\n }\n }]);\n\n return ScrollSpy;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(window).on(Event$8.LOAD_DATA_API, function () {\n var scrollSpys = [].slice.call(document.querySelectorAll(Selector$8.DATA_SPY));\n var scrollSpysLength = scrollSpys.length;\n\n for (var i = scrollSpysLength; i--;) {\n var $spy = $(scrollSpys[i]);\n\n ScrollSpy._jQueryInterface.call($spy, $spy.data());\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$8] = ScrollSpy._jQueryInterface;\n $.fn[NAME$8].Constructor = ScrollSpy;\n\n $.fn[NAME$8].noConflict = function () {\n $.fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n return ScrollSpy._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$9 = 'tab';\n var VERSION$9 = '4.3.1';\n var DATA_KEY$9 = 'bs.tab';\n var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n var DATA_API_KEY$7 = '.data-api';\n var JQUERY_NO_CONFLICT$9 = $.fn[NAME$9];\n var Event$9 = {\n HIDE: \"hide\" + EVENT_KEY$9,\n HIDDEN: \"hidden\" + EVENT_KEY$9,\n SHOW: \"show\" + EVENT_KEY$9,\n SHOWN: \"shown\" + EVENT_KEY$9,\n CLICK_DATA_API: \"click\" + EVENT_KEY$9 + DATA_API_KEY$7\n };\n var ClassName$9 = {\n DROPDOWN_MENU: 'dropdown-menu',\n ACTIVE: 'active',\n DISABLED: 'disabled',\n FADE: 'fade',\n SHOW: 'show'\n };\n var Selector$9 = {\n DROPDOWN: '.dropdown',\n NAV_LIST_GROUP: '.nav, .list-group',\n ACTIVE: '.active',\n ACTIVE_UL: '> li > .active',\n DATA_TOGGLE: '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n DROPDOWN_TOGGLE: '.dropdown-toggle',\n DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Tab =\n /*#__PURE__*/\n function () {\n function Tab(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Tab.prototype;\n\n // Public\n _proto.show = function show() {\n var _this = this;\n\n if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName$9.ACTIVE) || $(this._element).hasClass(ClassName$9.DISABLED)) {\n return;\n }\n\n var target;\n var previous;\n var listElement = $(this._element).closest(Selector$9.NAV_LIST_GROUP)[0];\n var selector = Util.getSelectorFromElement(this._element);\n\n if (listElement) {\n var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector$9.ACTIVE_UL : Selector$9.ACTIVE;\n previous = $.makeArray($(listElement).find(itemSelector));\n previous = previous[previous.length - 1];\n }\n\n var hideEvent = $.Event(Event$9.HIDE, {\n relatedTarget: this._element\n });\n var showEvent = $.Event(Event$9.SHOW, {\n relatedTarget: previous\n });\n\n if (previous) {\n $(previous).trigger(hideEvent);\n }\n\n $(this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n this._activate(this._element, listElement);\n\n var complete = function complete() {\n var hiddenEvent = $.Event(Event$9.HIDDEN, {\n relatedTarget: _this._element\n });\n var shownEvent = $.Event(Event$9.SHOWN, {\n relatedTarget: previous\n });\n $(previous).trigger(hiddenEvent);\n $(_this._element).trigger(shownEvent);\n };\n\n if (target) {\n this._activate(target, target.parentNode, complete);\n } else {\n complete();\n }\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$9);\n this._element = null;\n } // Private\n ;\n\n _proto._activate = function _activate(element, container, callback) {\n var _this2 = this;\n\n var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $(container).find(Selector$9.ACTIVE_UL) : $(container).children(Selector$9.ACTIVE);\n var active = activeElements[0];\n var isTransitioning = callback && active && $(active).hasClass(ClassName$9.FADE);\n\n var complete = function complete() {\n return _this2._transitionComplete(element, active, callback);\n };\n\n if (active && isTransitioning) {\n var transitionDuration = Util.getTransitionDurationFromElement(active);\n $(active).removeClass(ClassName$9.SHOW).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n if (active) {\n $(active).removeClass(ClassName$9.ACTIVE);\n var dropdownChild = $(active.parentNode).find(Selector$9.DROPDOWN_ACTIVE_CHILD)[0];\n\n if (dropdownChild) {\n $(dropdownChild).removeClass(ClassName$9.ACTIVE);\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false);\n }\n }\n\n $(element).addClass(ClassName$9.ACTIVE);\n\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true);\n }\n\n Util.reflow(element);\n\n if (element.classList.contains(ClassName$9.FADE)) {\n element.classList.add(ClassName$9.SHOW);\n }\n\n if (element.parentNode && $(element.parentNode).hasClass(ClassName$9.DROPDOWN_MENU)) {\n var dropdownElement = $(element).closest(Selector$9.DROPDOWN)[0];\n\n if (dropdownElement) {\n var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector$9.DROPDOWN_TOGGLE));\n $(dropdownToggleList).addClass(ClassName$9.ACTIVE);\n }\n\n element.setAttribute('aria-expanded', true);\n }\n\n if (callback) {\n callback();\n }\n } // Static\n ;\n\n Tab._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data(DATA_KEY$9);\n\n if (!data) {\n data = new Tab(this);\n $this.data(DATA_KEY$9, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tab, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$9;\n }\n }]);\n\n return Tab;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$9.CLICK_DATA_API, Selector$9.DATA_TOGGLE, function (event) {\n event.preventDefault();\n\n Tab._jQueryInterface.call($(this), 'show');\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$9] = Tab._jQueryInterface;\n $.fn[NAME$9].Constructor = Tab;\n\n $.fn[NAME$9].noConflict = function () {\n $.fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n return Tab._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$a = 'toast';\n var VERSION$a = '4.3.1';\n var DATA_KEY$a = 'bs.toast';\n var EVENT_KEY$a = \".\" + DATA_KEY$a;\n var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];\n var Event$a = {\n CLICK_DISMISS: \"click.dismiss\" + EVENT_KEY$a,\n HIDE: \"hide\" + EVENT_KEY$a,\n HIDDEN: \"hidden\" + EVENT_KEY$a,\n SHOW: \"show\" + EVENT_KEY$a,\n SHOWN: \"shown\" + EVENT_KEY$a\n };\n var ClassName$a = {\n FADE: 'fade',\n HIDE: 'hide',\n SHOW: 'show',\n SHOWING: 'showing'\n };\n var DefaultType$7 = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n };\n var Default$7 = {\n animation: true,\n autohide: true,\n delay: 500\n };\n var Selector$a = {\n DATA_DISMISS: '[data-dismiss=\"toast\"]'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Toast =\n /*#__PURE__*/\n function () {\n function Toast(element, config) {\n this._element = element;\n this._config = this._getConfig(config);\n this._timeout = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Toast.prototype;\n\n // Public\n _proto.show = function show() {\n var _this = this;\n\n $(this._element).trigger(Event$a.SHOW);\n\n if (this._config.animation) {\n this._element.classList.add(ClassName$a.FADE);\n }\n\n var complete = function complete() {\n _this._element.classList.remove(ClassName$a.SHOWING);\n\n _this._element.classList.add(ClassName$a.SHOW);\n\n $(_this._element).trigger(Event$a.SHOWN);\n\n if (_this._config.autohide) {\n _this.hide();\n }\n };\n\n this._element.classList.remove(ClassName$a.HIDE);\n\n this._element.classList.add(ClassName$a.SHOWING);\n\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto.hide = function hide(withoutTimeout) {\n var _this2 = this;\n\n if (!this._element.classList.contains(ClassName$a.SHOW)) {\n return;\n }\n\n $(this._element).trigger(Event$a.HIDE);\n\n if (withoutTimeout) {\n this._close();\n } else {\n this._timeout = setTimeout(function () {\n _this2._close();\n }, this._config.delay);\n }\n };\n\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n this._timeout = null;\n\n if (this._element.classList.contains(ClassName$a.SHOW)) {\n this._element.classList.remove(ClassName$a.SHOW);\n }\n\n $(this._element).off(Event$a.CLICK_DISMISS);\n $.removeData(this._element, DATA_KEY$a);\n this._element = null;\n this._config = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {});\n Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._setListeners = function _setListeners() {\n var _this3 = this;\n\n $(this._element).on(Event$a.CLICK_DISMISS, Selector$a.DATA_DISMISS, function () {\n return _this3.hide(true);\n });\n };\n\n _proto._close = function _close() {\n var _this4 = this;\n\n var complete = function complete() {\n _this4._element.classList.add(ClassName$a.HIDE);\n\n $(_this4._element).trigger(Event$a.HIDDEN);\n };\n\n this._element.classList.remove(ClassName$a.SHOW);\n\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n } // Static\n ;\n\n Toast._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $(this);\n var data = $element.data(DATA_KEY$a);\n\n var _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Toast(this, _config);\n $element.data(DATA_KEY$a, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](this);\n }\n });\n };\n\n _createClass(Toast, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$a;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$7;\n }\n }]);\n\n return Toast;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $.fn[NAME$a] = Toast._jQueryInterface;\n $.fn[NAME$a].Constructor = Toast;\n\n $.fn[NAME$a].noConflict = function () {\n $.fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n return Toast._jQueryInterface;\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n (function () {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n }\n\n var version = $.fn.jquery.split(' ')[0].split('.');\n var minMajor = 1;\n var ltMajor = 2;\n var minMinor = 9;\n var minPatch = 1;\n var maxMajor = 4;\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n }\n })();\n\n exports.Util = Util;\n exports.Alert = Alert;\n exports.Button = Button;\n exports.Carousel = Carousel;\n exports.Collapse = Collapse;\n exports.Dropdown = Dropdown;\n exports.Modal = Modal;\n exports.Popover = Popover;\n exports.Scrollspy = ScrollSpy;\n exports.Tab = Tab;\n exports.Toast = Toast;\n exports.Tooltip = Tooltip;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=bootstrap.js.map\n\n\n\n// WEBPACK FOOTER //\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/bootstrap/dist/js/bootstrap.js","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.14.7\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.right - result.left;\n var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport'\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/popper.js/dist/esm/popper.js\n// module id = 118\n// module chunks = 0","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 119\n// module chunks = 0","import camelCase from './camelCase';\r\n\r\n/**\r\n * DOM-based Routing\r\n *\r\n * Based on {@link http://goo.gl/EUTi53|Markup-based Unobtrusive Comprehensive DOM-ready Execution} by Paul Irish\r\n *\r\n * The routing fires all common scripts, followed by the page specific scripts.\r\n * Add additional events for more control over timing e.g. a finalize event\r\n */\r\nclass Router {\r\n\r\n /**\r\n * Create a new Router\r\n * @param {Object} routes\r\n */\r\n constructor(routes) {\r\n this.routes = routes;\r\n }\r\n\r\n /**\r\n * Fire Router events\r\n * @param {string} route DOM-based route derived from body classes (`<body class=\"...\">`)\r\n * @param {string} [event] Events on the route. By default, `init` and `finalize` events are called.\r\n * @param {string} [arg] Any custom argument to be passed to the event.\r\n */\r\n fire(route, event = 'init', arg) {\r\n if(typeof(Event) === 'function') {\r\n document.dispatchEvent(new CustomEvent('routed', {\r\n bubbles: true,\r\n detail: {\r\n route,\r\n fn: event,\r\n },\r\n }));\r\n }\r\n\r\n const fire = route !== '' && this.routes[route] && typeof this.routes[route][event] === 'function';\r\n if (fire) {\r\n this.routes[route][event](arg);\r\n }\r\n }\r\n\r\n /**\r\n * Automatically load and fire Router events\r\n *\r\n * Events are fired in the following order:\r\n * * common init\r\n * * page-specific init\r\n * * page-specific finalize\r\n * * common finalize\r\n */\r\n loadEvents() {\r\n // Fire common init JS\r\n this.fire('common');\r\n\r\n // Fire page-specific init JS, and then finalize JS\r\n document.body.className\r\n .toLowerCase()\r\n .replace(/-/g, '_')\r\n .split(/\\s+/)\r\n .map(camelCase)\r\n .forEach((className) => {\r\n this.fire(className);\r\n this.fire(className, 'finalize');\r\n });\r\n\r\n // Fire common finalize JS\r\n this.fire('common', 'finalize');\r\n }\r\n}\r\n\r\nexport default Router;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/Router.js","/**\r\n * the most terrible camelizer on the internet, guaranteed!\r\n * @param {string} str String that isn't camel-case, e.g., CAMeL_CaSEiS-harD\r\n * @return {string} String converted to camel-case, e.g., camelCaseIsHard\r\n */\r\nexport default str => `${str.charAt(0).toLowerCase()}${str.replace(/[\\W_]/g, '|').split('|')\r\n .map(part => `${part.charAt(0).toUpperCase()}${part.slice(1)}`)\r\n .join('')\r\n .slice(1)}`;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/camelCase.js","import flexibleVideo from '../components/flexible-video';\r\n\r\nexport default {\r\n init() {\r\n // JavaScript to be fired on all pages\r\n flexibleVideo();\r\n },\r\n finalize() {\r\n // JavaScript to be fired on all pages, after page specific JS is fired\r\n },\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/routes/common.js","// import initVideo, { pauseVideo } from \"../util/embed\";\r\n\r\n/**\r\n * Add the ff. class are setup in the section to make the video worked\r\n * \r\n * 1. Video tag should have .js-video-tag\r\n * \r\n * 2. The parent container should have .js-video (Ideally, this should \r\n * be added in the div that holds all the content like text, video, \r\n * images and play button)\r\n * \r\n * 3. Add .js-hide-on-play to the elements you want to hide when the \r\n * video is played\r\n * \r\n * 4. The element you want to set as trigger to play/pause the video should have \r\n * .js-playvideo. This is mostly added in the play button.\r\n * \r\n * 5. You can add js-play if you want an image to show if video is paused.\r\n * \r\n */\r\nimport { stokpressViewPort } from '../util/helper';\r\n\r\nconst selector = {\r\n\t'hideOnPlay': '.js-hide-on-play', \r\n 'container': '.js-video2',\r\n};\r\n\r\nconst classes = {\r\n\t'hide': 'd-none',\t\r\n\t'playButton': 'js-playvideo', \r\n};\r\n\r\nconst isAutoplaySupported = (callback) => {\r\n\r\n if (!sessionStorage.autoPlaySupported) {\r\n let video = document.createElement('video');\r\n video.autoplay = true;\r\n video.muted = true;\r\n video.setAttribute('webkit-playsinline', 'webkit-playsinline');\r\n video.setAttribute('playsinline', 'playsinline'); \r\n video.src = 'data:video/mp4;base64,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';\r\n video.load();\r\n video.style.display = 'none';\r\n video.playing = false;\r\n\r\n video.play();\r\n\r\n video.onplay = function() {\r\n this.playing = true;\r\n }\r\n\r\n // Video has loaded, check autoplay support\r\n video.oncanplay = function() {\r\n if (video.playing) {\r\n sessionStorage.autoPlaySupported = 'true';\r\n callback(true);\r\n\r\n } else {\r\n sessionStorage.autoPlaySupported = 'false';\r\n callback(false);\r\n }\r\n }\r\n\r\n } else {\r\n if (sessionStorage.autoPlaySupported == 'true') {\r\n callback(true);\r\n } else {\r\n callback(false);\r\n }\r\n }\r\n};\r\n\r\n\r\nconst removeElementsOnPlay = (\r\n el, \r\n opacity, \r\n excludeImg = false\r\n) => {\r\n\tif ( !el ) { return; }\r\n\r\n if (!excludeImg) {\r\n el\r\n .find('img:not(.js-play)')\r\n .css({ opacity: opacity });\r\n }\r\n\r\n el \r\n .find(selector.hideOnPlay)\r\n .css({ opacity: opacity }); \r\n};\r\n\r\nconst updateVideo = (\r\n parent, \r\n video\r\n) => {\r\n if (!parent || String(video.dataset.multiple) !== 'true') return;\r\n \r\n let images = parent.find('img:visible');\r\n \r\n let src = 'desktop';\r\n if (stokpressViewPort.documentWidth().width < 1024) {\r\n src = 'mobile';\r\n }\r\n \r\n var data = JSON.parse(video.dataset[src]);\r\n if (data.autoplay) {\r\n video.autoplay = true;\r\n video.muted = true;\r\n } else {\r\n video.autoplay = false;\r\n video.muted = false;\r\n }\r\n\r\n var source = video.querySelector('source'); \r\n if (data.src != source.src) {\r\n source.src = data.src;\r\n\r\n removeElementsOnPlay(parent, 1);\r\n if (images) $(video).css('zIndex', -1);\r\n }\r\n\r\n video.load(); \r\n};\r\n\r\n\r\nconst videoOnClick = (playVideo, videoParent) => {\r\n if (!playVideo) return;\r\n\r\n playVideo.off('click').on('click', e => {\r\n e.preventDefault();\r\n\r\n let targetParent = $(e.target).parents(selector.container);\r\n let targetVideo = targetParent.find( 'video' )[0];\r\n let hasLink = playVideo.hasClass('js-has-link'); //check if video has link\r\n const excludeImg = $(targetVideo).data('played');\r\n console.log(hasLink);\r\n\r\n if (targetVideo.paused == false) {\r\n targetVideo.pause();\r\n removeElementsOnPlay(videoParent, 1, excludeImg);\r\n } else {\r\n if (hasLink){\r\n playVideo.hide();\r\n }\r\n targetVideo.play();\r\n $(targetVideo).data('played', true);\r\n removeElementsOnPlay(videoParent, 0, excludeImg);\r\n }\r\n\r\n $(targetVideo).css('zIndex', 0);\r\n } );\r\n};\r\n\r\nconst flexibleVideo = () => {\r\n let jsVideo = $('video.js-video-tag');\r\n\r\n if (jsVideo.length === 0) return;\r\n\r\n jsVideo.each(function() {\r\n let _this = $(this);\r\n let videoParent = _this.parents(selector.container);\r\n let currentVideo = videoParent.find('video')[0];\r\n\r\n if (currentVideo) \r\n \r\n // Update video src based on window\r\n updateVideo(videoParent, currentVideo);\r\n\r\n // Autoplay\r\n isAutoplaySupported((canAutoplay)=>{\r\n if (_this.attr('autoplay') && canAutoplay) {\r\n _this.data('played', true);\r\n _this.css('zIndex', 0);\r\n removeElementsOnPlay(videoParent, 0);\r\n videoParent.find('.' + classes.playButton).hide();\r\n }\r\n }); \r\n\r\n // Play button event\r\n videoOnClick(videoParent.find('.' + classes.playButton), videoParent);\r\n });\r\n};\r\n\r\n$(window).on('resize', () => {\r\n flexibleVideo();\r\n});\r\n\r\nexport default flexibleVideo;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/flexible-video.js","export default {\r\n init() {\r\n // JavaScript to be fired on the home page\r\n },\r\n finalize() {\r\n // JavaScript to be fired on the home page, after the init JS\r\n },\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/routes/home.js","export default {\r\n init() {\r\n // JavaScript to be fired on the about us page\r\n },\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/routes/about.js","export const sliders = {\r\n init() {\r\n require('./category-slider');\r\n require('./product-slider');\r\n require('./feature-slider');\r\n require('./article-slider');\r\n require('./trustbar-slider');\r\n require('./quote');\r\n\r\n // IOS 13.1.3 Flickity Fix\r\n let touchingCarousel = false;\r\n let touchStartCoords;\r\n\r\n document.body.addEventListener('touchstart', function(e) {\r\n if (e.target.closest('.flickity-slider')) {\r\n touchingCarousel = true;\r\n } else {\r\n touchingCarousel = false;\r\n return;\r\n }\r\n\r\n touchStartCoords = {\r\n x: e.touches[0].pageX,\r\n y: e.touches[0].pageY,\r\n }\r\n });\r\n\r\n document.body.addEventListener('touchmove', function(e) {\r\n if (!(touchingCarousel && e.cancelable)) {\r\n return;\r\n }\r\n\r\n var moveVector = {\r\n x: e.touches[0].pageX - touchStartCoords.x,\r\n y: e.touches[0].pageY - touchStartCoords.y,\r\n };\r\n\r\n if (Math.abs(moveVector.x) > 7)\r\n e.preventDefault()\r\n\r\n }, {passive: false});\r\n },\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/sliders/index.js","let CategorySlider = {};\r\n\r\nCategorySlider = {\r\n init() {\r\n let $categorySlider = $('.js-category-slider');\r\n\r\n if ($categorySlider.length === 0) {\r\n return;\r\n }\r\n\r\n $.each($categorySlider, function(){\r\n let $slider = $(this);\r\n\r\n let options = {\r\n freeScroll: false,\r\n pageDots: true,\r\n groupCells: false,\r\n cellAlign: 'left',\r\n percentPosition: false,\r\n wrapAround: false,\r\n contain: true,\r\n dragThreshold: 20,\r\n prevNextButtons: true,\r\n selectedAttraction: 0.4,\r\n friction: 1.2,\r\n on: {\r\n ready: function() {\r\n $slider.removeClass('is-hidden');\r\n $slider.addClass('first-el');\r\n },\r\n },\r\n };\r\n\r\n if (matchMedia('screen and (min-width: 1024px)').matches) {\r\n options = {\r\n freeScroll: false,\r\n pageDots: false,\r\n groupCells: true,\r\n cellAlign: 'left',\r\n percentPosition: false,\r\n wrapAround: true,\r\n contain: false,\r\n prevNextButtons: true,\r\n selectedAttraction: 0.2,\r\n friction: 0.8,\r\n on: {\r\n ready: function() {\r\n $slider.removeClass('is-hidden');\r\n $slider.addClass('first-el');\r\n },\r\n },\r\n }\r\n }\r\n\r\n let flkty = $slider.flickity(options);\r\n let flktyData = $slider.data('flickity');\r\n\r\n if (matchMedia('screen and (max-width: 1023px)').matches) {\r\n flkty.on('change.flickity', function () {\r\n if (flktyData.selectedIndex == 0) {\r\n $slider.addClass('first-el');\r\n } else {\r\n $slider.removeClass('first-el');\r\n }\r\n });\r\n } else if (matchMedia('screen and (min-width: 1024px)').matches) {\r\n flkty.on('change.flickity', function () {\r\n if (flktyData.selectedIndex == 0) {\r\n $slider.addClass('is-indented');\r\n } else {\r\n $slider.removeClass('is-indented');\r\n }\r\n });\r\n }\r\n });\r\n },\r\n}\r\n\r\n$(function () {\r\n CategorySlider.init();\r\n\r\n $(window).resize(function () {\r\n CategorySlider.init();\r\n });\r\n});\r\n\r\nwindow.ProductSlider = CategorySlider;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/sliders/category-slider.js","let ProductSlider = {};\r\n\r\nProductSlider = {\r\n init() {\r\n let $productSlider = $('.js-product-slider');\r\n\r\n if ($productSlider.length === 0) {\r\n return;\r\n }\r\n\r\n $.each($productSlider, function(){\r\n let $slider = $(this);\r\n const $sliderIndex = $slider.attr('data-index');\r\n const prev = 'button[data-slider-button=\"js-product-slider-button-prev-' + $sliderIndex + '\"]';\r\n const next ='button[data-slider-button=\"js-product-slider-button-next-' + $sliderIndex + '\"]';\r\n const prevButton = $(prev);\r\n const nextButton = $(next);\r\n\r\n let options = {\r\n pageDots: true,\r\n groupCells: false,\r\n cellAlign: 'left',\r\n percentPosition: false,\r\n wrapAround: false,\r\n contain: true,\r\n dragThreshold: 10,\r\n prevNextButtons: true,\r\n on: {\r\n ready: function() {\r\n $slider.removeClass('is-hidden');\r\n $slider.addClass('first-el');\r\n },\r\n },\r\n };\r\n\r\n if (matchMedia('screen and (min-width: 768px)').matches) {\r\n options = {\r\n pageDots: false,\r\n groupCells: true,\r\n cellAlign: 'center',\r\n percentPosition: false,\r\n wrapAround: true,\r\n contain: false,\r\n dragThreshold: 15,\r\n prevNextButtons: true,\r\n on: {\r\n ready: function() {\r\n $slider.removeClass('is-hidden');\r\n $slider.addClass('first-el');\r\n },\r\n },\r\n }\r\n }\r\n\r\n let flkty = $slider.flickity(options);\r\n let flktyData = $slider.data('flickity');\r\n var count = flktyData.cells.length;\r\n\r\n\r\n if (count < 6) {\r\n options.groupCells = false\r\n options.wrapAround = false\r\n options.prevNextButtons = false\r\n options.contain = true\r\n\r\n if (count == 5) {\r\n $slider.addClass('is-indented');\r\n }\r\n\r\n $slider.flickity(options);\r\n $slider.addClass('no-prevnext');\r\n }\r\n\r\n if (count >= 6) {\r\n prevButton.on( 'click', function() {\r\n $slider.flickity('previous');\r\n });\r\n\r\n nextButton.on( 'click', function() {\r\n $slider.flickity('next');\r\n });\r\n }\r\n\r\n if (matchMedia('screen and (max-width: 767px)').matches) {\r\n flkty.on('change.flickity', function () {\r\n if (flktyData.selectedIndex == 0) {\r\n $slider.addClass('first-el');\r\n } else {\r\n $slider.removeClass('first-el');\r\n }\r\n });\r\n } else if (matchMedia('screen and (min-width: 768px)').matches) {\r\n flkty.on('change.flickity', function () {\r\n if (flktyData.selectedIndex == 0) {\r\n $slider.addClass('is-indented');\r\n } else {\r\n $slider.removeClass('is-indented');\r\n }\r\n });\r\n }\r\n });\r\n },\r\n}\r\n\r\n$(function () {\r\n ProductSlider.init();\r\n\r\n $(window).resize(function () {\r\n ProductSlider.init();\r\n });\r\n});\r\n\r\nwindow.ProductSlider = ProductSlider;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/sliders/product-slider.js","var FeatureSlider = {}, $featureSlider;\r\n\r\nFeatureSlider = {\r\n init() {\r\n $featureSlider = $('.js-feature-slider');\r\n\r\n if ($featureSlider.length === 0) {\r\n return;\r\n }\r\n\r\n $.each( $featureSlider, function() {\r\n let $slider = $(this),\r\n $autoplay = $slider.data('autoplay'),\r\n isInitialized = false;\r\n\r\n $slider.flickity({\r\n autoPlay: $autoplay,\r\n cellAlign: 'left',\r\n contain: true,\r\n prevNextButtons: false,\r\n pageDots: true,\r\n dragThreshold: 10,\r\n on: {\r\n ready: function () {\r\n if (matchMedia('screen and (max-width: 1023px)').matches) {\r\n isInitialized = true;\r\n }\r\n\r\n if (matchMedia('screen and (min-width: 1024px)').matches) {\r\n isInitialized = false;\r\n }\r\n\r\n if (isInitialized == false) {\r\n $slider.flickity('destroy');\r\n }\r\n },\r\n },\r\n });\r\n });\r\n },\r\n}\r\n\r\n$(function () {\r\n FeatureSlider.init();\r\n\r\n $(window).resize(function () {\r\n FeatureSlider.init();\r\n });\r\n});\r\n\r\nwindow.FeatureSlider = FeatureSlider;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/sliders/feature-slider.js","let ArticleSlider = {};\r\n\r\nArticleSlider.slider = function () {\r\n let $articleSlider = $('#article-slider');\r\n\r\n $articleSlider.on('ready.flickity', function () {\r\n $articleSlider.css('visibility', 'visible');\r\n });\r\n\r\n var options = {\r\n contain: true,\r\n cellAlign: 'left',\r\n groupCells: false,\r\n prevNextButtons: true,\r\n pageDots: true,\r\n dragThreshold: 10,\r\n };\r\n\r\n $articleSlider.flickity(options);\r\n\r\n let $prevButton = $('.js-flickity-prev');\r\n let $nextButton = $('.js-flickity-next');\r\n\r\n $prevButton.click(function () {\r\n $articleSlider.flickity('previous');\r\n });\r\n\r\n $nextButton.click(function () {\r\n $articleSlider.flickity('next');\r\n });\r\n};\r\n\r\nArticleSlider.slider();\r\n\r\n$(window).resize(function () {\r\n ArticleSlider.slider();\r\n});\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/sliders/article-slider.js","var TrustbarSlider = {}, isInitialized = false, $trustbarSlider;\r\n\r\nTrustbarSlider = {\r\n init() {\r\n $trustbarSlider = $('.js-trustbar-slider');\r\n\r\n if ($trustbarSlider.length === 0) {\r\n return;\r\n }\r\n\r\n $.each( $trustbarSlider, function() {\r\n let $slider = $(this),\r\n $autoplay = $slider.data('autoplay');\r\n\r\n $slider.flickity({\r\n autoPlay: $autoplay,\r\n pauseAutoPlayOnHover: false,\r\n cellAlign: 'left',\r\n contain: true,\r\n prevNextButtons: false,\r\n wrapAround: true,\r\n pageDots: true,\r\n dragThreshold: 10,\r\n on: {\r\n ready: function () {\r\n if (matchMedia('screen and (max-width: 1023px)').matches) {\r\n isInitialized = true;\r\n }\r\n },\r\n },\r\n });\r\n\r\n if (matchMedia('screen and (min-width: 1024px)').matches) {\r\n isInitialized = false;\r\n }\r\n\r\n if (isInitialized == false) {\r\n $slider.flickity('destroy');\r\n }\r\n } );\r\n },\r\n}\r\n\r\n$(function () {\r\n TrustbarSlider.init();\r\n\r\n $(window).resize(function () {\r\n TrustbarSlider.init();\r\n });\r\n});\r\n\r\nwindow.TrustbarSlider = TrustbarSlider;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/sliders/trustbar-slider.js","import Swiper, { Autoplay, Thumbs } from 'swiper';\r\nimport '../../vendor/jquery.rateyo';\r\n\r\nlet quoteSlider = {};\r\n\r\nquoteSlider.slider = function () {\r\n let quoteSwiper = $('.js-quote-slider');\r\n\r\n if (quoteSwiper.length === 0) {\r\n return;\r\n }\r\n\r\n $.each(quoteSwiper, function () {\r\n let slider = this;\r\n let quoteThumbsSwiper = null;\r\n let quoteThumbs = this.closest('.js-quote-wrapper').querySelector('.js-quote-thumbs');\r\n\r\n if (quoteThumbs) {\r\n quoteThumbsSwiper = new Swiper(quoteThumbs, {\r\n slidesPerView: 5,\r\n loop: false,\r\n freeMode: true,\r\n watchSlidesProgress: true,\r\n });\r\n }\r\n\r\n new Swiper(slider, {\r\n modules: [Autoplay, Thumbs],\r\n speed: 1000,\r\n autoplay: {\r\n delay: 3000,\r\n },\r\n thumbs: {\r\n swiper: quoteThumbsSwiper,\r\n },\r\n });\r\n });\r\n};\r\n\r\nquoteSlider.rating = function () {\r\n let rateYo = $('.js-rateYo');\r\n\r\n if (rateYo.length === 0) {\r\n return;\r\n }\r\n\r\n $.each(rateYo, function () {\r\n const _this = $(this);\r\n const maxRating = 5;\r\n\r\n let ratings = _this.data('rating');\r\n if (parseInt(ratings) > maxRating) {\r\n ratings = maxRating;\r\n }\r\n \r\n _this.rateYo({\r\n rating: ratings,\r\n numStars: maxRating,\r\n readOnly: true,\r\n spacing: '10px',\r\n starWidth: '24.9px',\r\n ratedFill: '#000000',\r\n }).find('.jq-ry-group:first > svg').css({\r\n 'fill': 'transparent',\r\n 'stroke': '#000',\r\n 'stroke-width': '17px',\r\n });\r\n });\r\n\r\n};\r\n\r\nquoteSlider.init = function () {\r\n quoteSlider.slider();\r\n quoteSlider.rating();\r\n};\r\n\r\nquoteSlider.init();\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/sliders/quote.js","/*****\r\n* rateyo - v2.3.5\r\n* http://prrashi.github.io/rateyo/\r\n* Copyright (c) 2014 Prashanth Pamidi; Licensed MIT\r\n*****/\r\n\r\n(function ($) {\r\n \"use strict\";\r\n\r\n // The basic svg string required to generate stars\r\n var BASICSTAR = \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\"+\r\n \"<svg version=\\\"1.1\\\"\"+\r\n \"xmlns=\\\"http://www.w3.org/2000/svg\\\"\"+\r\n \"viewBox=\\\"0 12.705 512 486.59\\\"\"+\r\n \"x=\\\"0px\\\" y=\\\"0px\\\"\"+\r\n \"xml:space=\\\"preserve\\\">\"+\r\n \"<polygon \"+\r\n \"points=\\\"256.814,12.705 317.205,198.566\"+\r\n \" 512.631,198.566 354.529,313.435 \"+\r\n \"414.918,499.295 256.814,384.427 \"+\r\n \"98.713,499.295 159.102,313.435 \"+\r\n \"1,198.566 196.426,198.566 \\\"/>\"+\r\n \"</svg>\";\r\n\r\n // The Default values of different options available in the Plugin\r\n var DEFAULTS = {\r\n\r\n starWidth : \"32px\",\r\n normalFill: \"gray\",\r\n ratedFill : \"#f39c12\",\r\n numStars : 5,\r\n maxValue : 5,\r\n precision : 1,\r\n rating : 0,\r\n fullStar : false,\r\n halfStar : false,\r\n readOnly : false,\r\n spacing : \"0px\",\r\n rtl : false,\r\n multiColor: null,\r\n onInit : null,\r\n onChange : null,\r\n onSet : null,\r\n starSvg : null,\r\n };\r\n\r\n //Default colors for multi-color rating\r\n var MULTICOLOR_OPTIONS = {\r\n\r\n startColor: \"#c0392b\", //red\r\n endColor : \"#f1c40f\", //yellow\r\n };\r\n\r\n // http://stackoverflow.com/questions/11381673/detecting-a-mobile-browser\r\n function isMobileBrowser () {\r\n var check = false;\r\n /* jshint ignore:start */\r\n (function(a){if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0,4)))check = true})(navigator.userAgent||navigator.vendor||window.opera);\r\n /* jshint ignore:end */\r\n return check;\r\n }\r\n\r\n function checkPrecision (value, minValue, maxValue) {\r\n\r\n /*\r\n * This function removes the unnecessary precision, at Min and Max Values\r\n */\r\n\r\n // Its like comparing 0.0 with 0, which is true\r\n if (value === minValue) {\r\n\r\n value = minValue;\r\n }\r\n else if(value === maxValue) {\r\n\r\n value = maxValue;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n function checkBounds (value, minValue, maxValue) {\r\n\r\n /*\r\n * Check if the value is between min and max values, if not, throw an error\r\n */\r\n\r\n var isValid = value >= minValue && value <= maxValue;\r\n\r\n if(!isValid){\r\n\r\n throw Error(\"Invalid Rating, expected value between \"+ minValue +\r\n \" and \" + maxValue);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n function isDefined(value) {\r\n\r\n // Better way to check if a variable is defined or not\r\n return typeof value !== \"undefined\";\r\n }\r\n\r\n // Regex to match Colors in Hex Format like #FF00FF\r\n var hexRegex = /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i;\r\n\r\n var hexToRGB = function (hex) {\r\n\r\n /*\r\n * Extracts and returns the Red, Blue, Green Channel values,\r\n * in the form of decimals\r\n */\r\n\r\n if (!hexRegex.test(hex)) {\r\n\r\n return null;\r\n }\r\n\r\n var hexValues = hexRegex.exec(hex),\r\n r = parseInt(hexValues[1], 16),\r\n g = parseInt(hexValues[2], 16),\r\n b = parseInt(hexValues[3], 16);\r\n\r\n return {r:r, g:g, b:b};\r\n };\r\n\r\n function getChannelValue(startVal, endVal, percent) {\r\n\r\n /*\r\n * Returns a value between `startVal` and `endVal` based on the percent\r\n */\r\n\r\n var newVal = (endVal - startVal)*(percent/100);\r\n\r\n newVal = Math.round(startVal + newVal).toString(16);\r\n\r\n if (newVal.length === 1) {\r\n\r\n newVal = \"0\" + newVal;\r\n }\r\n\r\n return newVal;\r\n }\r\n\r\n function getColor (startColor, endColor, percent) {\r\n\r\n /*\r\n * Given the percentage( `percent` ) of `endColor` to be mixed\r\n * with the `startColor`, returns the mixed color.\r\n * Colors should be only in Hex Format\r\n */\r\n\r\n if (!startColor || !endColor) {\r\n\r\n return null;\r\n }\r\n\r\n percent = isDefined(percent)? percent : 0;\r\n\r\n startColor = hexToRGB(startColor);\r\n endColor = hexToRGB(endColor);\r\n\r\n var r = getChannelValue(startColor.r, endColor.r, percent),\r\n b = getChannelValue(startColor.b, endColor.b, percent),\r\n g = getChannelValue(startColor.g, endColor.g, percent);\r\n\r\n return \"#\" + r + g + b;\r\n }\r\n\r\n function RateYo ($node, options) {\r\n\r\n /*\r\n * The Contructor, whose instances are used by plugin itself\r\n */\r\n\r\n // Storing the HTML element as a property, for future access\r\n this.node = $node.get(0);\r\n\r\n var that = this;\r\n\r\n // Remove any stuff that is present inside the container, and add the plugin class\r\n $node.empty().addClass(\"jq-ry-container\");\r\n\r\n /*\r\n * Basically the plugin displays the rating using two rows of stars lying one above\r\n * the other, the row that is on the top represents the actual rating, and the one\r\n * behind acts just like a background.\r\n *\r\n * `$groupWrapper`: is an element that wraps both the rows\r\n * `$normalGroup`: is the container for row of stars thats behind and\r\n * acts as background\r\n * `$ratedGroup`: is the container for row of stars that display the actual rating.\r\n *\r\n * The rating is displayed by adjusting the width of `$ratedGroup`\r\n */\r\n var $groupWrapper = $(\"<div/>\").addClass(\"jq-ry-group-wrapper\")\r\n .appendTo($node);\r\n\r\n var $normalGroup = $(\"<div/>\").addClass(\"jq-ry-normal-group\")\r\n .addClass(\"jq-ry-group\")\r\n .appendTo($groupWrapper);\r\n\r\n var $ratedGroup = $(\"<div/>\").addClass(\"jq-ry-rated-group\")\r\n .addClass(\"jq-ry-group\")\r\n .appendTo($groupWrapper);\r\n\r\n /*\r\n * Variable `step`: store the value of the rating for each star\r\n * eg: if `maxValue` is 5 and `numStars` is 5, value of each star\r\n * is 1.\r\n * Variable `starWidth`: stores the decimal value of width of star in units of px\r\n * Variable `percentOfStar`: stores the percentage of width each star takes w.r.t\r\n * the container\r\n * Variable `spacing`: stores the decimal value of the spacing between stars\r\n * in the units of px\r\n * Variable `percentOfSpacing`: stores the percentage of width of the spacing\r\n * between stars w.r.t the container\r\n */\r\n var step, starWidth, percentOfStar, spacing,\r\n percentOfSpacing, containerWidth, minValue = 0;\r\n\r\n /*\r\n * `currentRating` contains rating that is being displayed at the latest point of\r\n * time.\r\n *\r\n * When ever you hover over the plugin UI, the rating value changes\r\n * according to the place where you point the cursor, currentRating contains\r\n * the current value of rating that is being shown in the UI\r\n */\r\n var currentRating = options.rating;\r\n\r\n // A flag to store if the plugin is already being displayed in the UI\r\n var isInitialized = false;\r\n\r\n function showRating (ratingVal) {\r\n\r\n /*\r\n * The function is responsible for displaying the rating by changing\r\n * the width of `$ratedGroup`\r\n */\r\n\r\n if (!isDefined(ratingVal)) {\r\n\r\n ratingVal = options.rating;\r\n }\r\n\r\n // Storing the value that is being shown in `currentRating`.\r\n currentRating = ratingVal;\r\n\r\n var numStarsToShow = ratingVal/step;\r\n\r\n // calculating the percentage of width of $ratedGroup with respect to its parent\r\n var percent = numStarsToShow*percentOfStar;\r\n\r\n if (numStarsToShow > 1) {\r\n\r\n // adding the percentage of space that is taken by the gap the stars\r\n percent += (Math.ceil(numStarsToShow) - 1)*percentOfSpacing;\r\n }\r\n\r\n setRatedFill(options.ratedFill);\r\n\r\n percent = options.rtl ? 100 - percent : percent;\r\n\r\n if (percent < 0) {\r\n\r\n percent = 0;\r\n } else if (percent > 100) {\r\n\r\n percent = 100;\r\n }\r\n\r\n $ratedGroup.css(\"width\", percent + \"%\");\r\n }\r\n\r\n function setContainerWidth () {\r\n\r\n /*\r\n * Set the width of the `this.node` based on the width of each star and\r\n * the space between them\r\n */\r\n\r\n containerWidth = starWidth*options.numStars + spacing*(options.numStars - 1);\r\n\r\n percentOfStar = (starWidth/containerWidth)*100;\r\n\r\n percentOfSpacing = (spacing/containerWidth)*100;\r\n\r\n $node.width(containerWidth);\r\n\r\n showRating();\r\n }\r\n\r\n function setStarWidth (newWidth) {\r\n\r\n /*\r\n * Set the width and height of each SVG star, called whenever one changes the\r\n * `starWidth` option\r\n */\r\n\r\n // The width and height of the star should be the same\r\n var starHeight = options.starWidth = newWidth;\r\n\r\n starWidth = window.parseFloat(options.starWidth.replace(\"px\", \"\"));\r\n\r\n $normalGroup.find(\"svg\")\r\n .attr({width : options.starWidth,\r\n height: starHeight});\r\n\r\n $ratedGroup.find(\"svg\")\r\n .attr({width : options.starWidth,\r\n height: starHeight});\r\n\r\n setContainerWidth();\r\n\r\n return $node;\r\n }\r\n\r\n function setSpacing (newSpacing) {\r\n\r\n /*\r\n * Set spacing between the SVG stars, called whenever one changes\r\n * the `spacing` option\r\n */\r\n\r\n options.spacing = newSpacing;\r\n\r\n spacing = parseFloat(options.spacing.replace(\"px\", \"\"));\r\n\r\n $normalGroup.find(\"svg:not(:first-child)\")\r\n .css({\"margin-left\": newSpacing});\r\n\r\n $ratedGroup.find(\"svg:not(:first-child)\")\r\n .css({\"margin-left\": newSpacing});\r\n\r\n setContainerWidth();\r\n\r\n return $node;\r\n }\r\n\r\n function setNormalFill (newFill) {\r\n\r\n /*\r\n * Set the background fill of the Stars, called whenever one changes the\r\n * `normalFill` option\r\n */\r\n\r\n options.normalFill = newFill;\r\n\r\n var $svgs = (options.rtl ? $ratedGroup : $normalGroup).find(\"svg\");\r\n\r\n $svgs.attr({fill: options.normalFill});\r\n\r\n return $node;\r\n }\r\n\r\n /*\r\n * Store the recent `ratedFill` option in a variable\r\n * so that if multiColor is unset, we can use the perviously set `ratedFill`\r\n * from this variable\r\n */\r\n var ratedFill = options.ratedFill;\r\n\r\n function setRatedFill (newFill) {\r\n\r\n /*\r\n * Set ratedFill of the stars, called when one changes the `ratedFill` option\r\n */\r\n\r\n /*\r\n * If `multiColor` option is set, `newFill` variable is dynamically set\r\n * based on the rating, what ever set as parameter will be discarded\r\n */\r\n if (options.multiColor) {\r\n\r\n var ratingDiff = currentRating - minValue,\r\n percentCovered = (ratingDiff/options.maxValue)*100;\r\n\r\n var colorOpts = options.multiColor || {},\r\n startColor = colorOpts.startColor || MULTICOLOR_OPTIONS.startColor,\r\n endColor = colorOpts.endColor || MULTICOLOR_OPTIONS.endColor;\r\n\r\n newFill = getColor(startColor, endColor, percentCovered);\r\n } else {\r\n\r\n ratedFill = newFill;\r\n }\r\n\r\n options.ratedFill = newFill;\r\n\r\n var $svgs = (options.rtl ? $normalGroup : $ratedGroup).find(\"svg\");\r\n\r\n $svgs.attr({fill: options.ratedFill});\r\n\r\n return $node;\r\n }\r\n\r\n function setRtl (newValue) {\r\n\r\n newValue = !!newValue;\r\n\r\n options.rtl = newValue;\r\n\r\n setNormalFill(options.normalFill);\r\n showRating();\r\n }\r\n\r\n function setMultiColor (colorOptions) {\r\n\r\n /*\r\n * called whenever one changes the `multiColor` option\r\n */\r\n\r\n options.multiColor = colorOptions;\r\n\r\n // set the recently set `ratedFill` option, if multiColor Options are unset\r\n setRatedFill(colorOptions ? colorOptions : ratedFill);\r\n }\r\n\r\n function setNumStars (newValue) {\r\n\r\n /*\r\n * Set the number of stars to use to display the rating, called whenever one\r\n * changes the `numStars` option\r\n */\r\n\r\n options.numStars = newValue;\r\n\r\n step = options.maxValue/options.numStars;\r\n\r\n $normalGroup.empty();\r\n $ratedGroup.empty();\r\n\r\n for (var i=0; i<options.numStars; i++) {\r\n\r\n $normalGroup.append($(options.starSvg || BASICSTAR));\r\n $ratedGroup.append($(options.starSvg || BASICSTAR));\r\n }\r\n\r\n setStarWidth(options.starWidth);\r\n setNormalFill(options.normalFill);\r\n setSpacing(options.spacing);\r\n\r\n showRating();\r\n\r\n return $node;\r\n }\r\n\r\n function setMaxValue (newValue) {\r\n\r\n /*\r\n * set the Maximum Value of rating to be allowed, called whenever\r\n * one changes the `maxValue` option\r\n */\r\n\r\n options.maxValue = newValue;\r\n\r\n step = options.maxValue/options.numStars;\r\n\r\n if (options.rating > newValue) {\r\n\r\n setRating(newValue);\r\n }\r\n\r\n showRating();\r\n\r\n return $node;\r\n }\r\n\r\n function setPrecision (newValue) {\r\n\r\n /*\r\n * Set the precision of the rating value, called if one changes the\r\n * `precision` option\r\n */\r\n\r\n options.precision = newValue;\r\n\r\n setRating(options.rating);\r\n\r\n return $node;\r\n }\r\n\r\n function setHalfStar (newValue) {\r\n\r\n /*\r\n * This function will be called if one changes the `halfStar` option\r\n */\r\n\r\n options.halfStar = newValue;\r\n\r\n return $node;\r\n }\r\n\r\n function setFullStar (newValue) {\r\n\r\n /*\r\n * This function will be called if one changes the `fullStar` option\r\n */\r\n\r\n options.fullStar = newValue;\r\n\r\n return $node;\r\n }\r\n\r\n function round (value) {\r\n\r\n /*\r\n * Rounds the value of rating if `halfStar` or `fullStar` options are chosen\r\n */\r\n\r\n var remainder = value%step,\r\n halfStep = step/2,\r\n isHalfStar = options.halfStar,\r\n isFullStar = options.fullStar;\r\n\r\n if (!isFullStar && !isHalfStar) {\r\n\r\n return value;\r\n }\r\n\r\n if (isFullStar || (isHalfStar && remainder > halfStep)) {\r\n\r\n value += step - remainder;\r\n } else {\r\n\r\n value = value - remainder;\r\n\r\n if (remainder > 0) {\r\n\r\n value += halfStep;\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n\r\n function calculateRating (e) {\r\n\r\n /*\r\n * Calculates and returns the rating based on the position of cursor w.r.t the\r\n * plugin container\r\n */\r\n\r\n var position = $normalGroup.offset(),\r\n nodeStartX = position.left,\r\n nodeEndX = nodeStartX + $normalGroup.width();\r\n\r\n var maxValue = options.maxValue;\r\n\r\n // The x-coordinate(position) of the mouse pointer w.r.t page\r\n var pageX = e.pageX;\r\n\r\n var calculatedRating = 0;\r\n\r\n // If the mouse pointer is to the left of the container\r\n if(pageX < nodeStartX) {\r\n\r\n calculatedRating = minValue;\r\n }else if (pageX > nodeEndX) { // If the mouse pointer is right of the container\r\n\r\n calculatedRating = maxValue;\r\n }else { // If the mouse pointer is inside the continer\r\n\r\n /*\r\n * The fraction of width covered by the pointer w.r.t to the total width\r\n * of the container.\r\n */\r\n var calcPrcnt = ((pageX - nodeStartX)/(nodeEndX - nodeStartX));\r\n\r\n if (spacing > 0) {\r\n\r\n /*\r\n * If there is spacing between stars, take the percentage of width covered\r\n * and subtract the percentage of width covered by stars and spacing, to find\r\n * how many stars are covered, the number of stars covered is the rating\r\n *\r\n * TODO: I strongly feel that this logic can be improved!, Please help!\r\n */\r\n calcPrcnt *= 100;\r\n\r\n var remPrcnt = calcPrcnt;\r\n\r\n while (remPrcnt > 0) {\r\n\r\n if (remPrcnt > percentOfStar) {\r\n\r\n calculatedRating += step;\r\n remPrcnt -= (percentOfStar + percentOfSpacing);\r\n } else {\r\n\r\n calculatedRating += remPrcnt/percentOfStar*step;\r\n remPrcnt = 0;\r\n }\r\n }\r\n } else {\r\n\r\n /*\r\n * If there is not spacing between stars, the fraction of width covered per\r\n * `maxValue` is the rating\r\n */\r\n calculatedRating = calcPrcnt * (options.maxValue);\r\n }\r\n\r\n // Round the rating if `halfStar` or `fullStar` options are chosen\r\n calculatedRating = round(calculatedRating);\r\n }\r\n\r\n if (options.rtl) {\r\n\r\n calculatedRating = maxValue - calculatedRating;\r\n }\r\n\r\n return parseFloat(calculatedRating);\r\n }\r\n\r\n function setReadOnly (newValue) {\r\n\r\n /*\r\n * UnBinds mouse event handlers, called when whenever one changes the\r\n * `readOnly` option\r\n */\r\n\r\n options.readOnly = newValue;\r\n\r\n $node.attr(\"readonly\", true);\r\n\r\n unbindEvents();\r\n\r\n if (!newValue) {\r\n\r\n $node.removeAttr(\"readonly\");\r\n\r\n bindEvents();\r\n }\r\n\r\n return $node;\r\n }\r\n\r\n function setRating (newValue) {\r\n\r\n /*\r\n * Sets the rating of the Plugin, Called when option `rating` is changed\r\n * or, when `rating` method is called\r\n */\r\n\r\n var rating = newValue;\r\n\r\n var maxValue = options.maxValue;\r\n\r\n if (typeof rating === \"string\") {\r\n\r\n // If rating is given in percentage, maxValue should be 100\r\n if (rating[rating.length - 1] === \"%\") {\r\n\r\n rating = rating.substr(0, rating.length - 1);\r\n maxValue = 100;\r\n\r\n setMaxValue(maxValue);\r\n }\r\n\r\n rating = parseFloat(rating);\r\n }\r\n\r\n checkBounds(rating, minValue, maxValue);\r\n\r\n rating = parseFloat(rating.toFixed(options.precision));\r\n\r\n checkPrecision(parseFloat(rating), minValue, maxValue);\r\n\r\n options.rating = rating;\r\n\r\n showRating();\r\n\r\n if (isInitialized) {\r\n\r\n $node.trigger(\"rateyo.set\", {rating: rating});\r\n }\r\n\r\n return $node;\r\n }\r\n\r\n function setOnInit (method) {\r\n\r\n /*\r\n * set what method to be called on Initialization\r\n */\r\n\r\n options.onInit = method;\r\n\r\n return $node;\r\n }\r\n\r\n function setOnSet (method) {\r\n\r\n /*\r\n * set what method to be called when rating is set\r\n */\r\n\r\n options.onSet = method;\r\n\r\n return $node;\r\n }\r\n\r\n function setOnChange (method) {\r\n\r\n /*\r\n * set what method to be called rating in the UI is changed\r\n */\r\n\r\n options.onChange = method;\r\n\r\n return $node;\r\n }\r\n\r\n this.rating = function (newValue) {\r\n\r\n /*\r\n * rating getter/setter\r\n */\r\n\r\n if (!isDefined(newValue)) {\r\n\r\n return options.rating;\r\n }\r\n\r\n setRating(newValue);\r\n\r\n return $node;\r\n };\r\n\r\n this.destroy = function () {\r\n\r\n /*\r\n * Removes the Rating UI by clearing the content, and removing the custom classes\r\n */\r\n\r\n if (!options.readOnly) {\r\n\r\n unbindEvents();\r\n }\r\n\r\n RateYo.prototype.collection = deleteInstance($node.get(0),\r\n this.collection);\r\n\r\n $node.removeClass(\"jq-ry-container\").children().remove();\r\n\r\n return $node;\r\n };\r\n\r\n this.method = function (methodName) {\r\n\r\n /*\r\n * Method to call the methods of RateYo Instance\r\n */\r\n\r\n if (!methodName) {\r\n\r\n throw Error(\"Method name not specified!\");\r\n }\r\n\r\n if (!isDefined(this[methodName])) {\r\n\r\n throw Error(\"Method \" + methodName + \" doesn't exist!\");\r\n }\r\n\r\n var args = Array.prototype.slice.apply(arguments, []),\r\n params = args.slice(1),\r\n method = this[methodName];\r\n\r\n return method.apply(this, params);\r\n };\r\n\r\n this.option = function (optionName, param) {\r\n\r\n /*\r\n * Method to get/set Options\r\n */\r\n\r\n if (!isDefined(optionName)) {\r\n\r\n return options;\r\n }\r\n\r\n var method;\r\n\r\n switch (optionName) {\r\n\r\n case \"starWidth\":\r\n\r\n method = setStarWidth;\r\n break;\r\n case \"numStars\":\r\n\r\n method = setNumStars;\r\n break;\r\n case \"normalFill\":\r\n\r\n method = setNormalFill;\r\n break;\r\n case \"ratedFill\":\r\n\r\n method = setRatedFill;\r\n break;\r\n case \"multiColor\":\r\n\r\n method = setMultiColor;\r\n break;\r\n case \"maxValue\":\r\n\r\n method = setMaxValue;\r\n break;\r\n case \"precision\":\r\n\r\n method = setPrecision;\r\n break;\r\n case \"rating\":\r\n\r\n method = setRating;\r\n break;\r\n case \"halfStar\":\r\n\r\n method = setHalfStar;\r\n break;\r\n case \"fullStar\":\r\n\r\n method = setFullStar;\r\n break;\r\n case \"readOnly\":\r\n\r\n method = setReadOnly;\r\n break;\r\n case \"spacing\":\r\n\r\n method = setSpacing;\r\n break;\r\n case \"rtl\":\r\n\r\n method = setRtl;\r\n break;\r\n case \"onInit\":\r\n\r\n method = setOnInit;\r\n break;\r\n case \"onSet\":\r\n\r\n method = setOnSet;\r\n break;\r\n case \"onChange\":\r\n\r\n method = setOnChange;\r\n break;\r\n default:\r\n\r\n throw Error(\"No such option as \" + optionName);\r\n }\r\n\r\n return isDefined(param) ? method(param) : options[optionName];\r\n };\r\n\r\n function onMouseEnter (e) {\r\n\r\n /*\r\n * If the Mouse Pointer is inside the container, calculate and show the rating\r\n * in UI\r\n */\r\n\r\n var rating = calculateRating(e).toFixed(options.precision);\r\n\r\n var maxValue = options.maxValue;\r\n\r\n rating = checkPrecision(parseFloat(rating), minValue, maxValue);\r\n\r\n showRating(rating);\r\n\r\n $node.trigger(\"rateyo.change\", {rating: rating});\r\n }\r\n\r\n function onMouseLeave () {\r\n if (isMobileBrowser()) {\r\n return;\r\n }\r\n\r\n /*\r\n * If mouse leaves, revert the rating in UI to previously set rating,\r\n * when empty value is passed to showRating, it will take the previously set\r\n * rating\r\n */\r\n\r\n showRating();\r\n\r\n $node.trigger(\"rateyo.change\", {rating: options.rating});\r\n }\r\n\r\n function onMouseClick (e) {\r\n\r\n /*\r\n * On clicking the mouse inside the container, calculate and set the rating\r\n */\r\n\r\n var resultantRating = calculateRating(e).toFixed(options.precision);\r\n resultantRating = parseFloat(resultantRating);\r\n\r\n that.rating(resultantRating);\r\n }\r\n\r\n function onInit(e, data) {\r\n\r\n if(options.onInit && typeof options.onInit === \"function\") {\r\n\r\n /* jshint validthis:true */\r\n options.onInit.apply(this, [data.rating, that]);\r\n }\r\n }\r\n\r\n function onChange (e, data) {\r\n\r\n if(options.onChange && typeof options.onChange === \"function\") {\r\n\r\n /* jshint validthis:true */\r\n options.onChange.apply(this, [data.rating, that]);\r\n }\r\n }\r\n\r\n function onSet (e, data) {\r\n\r\n if(options.onSet && typeof options.onSet === \"function\") {\r\n\r\n /* jshint validthis:true */\r\n options.onSet.apply(this, [data.rating, that]);\r\n }\r\n }\r\n\r\n function bindEvents () {\r\n\r\n $node.on(\"mousemove\", onMouseEnter)\r\n .on(\"mouseenter\", onMouseEnter)\r\n .on(\"mouseleave\", onMouseLeave)\r\n .on(\"click\", onMouseClick)\r\n .on(\"rateyo.init\", onInit)\r\n .on(\"rateyo.change\", onChange)\r\n .on(\"rateyo.set\", onSet);\r\n }\r\n\r\n function unbindEvents () {\r\n\r\n $node.off(\"mousemove\", onMouseEnter)\r\n .off(\"mouseenter\", onMouseEnter)\r\n .off(\"mouseleave\", onMouseLeave)\r\n .off(\"click\", onMouseClick)\r\n .off(\"rateyo.init\", onInit)\r\n .off(\"rateyo.change\", onChange)\r\n .off(\"rateyo.set\", onSet);\r\n }\r\n\r\n setNumStars(options.numStars);\r\n setReadOnly(options.readOnly);\r\n\r\n if (options.rtl) {\r\n\r\n setRtl(options.rtl);\r\n }\r\n\r\n this.collection.push(this);\r\n this.rating(options.rating, true);\r\n\r\n isInitialized = true;\r\n $node.trigger(\"rateyo.init\", {rating: options.rating});\r\n }\r\n\r\n RateYo.prototype.collection = [];\r\n\r\n function getInstance (node, collection) {\r\n\r\n /*\r\n * Given a HTML element (node) and a collection of RateYo instances,\r\n * this function will search through the collection and return the matched\r\n * instance having the node\r\n */\r\n\r\n var instance;\r\n\r\n $.each(collection, function () {\r\n\r\n if(node === this.node){\r\n\r\n instance = this;\r\n return false;\r\n }\r\n });\r\n\r\n return instance;\r\n }\r\n\r\n function deleteInstance (node, collection) {\r\n\r\n /*\r\n * Given a HTML element (node) and a collection of RateYo instances,\r\n * this function will search through the collection and delete the\r\n * instance having the node, and return the modified collection\r\n */\r\n\r\n $.each(collection, function (index) {\r\n\r\n if (node === this.node) {\r\n\r\n var firstPart = collection.slice(0, index),\r\n secondPart = collection.slice(index+1, collection.length);\r\n\r\n collection = firstPart.concat(secondPart);\r\n\r\n return false;\r\n }\r\n });\r\n\r\n return collection;\r\n }\r\n\r\n function _rateYo (options) {\r\n\r\n var rateYoInstances = RateYo.prototype.collection;\r\n\r\n /* jshint validthis:true */\r\n var $nodes = $(this);\r\n\r\n if($nodes.length === 0) {\r\n\r\n return $nodes;\r\n }\r\n\r\n var args = Array.prototype.slice.apply(arguments, []);\r\n\r\n if (args.length === 0) {\r\n\r\n //If args length is 0, Initialize the UI with default settings\r\n options = args[0] = {};\r\n }else if (args.length === 1 && typeof args[0] === \"object\") {\r\n\r\n //If an Object is specified as first argument, it is considered as options\r\n options = args[0];\r\n }else if (args.length >= 1 && typeof args[0] === \"string\") {\r\n\r\n /*\r\n * if there is only one argument, and if its a string, it is supposed to be a\r\n * method name, if more than one argument is specified, the remaining arguments\r\n * except the first argument, will be passed as a params to the specified method\r\n */\r\n\r\n var methodName = args[0],\r\n params = args.slice(1);\r\n\r\n var result = [];\r\n\r\n $.each($nodes, function (i, node) {\r\n\r\n var existingInstance = getInstance(node, rateYoInstances);\r\n\r\n if(!existingInstance) {\r\n\r\n throw Error(\"Trying to set options before even initialization\");\r\n }\r\n\r\n var method = existingInstance[methodName];\r\n\r\n if (!method) {\r\n\r\n throw Error(\"Method \" + methodName + \" does not exist!\");\r\n }\r\n\r\n var returnVal = method.apply(existingInstance, params);\r\n\r\n result.push(returnVal);\r\n });\r\n\r\n /*\r\n * If the plugin in being called on only one jQuery Element, return only the\r\n * first value, to support chaining.\r\n */\r\n result = result.length === 1? result[0]: result;\r\n\r\n return result;\r\n }else {\r\n\r\n throw Error(\"Invalid Arguments\");\r\n }\r\n\r\n /*\r\n * if only options are passed, extend default options, and if the plugin is not\r\n * initialized on a particular jQuery element, initalize RateYo on it\r\n */\r\n options = $.extend({}, DEFAULTS, options);\r\n\r\n return $.each($nodes, function () {\r\n\r\n var existingInstance = getInstance(this, rateYoInstances);\r\n\r\n if (existingInstance) {\r\n\r\n return existingInstance;\r\n }\r\n\r\n var $node = $(this),\r\n dataAttrs = {},\r\n optionsCopy = $.extend({}, options);\r\n\r\n $.each($node.data(), function (key, value) {\r\n\r\n if (key.indexOf(\"rateyo\") !== 0) {\r\n\r\n return;\r\n }\r\n\r\n var optionName = key.replace(/^rateyo/, \"\");\r\n\r\n optionName = optionName[0].toLowerCase() + optionName.slice(1);\r\n\r\n dataAttrs[optionName] = value;\r\n\r\n delete optionsCopy[optionName];\r\n });\r\n\r\n return new RateYo($(this), $.extend({}, dataAttrs, optionsCopy));\r\n });\r\n }\r\n\r\n function rateYo () {\r\n\r\n /* jshint validthis:true */\r\n return _rateYo.apply(this, Array.prototype.slice.apply(arguments, []));\r\n }\r\n\r\n window.RateYo = RateYo;\r\n $.fn.rateYo = rateYo;\r\n\r\n}(window.jQuery));\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/vendor/jquery.rateyo.js","function _extends(){return(_extends=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t}).apply(this,arguments)}function _typeof(t){return(_typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}!function(t,e){\"object\"===(\"undefined\"==typeof exports?\"undefined\":_typeof(exports))&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.LazyLoad=e()}(this,function(){\"use strict\";var t=\"undefined\"!=typeof window,e=t&&!(\"onscroll\"in window)||\"undefined\"!=typeof navigator&&/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent),n=t&&\"IntersectionObserver\"in window,o=t&&\"classList\"in document.createElement(\"p\"),r={elements_selector:\"img\",container:e||t?document:null,threshold:300,thresholds:null,data_src:\"src\",data_srcset:\"srcset\",data_sizes:\"sizes\",data_bg:\"bg\",class_loading:\"loading\",class_loaded:\"loaded\",class_error:\"error\",load_delay:0,auto_unobserve:!0,callback_enter:null,callback_exit:null,callback_reveal:null,callback_loaded:null,callback_error:null,callback_finish:null,use_native:!1},a=function(t,e){var n,o=new t(e);try{n=new CustomEvent(\"LazyLoad::Initialized\",{detail:{instance:o}})}catch(t){(n=document.createEvent(\"CustomEvent\")).initCustomEvent(\"LazyLoad::Initialized\",!1,!1,{instance:o})}window.dispatchEvent(n)};var i=function(t,e){return t.getAttribute(\"data-\"+e)},s=function(t,e,n){var o=\"data-\"+e;null!==n?t.setAttribute(o,n):t.removeAttribute(o)},c=function(t){return\"true\"===i(t,\"was-processed\")},l=function(t,e){return s(t,\"ll-timeout\",e)},u=function(t){return i(t,\"ll-timeout\")},d=function(t,e){t&&t(e)},f=function(t,e){t._loadingCount+=e,0===t._elements.length&&0===t._loadingCount&&d(t._settings.callback_finish)},_=function(t){for(var e,n=[],o=0;e=t.children[o];o+=1)\"SOURCE\"===e.tagName&&n.push(e);return n},v=function(t,e,n){n&&t.setAttribute(e,n)},g=function(t,e){v(t,\"sizes\",i(t,e.data_sizes)),v(t,\"srcset\",i(t,e.data_srcset)),v(t,\"src\",i(t,e.data_src))},m={IMG:function(t,e){var n=t.parentNode;n&&\"PICTURE\"===n.tagName&&_(n).forEach(function(t){g(t,e)});g(t,e)},IFRAME:function(t,e){v(t,\"src\",i(t,e.data_src))},VIDEO:function(t,e){_(t).forEach(function(t){v(t,\"src\",i(t,e.data_src))}),v(t,\"src\",i(t,e.data_src)),t.load()}},b=function(t,e){var n,o,r=e._settings,a=t.tagName,s=m[a];if(s)return s(t,r),f(e,1),void(e._elements=(n=e._elements,o=t,n.filter(function(t){return t!==o})));!function(t,e){var n=i(t,e.data_src),o=i(t,e.data_bg);n&&(t.style.backgroundImage='url(\"'.concat(n,'\")')),o&&(t.style.backgroundImage=o)}(t,r)},h=function(t,e){o?t.classList.add(e):t.className+=(t.className?\" \":\"\")+e},p=function(t,e,n){t.addEventListener(e,n)},y=function(t,e,n){t.removeEventListener(e,n)},E=function(t,e,n){y(t,\"load\",e),y(t,\"loadeddata\",e),y(t,\"error\",n)},w=function(t,e,n){var r=n._settings,a=e?r.class_loaded:r.class_error,i=e?r.callback_loaded:r.callback_error,s=t.target;!function(t,e){o?t.classList.remove(e):t.className=t.className.replace(new RegExp(\"(^|\\\\s+)\"+e+\"(\\\\s+|$)\"),\" \").replace(/^\\s+/,\"\").replace(/\\s+$/,\"\")}(s,r.class_loading),h(s,a),d(i,s),f(n,-1)},I=function(t,e){var n=function n(r){w(r,!0,e),E(t,n,o)},o=function o(r){w(r,!1,e),E(t,n,o)};!function(t,e,n){p(t,\"load\",e),p(t,\"loadeddata\",e),p(t,\"error\",n)}(t,n,o)},k=[\"IMG\",\"IFRAME\",\"VIDEO\"],A=function(t,e){var n=e._observer;z(t,e),n&&e._settings.auto_unobserve&&n.unobserve(t)},L=function(t){var e=u(t);e&&(clearTimeout(e),l(t,null))},x=function(t,e){var n=e._settings.load_delay,o=u(t);o||(o=setTimeout(function(){A(t,e),L(t)},n),l(t,o))},z=function(t,e,n){var o=e._settings;!n&&c(t)||(k.indexOf(t.tagName)>-1&&(I(t,e),h(t,o.class_loading)),b(t,e),function(t){s(t,\"was-processed\",\"true\")}(t),d(o.callback_reveal,t),d(o.callback_set,t))},O=function(t){return!!n&&(t._observer=new IntersectionObserver(function(e){e.forEach(function(e){return function(t){return t.isIntersecting||t.intersectionRatio>0}(e)?function(t,e){var n=e._settings;d(n.callback_enter,t),n.load_delay?x(t,e):A(t,e)}(e.target,t):function(t,e){var n=e._settings;d(n.callback_exit,t),n.load_delay&&L(t)}(e.target,t)})},{root:(e=t._settings).container===document?null:e.container,rootMargin:e.thresholds||e.threshold+\"px\"}),!0);var e},N=[\"IMG\",\"IFRAME\"],C=function(t,e){return function(t){return t.filter(function(t){return!c(t)})}((n=t||function(t){return t.container.querySelectorAll(t.elements_selector)}(e),Array.prototype.slice.call(n)));var n},M=function(t,e){this._settings=function(t){return _extends({},r,t)}(t),this._loadingCount=0,O(this),this.update(e)};return M.prototype={update:function(t){var n,o=this,r=this._settings;(this._elements=C(t,r),!e&&this._observer)?(function(t){return t.use_native&&\"loading\"in HTMLImageElement.prototype}(r)&&((n=this)._elements.forEach(function(t){-1!==N.indexOf(t.tagName)&&(t.setAttribute(\"loading\",\"lazy\"),z(t,n))}),this._elements=C(t,r)),this._elements.forEach(function(t){o._observer.observe(t)})):this.loadAll()},destroy:function(){var t=this;this._observer&&(this._elements.forEach(function(e){t._observer.unobserve(e)}),this._observer=null),this._elements=null,this._settings=null},load:function(t,e){z(t,this,e)},loadAll:function(){var t=this;this._elements.forEach(function(e){A(e,t)})}},t&&function(t,e){if(e)if(e.length)for(var n,o=0;n=e[o];o+=1)a(t,n);else a(t,e)}(M,window.lazyLoadOptions),M});\n//# sourceMappingURL=lazyload.min.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/vanilla-lazyload/dist/lazyload.min.js\n// module id = 134\n// module chunks = 0","$.fn.plusItem = function () {\r\n let $btn, $items, $desktop_count_limit, $desktop_expanded_count, $mobile_count_limit, $mobile_expanded_count, $btn_text ;\r\n\r\n $btn = $(this).find('.js-plus-item-btn');\r\n $items = $(this).find('.item');\r\n $desktop_count_limit = $(this).data('desktop-count-limit');\r\n $desktop_expanded_count = $(this).data('desktop-expanded-count');\r\n $mobile_count_limit = $(this).data('mobile-count-limit');\r\n $mobile_expanded_count = $(this).data('mobile-expanded-count');\r\n $btn_text = $(this).data('button-message');\r\n\r\n if ($(window).innerWidth() > 1024) {\r\n if ($items.length > $desktop_count_limit) {\r\n $(this).find(`.item:lt(${$desktop_expanded_count})`).removeClass('d-none');\r\n $btn.removeClass('d-none');\r\n } else {\r\n $btn.addClass('d-none');\r\n $items.removeClass('d-none');\r\n }\r\n } else {\r\n if ($items.length > $mobile_count_limit) {\r\n $(this).find(`.item:lt(${$mobile_expanded_count})`).removeClass('d-none');\r\n $btn.removeClass('d-none');\r\n } else {\r\n $btn.addClass('d-none');\r\n $items.removeClass('d-none');\r\n }\r\n }\r\n\r\n $btn.text('+ ' + $btn_text);\r\n\r\n $btn.click(function () {\r\n $items.each(function () {\r\n setTimeout(() => {\r\n $(this).removeClass('d-none').fadeIn('slow');\r\n }, $(this).index() * 50);\r\n });\r\n $(this).addClass('d-none');\r\n });\r\n\r\n return this;\r\n};\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/plusItem.js","var Platform = {};\r\n\r\n(function () {\r\n\r\n Platform.detectDevice = function () {\r\n var body = document.body;\r\n var ua = navigator.userAgent;\r\n var checker = {\r\n // OS\r\n Windows: ua.match(/Windows/),\r\n MacOS: ua.match(/Mac/),\r\n Android: ua.match(/Android/),\r\n\r\n // Browser\r\n Msie: ua.match(/Trident/),\r\n Edge: ua.match(/Edge/),\r\n Chrome: ua.match(/Chrome/),\r\n Firefox: ua.match(/Firefox/),\r\n Safari: ua.match(/Safari/),\r\n\r\n // Device\r\n isApple: ua.match(/(iPhone|iPod|iPad)/),\r\n iPhone: ua.match(/iPhone/),\r\n iPad: ua.match(/iPad/),\r\n iPod: ua.match(/iPod/),\r\n };\r\n\r\n if (checker.isApple) {\r\n // Apple\r\n body.classList.add('isApple');\r\n\r\n if (checker.iPhone) {\r\n // Apple iPhone\r\n body.classList.add('iphone');\r\n } else if (checker.iPad) {\r\n // Apple iPad\r\n body.classList.add('ipad');\r\n } else if (checker.iPod) {\r\n // Apple iPod\r\n body.classList.add('ipod');\r\n }\r\n\r\n } else if (checker.Windows){\r\n // Windows OS\r\n body.classList.add('windowsOS');\r\n\r\n if (checker.Edge){\r\n // Edge Browser\r\n body.classList.add('edge');\r\n } else if (checker.Chrome){\r\n // Chrome Browser\r\n body.classList.add('chrome');\r\n } else if(checker.Safari){\r\n // Safari Browser\r\n body.classList.add('safari');\r\n } else if(checker.Firefox){\r\n // Firefox Browser\r\n body.classList.add('firefox');\r\n } else if(checker.Msie){\r\n // IE Browser\r\n body.classList.add('msie');\r\n }\r\n\r\n } else if (checker.MacOS){\r\n // Mac OS\r\n body.classList.add('macOS');\r\n\r\n if (checker.Chrome){\r\n // Chrome Browser\r\n body.classList.add('chrome');\r\n } else if(checker.Safari){\r\n // Safari Browser\r\n body.classList.add('safari');\r\n } else if(checker.Firefox){\r\n // Firefox Browser\r\n body.classList.add('firefox');\r\n }\r\n\r\n } else if (checker.Android){\r\n // Android OS\r\n body.classList.add('AndroidOS');\r\n }\r\n\r\n }\r\n\r\n Platform.detectDevice();\r\n\r\n})($);\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/crossPlatform.js","// Promo Box\r\n$('.promo-box-name').txtTruncate({\r\n\tend: '...',\r\n\tlines: 1,\r\n});\r\n\r\n$('.promo-box-description').txtTruncate({\r\n\tend: '...',\r\n\tlines: 2,\r\n});\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/ellipsis.js","jQuery.fn.backgroundSwitcher = function ( settings ) {\r\n var config = {\r\n breakpoint: 991.98,\r\n bgDesktop: $( this ).data( 'bg-desktop' ),\r\n bgMobile: $( this ).data( 'bg-mobile' ),\r\n },\r\n self = $( this );\r\n\r\n if ( settings ) jQuery.extend( config, settings );\r\n\r\n changeBackground();\r\n\r\n function changeBackground () {\r\n var imageURL = config.bgDesktop;\r\n\r\n if ( $( window ).innerWidth() <= config.breakpoint ) {\r\n imageURL = config.bgMobile;\r\n }\r\n\r\n self.css( 'background-image', `url(${imageURL})` );\r\n\r\n // if ( self.prop( 'tagName' ) === 'IMG' ) {\r\n // if ( self.hasClass( 'lazy' ) && !self.hasClass( 'loaded' ) ) {\r\n // self.attr( 'data-src', imageURL );\r\n // } else {\r\n // self.attr( 'src', imageURL );\r\n // }\r\n // } else if ( [ 'DIV', 'SECTION' ].indexOf( self.prop( 'tagName' ) ) !== -1 ) {\r\n // if ( self.hasClass( 'lazy' ) && !self.data( 'wasProcessed' ) ) {\r\n // self.attr( 'data-bg', `url(${imageURL})` );\r\n // } else {\r\n // self.css( 'background-image', `url(${imageURL})` );\r\n // }\r\n // }\r\n }\r\n\r\n return this;\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/backgroundSwitcher.js","let articleGridFilter = {};\r\n\r\narticleGridFilter.dropdown = function() {\r\n var $articleDropdown = $('.article-dropdown .article-dropdown-title');\r\n var $articleContent = $('.article-dropdown .article-dropdown-menu');\r\n\r\n $articleDropdown.click(function() {\r\n var thisDropdown = $(this);\r\n\r\n if (thisDropdown.next('.article-dropdown-menu').hasClass('show')) {\r\n thisDropdown.next('.article-dropdown-menu').removeClass('show');\r\n } else {\r\n $articleContent.removeClass('show');\r\n thisDropdown.next('.article-dropdown-menu').addClass('show');\r\n }\r\n });\r\n\r\n window.onclick = function(event) {\r\n if (!event.target.matches('.article-dropdown-title')) {\r\n var dropdowns = document.getElementsByClassName('article-dropdown-menu');\r\n var i;\r\n for (i = 0; i < dropdowns.length; i++) {\r\n var openDropdown = dropdowns[i];\r\n if (openDropdown.classList.contains('show')) {\r\n openDropdown.classList.remove('show');\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n articleGridFilter.dropdown();\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/articleFilter.js","( ( $ ) => {\r\n\t$( '.js-render-late' ).each( ( index, element ) => {\r\n\t\telement = $( element );\r\n\r\n\t\telement.replaceWith( element.data( 'html' ) );\r\n\t} );\r\n} )( jQuery );\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/lateRender.js","var disableBodyScroll = (function () {\r\n var _selector = false,\r\n _element = false,\r\n _clientY;\r\n\r\n\r\n if (!Element.prototype.matches)\r\n Element.prototype.matches = Element.prototype.msMatchesSelector ||\r\n Element.prototype.webkitMatchesSelector;\r\n\r\n if (!Element.prototype.closest)\r\n Element.prototype.closest = function (s) {\r\n var el = this;\r\n if (!document.documentElement.contains(el)) return null;\r\n do {\r\n if (el.matches(s)) return el;\r\n el = el.parentElement || el.parentNode;\r\n } while (el !== null && el.nodeType === 1);\r\n return null;\r\n };\r\n\r\n var preventBodyScroll = function (event) {\r\n if (false === _element || !event.target.closest(_selector)) {\r\n event.preventDefault();\r\n }\r\n };\r\n\r\n var captureClientY = function (event) {\r\n if (event.targetTouches.length === 1) {\r\n _clientY = event.targetTouches[0].clientY;\r\n }\r\n };\r\n\r\n var preventOverscroll = function (event) {\r\n if (event.targetTouches.length !== 1) {\r\n return;\r\n }\r\n\r\n var clientY = event.targetTouches[0].clientY - _clientY;\r\n\r\n if (_element.scrollTop === 0 && clientY > 0) {\r\n event.preventDefault();\r\n }\r\n\r\n if ((_element.scrollHeight - _element.scrollTop <= _element.clientHeight) && clientY < 0) {\r\n event.preventDefault();\r\n }\r\n };\r\n\r\n return function (allow, selector) {\r\n if (typeof selector !== 'undefined') {\r\n _selector = selector;\r\n _element = document.querySelector(selector);\r\n }\r\n\r\n if (true === allow) {\r\n if (false !== _element) {\r\n _element.addEventListener('touchstart', captureClientY, {\r\n passive: false,\r\n });\r\n _element.addEventListener('touchmove', preventOverscroll, {\r\n passive: false,\r\n });\r\n }\r\n document.body.addEventListener('touchmove', preventBodyScroll, {\r\n passive: false,\r\n });\r\n } else {\r\n if (false !== _element) {\r\n _element.removeEventListener('touchstart', captureClientY, {\r\n passive: false,\r\n });\r\n _element.removeEventListener('touchmove', preventOverscroll, {\r\n passive: false,\r\n });\r\n }\r\n document.body.removeEventListener('touchmove', preventBodyScroll, {\r\n passive: false,\r\n });\r\n }\r\n };\r\n}());\r\n\r\nlet Nav = {};\r\n\r\nNav.init = function () {\r\n Nav.overlay();\r\n Nav.dropdown();\r\n}\r\n\r\nNav.overlay = function () {\r\n let cartOverlay = $('.js-cart-overlay');\r\n let navBarCollapse = $('#navbarNav');\r\n\r\n // Cart Overlay\r\n if (!$('body').is('.isApple, .AndroidOS')) {\r\n cartOverlay.hover(function () {\r\n $('body').addClass('cart-overlay');\r\n }, function () {\r\n $('body').removeClass('cart-overlay');\r\n });\r\n }\r\n\r\n navBarCollapse.on('show.bs.collapse', function () {\r\n $('body').addClass('nav-overlay');\r\n document.documentElement.classList.add('no-scroll');\r\n disableBodyScroll(true, '.navbar-collapse');\r\n })\r\n\r\n navBarCollapse.on('hidden.bs.collapse', function () {\r\n $('body').removeClass('nav-overlay');\r\n document.documentElement.classList.remove('no-scroll');\r\n disableBodyScroll(false, '.navbar-collapse');\r\n $('.js-menu-dropdown').removeClass('show');\r\n $('.js-menu-body').removeClass('show');\r\n })\r\n};\r\n\r\nNav.dropdown = function () {\r\n //Menu Dropdown Mobile\r\n let menuToggle = $('.js-menu-dropdown');\r\n let menuBack = $('.js-mega-menu-back');\r\n\r\n menuToggle.on('click', function () {\r\n let thisMenu = $(this);\r\n menuToggle.next('.js-menu-body').removeClass('show');\r\n menuToggle.removeClass('show');\r\n thisMenu.next('.js-menu-body').addClass('show');\r\n thisMenu.addClass('show');\r\n\r\n disableBodyScroll(false, '.navbar-collapse');\r\n setTimeout(function () {\r\n disableBodyScroll(true, '.dropdown-menu');\r\n }, 400);\r\n });\r\n\r\n // Language dropdown for mobile\r\n let mobileLanguageDropdown = $('.nav-mobile-language-toggle');\r\n\r\n mobileLanguageDropdown.on('click', function () {\r\n $(this).parent().toggleClass('is-open')\r\n });\r\n\r\n menuBack.on('click', function () {\r\n $(this).closest('.nav-item').find('.js-menu-dropdown').removeClass('show');\r\n $(this).closest('.nav-item').find('.js-menu-body').removeClass('show');\r\n disableBodyScroll(false, '.dropdown-menu');\r\n setTimeout(function () {\r\n disableBodyScroll(true, '.navbar-collapse');\r\n }, 400);\r\n });\r\n\r\n};\r\n\r\nNav.init();\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/nav.js","/* eslint-disable no-unused-vars */\r\nimport Headroom from '../vendor/headroom';\r\nvar Flickity = require('flickity');\r\nrequire('../util/autoPadding');\r\n\r\nlet headroom = {};\r\n\r\n(function ($) {\r\n const headroomSlider = document.querySelector('.js-headroom-flickity');\r\n let flickity = null;\r\n let isInit = false;\r\n let tickerSpeed = 1;\r\n\r\n headroom.init = function () {\r\n let msg = document.getElementById('js-main-nav-msg');\r\n let nav = document.getElementById('js-nav-menu');\r\n let body = document.getElementsByTagName('body')[0];\r\n\r\n if (msg && nav) {\r\n let navHeadroom = new Headroom(nav, {\r\n offset: msg.offsetHeight,\r\n classes: {\r\n notTop: 'is-fixed-top',\r\n },\r\n onTop: function () {\r\n msg.classList.remove('d-none');\r\n body.classList.remove('has-fineprint-hidden');\r\n\r\n if (matchMedia('screen and (min-width: 1024px)').matches) {\r\n body.classList.add('nav-is-adjust');\r\n\r\n if (body.classList.contains('search-active')) {\r\n body.classList.remove('nav-is-adjust');\r\n } else {\r\n body.classList.add('nav-is-adjust');\r\n }\r\n\r\n if (body.classList.contains('search-active') && !$('body').hasClass('nav-is-transparent')) {\r\n $('body').autoPadding({\r\n source: $('.js-header'),\r\n });\r\n }\r\n }\r\n\r\n },\r\n onNotTop: function () {\r\n msg.classList.add('d-none');\r\n body.classList.add('has-fineprint-hidden');\r\n\r\n if (matchMedia('screen and (min-width: 1024px)').matches) {\r\n body.classList.remove('nav-is-adjust');\r\n }\r\n },\r\n });\r\n\r\n navHeadroom.init();\r\n }\r\n };\r\n\r\n headroom.usp = function () {\r\n if (matchMedia('screen and (max-width: 1023px)').matches && headroomSlider) {\r\n let isPaused = false;\r\n\r\n const transitionUpdate = () => {\r\n if (isPaused && !isInit) return;\r\n if (flickity.slides) {\r\n flickity.x = (flickity.x - tickerSpeed) % flickity.slideableWidth;\r\n flickity.selectedIndex = flickity.dragEndRestingSelect();\r\n flickity.updateSelectedSlide();\r\n flickity.settle(flickity.x);\r\n }\r\n window.requestAnimationFrame(transitionUpdate);\r\n };\r\n\r\n flickity = new Flickity(headroomSlider, {\r\n autoPlay: false,\r\n prevNextButtons: false,\r\n pageDots: false,\r\n draggable: true,\r\n wrapAround: true,\r\n selectedAttraction: 0.015,\r\n friction: 0.25,\r\n on: {\r\n ready: function () {\r\n isInit = true;\r\n headroomSlider.classList.remove('invisible');\r\n },\r\n dragStart: function () {\r\n isPaused = true;\r\n },\r\n },\r\n });\r\n flickity.x = 0;\r\n\r\n transitionUpdate();\r\n } else {\r\n if (headroomSlider) {\r\n headroomSlider.classList.remove('invisible');\r\n }\r\n if (isInit == true) {\r\n flickity.destroy();\r\n isInit = false;\r\n }\r\n }\r\n };\r\n\r\n headroom.init();\r\n headroom.usp();\r\n\r\n})(jQuery);\r\n\r\nwindow.headroom = headroom;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/headroom.js","/*!\r\n * headroom.js v0.9.4 - Give your page some headroom. Hide your header until you need it\r\n * Copyright (c) 2017 Nick Williams - http://wicky.nillia.ms/headroom.js\r\n * License: MIT\r\n */\r\n\r\n(function(root, factory) {\r\n 'use strict';\r\n\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Register as an anonymous module.\r\n define([], factory);\r\n }\r\n else if (typeof exports === 'object') {\r\n // COMMONJS\r\n module.exports = factory();\r\n }\r\n else {\r\n // BROWSER\r\n root.Headroom = factory();\r\n }\r\n}(this, function() {\r\n 'use strict';\r\n\r\n /* exported features */\r\n \r\n var features = {\r\n bind : !!(function(){}.bind),\r\n classList : 'classList' in document.documentElement,\r\n rAF : !!(window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame),\r\n };\r\n window.requestAnimationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame;\r\n \r\n /**\r\n * Handles debouncing of events via requestAnimationFrame\r\n * @see http://www.html5rocks.com/en/tutorials/speed/animations/\r\n * @param {Function} callback The callback to handle whichever event\r\n */\r\n function Debouncer (callback) {\r\n this.callback = callback;\r\n this.ticking = false;\r\n }\r\n Debouncer.prototype = {\r\n constructor : Debouncer,\r\n \r\n /**\r\n * dispatches the event to the supplied callback\r\n * @private\r\n */\r\n update : function() {\r\n this.callback && this.callback();\r\n this.ticking = false;\r\n },\r\n \r\n /**\r\n * ensures events don't get stacked\r\n * @private\r\n */\r\n requestTick : function() {\r\n if(!this.ticking) {\r\n requestAnimationFrame(this.rafCallback || (this.rafCallback = this.update.bind(this)));\r\n this.ticking = true;\r\n }\r\n },\r\n \r\n /**\r\n * Attach this as the event listeners\r\n */\r\n handleEvent : function() {\r\n this.requestTick();\r\n },\r\n };\r\n /**\r\n * Check if object is part of the DOM\r\n * @constructor\r\n * @param {Object} obj element to check\r\n */\r\n function isDOMElement(obj) {\r\n return obj && typeof window !== 'undefined' && (obj === window || obj.nodeType);\r\n }\r\n \r\n /**\r\n * Helper function for extending objects\r\n */\r\n function extend (object /*, objectN ... */) {\r\n if(arguments.length <= 0) {\r\n throw new Error('Missing arguments in extend function');\r\n }\r\n \r\n var result = object || {},\r\n key,\r\n i;\r\n \r\n for (i = 1; i < arguments.length; i++) {\r\n var replacement = arguments[i] || {};\r\n \r\n for (key in replacement) {\r\n // Recurse into object except if the object is a DOM element\r\n if(typeof result[key] === 'object' && ! isDOMElement(result[key])) {\r\n result[key] = extend(result[key], replacement[key]);\r\n }\r\n else {\r\n result[key] = result[key] || replacement[key];\r\n }\r\n }\r\n }\r\n \r\n return result;\r\n }\r\n \r\n /**\r\n * Helper function for normalizing tolerance option to object format\r\n */\r\n function normalizeTolerance (t) {\r\n return t === Object(t) ? t : { down : t, up : t };\r\n }\r\n \r\n /**\r\n * UI enhancement for fixed headers.\r\n * Hides header when scrolling down\r\n * Shows header when scrolling up\r\n * @constructor\r\n * @param {DOMElement} elem the header element\r\n * @param {Object} options options for the widget\r\n */\r\n function Headroom (elem, options) {\r\n options = extend(options, Headroom.options);\r\n \r\n this.lastKnownScrollY = 0;\r\n this.elem = elem;\r\n this.tolerance = normalizeTolerance(options.tolerance);\r\n this.classes = options.classes;\r\n this.offset = options.offset;\r\n this.scroller = options.scroller;\r\n this.initialised = false;\r\n this.onPin = options.onPin;\r\n this.onUnpin = options.onUnpin;\r\n this.onTop = options.onTop;\r\n this.onNotTop = options.onNotTop;\r\n this.onBottom = options.onBottom;\r\n this.onNotBottom = options.onNotBottom;\r\n }\r\n Headroom.prototype = {\r\n constructor : Headroom,\r\n \r\n /**\r\n * Initialises the widget\r\n */\r\n init : function() {\r\n if(!Headroom.cutsTheMustard) {\r\n return;\r\n }\r\n \r\n this.debouncer = new Debouncer(this.update.bind(this));\r\n this.elem.classList.add(this.classes.initial);\r\n \r\n // defer event registration to handle browser\r\n // potentially restoring previous scroll position\r\n setTimeout(this.attachEvent.bind(this), 100);\r\n \r\n return this;\r\n },\r\n \r\n /**\r\n * Unattaches events and removes any classes that were added\r\n */\r\n destroy : function() {\r\n var classes = this.classes;\r\n \r\n this.initialised = false;\r\n \r\n for (var key in classes) {\r\n if(classes.hasOwnProperty(key)) {\r\n this.elem.classList.remove(classes[key]);\r\n }\r\n }\r\n \r\n this.scroller.removeEventListener('scroll', this.debouncer, false);\r\n },\r\n \r\n /**\r\n * Attaches the scroll event\r\n * @private\r\n */\r\n attachEvent : function() {\r\n if(!this.initialised){\r\n this.lastKnownScrollY = this.getScrollY();\r\n this.initialised = true;\r\n this.scroller.addEventListener('scroll', this.debouncer, false);\r\n \r\n this.debouncer.handleEvent();\r\n }\r\n },\r\n \r\n /**\r\n * Unpins the header if it's currently pinned\r\n */\r\n unpin : function() {\r\n var classList = this.elem.classList,\r\n classes = this.classes;\r\n \r\n if(classList.contains(classes.pinned) || !classList.contains(classes.unpinned)) {\r\n classList.add(classes.unpinned);\r\n classList.remove(classes.pinned);\r\n this.onUnpin && this.onUnpin.call(this);\r\n }\r\n },\r\n \r\n /**\r\n * Pins the header if it's currently unpinned\r\n */\r\n pin : function() {\r\n var classList = this.elem.classList,\r\n classes = this.classes;\r\n \r\n if(classList.contains(classes.unpinned)) {\r\n classList.remove(classes.unpinned);\r\n classList.add(classes.pinned);\r\n this.onPin && this.onPin.call(this);\r\n }\r\n },\r\n \r\n /**\r\n * Handles the top states\r\n */\r\n top : function() {\r\n var classList = this.elem.classList,\r\n classes = this.classes;\r\n \r\n if(!classList.contains(classes.top)) {\r\n classList.add(classes.top);\r\n classList.remove(classes.notTop);\r\n this.onTop && this.onTop.call(this);\r\n }\r\n },\r\n \r\n /**\r\n * Handles the not top state\r\n */\r\n notTop : function() {\r\n var classList = this.elem.classList,\r\n classes = this.classes;\r\n \r\n if(!classList.contains(classes.notTop)) {\r\n classList.add(classes.notTop);\r\n classList.remove(classes.top);\r\n this.onNotTop && this.onNotTop.call(this);\r\n }\r\n },\r\n \r\n bottom : function() {\r\n var classList = this.elem.classList,\r\n classes = this.classes;\r\n \r\n if(!classList.contains(classes.bottom)) {\r\n classList.add(classes.bottom);\r\n classList.remove(classes.notBottom);\r\n this.onBottom && this.onBottom.call(this);\r\n }\r\n },\r\n \r\n /**\r\n * Handles the not top state\r\n */\r\n notBottom : function() {\r\n var classList = this.elem.classList,\r\n classes = this.classes;\r\n \r\n if(!classList.contains(classes.notBottom)) {\r\n classList.add(classes.notBottom);\r\n classList.remove(classes.bottom);\r\n this.onNotBottom && this.onNotBottom.call(this);\r\n }\r\n },\r\n \r\n /**\r\n * Gets the Y scroll position\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY\r\n * @return {Number} pixels the page has scrolled along the Y-axis\r\n */\r\n getScrollY : function() {\r\n return (this.scroller.pageYOffset !== undefined)\r\n ? this.scroller.pageYOffset\r\n : (this.scroller.scrollTop !== undefined)\r\n ? this.scroller.scrollTop\r\n : (document.documentElement || document.body.parentNode || document.body).scrollTop;\r\n },\r\n \r\n /**\r\n * Gets the height of the viewport\r\n * @see http://andylangton.co.uk/blog/development/get-viewport-size-width-and-height-javascript\r\n * @return {int} the height of the viewport in pixels\r\n */\r\n getViewportHeight : function () {\r\n return window.innerHeight\r\n || document.documentElement.clientHeight\r\n || document.body.clientHeight;\r\n },\r\n \r\n /**\r\n * Gets the physical height of the DOM element\r\n * @param {Object} elm the element to calculate the physical height of which\r\n * @return {int} the physical height of the element in pixels\r\n */\r\n getElementPhysicalHeight : function (elm) {\r\n return Math.max(\r\n elm.offsetHeight,\r\n elm.clientHeight\r\n );\r\n },\r\n \r\n /**\r\n * Gets the physical height of the scroller element\r\n * @return {int} the physical height of the scroller element in pixels\r\n */\r\n getScrollerPhysicalHeight : function () {\r\n return (this.scroller === window || this.scroller === document.body)\r\n ? this.getViewportHeight()\r\n : this.getElementPhysicalHeight(this.scroller);\r\n },\r\n \r\n /**\r\n * Gets the height of the document\r\n * @see http://james.padolsey.com/javascript/get-document-height-cross-browser/\r\n * @return {int} the height of the document in pixels\r\n */\r\n getDocumentHeight : function () {\r\n var body = document.body,\r\n documentElement = document.documentElement;\r\n \r\n return Math.max(\r\n body.scrollHeight, documentElement.scrollHeight,\r\n body.offsetHeight, documentElement.offsetHeight,\r\n body.clientHeight, documentElement.clientHeight\r\n );\r\n },\r\n \r\n /**\r\n * Gets the height of the DOM element\r\n * @param {Object} elm the element to calculate the height of which\r\n * @return {int} the height of the element in pixels\r\n */\r\n getElementHeight : function (elm) {\r\n return Math.max(\r\n elm.scrollHeight,\r\n elm.offsetHeight,\r\n elm.clientHeight\r\n );\r\n },\r\n \r\n /**\r\n * Gets the height of the scroller element\r\n * @return {int} the height of the scroller element in pixels\r\n */\r\n getScrollerHeight : function () {\r\n return (this.scroller === window || this.scroller === document.body)\r\n ? this.getDocumentHeight()\r\n : this.getElementHeight(this.scroller);\r\n },\r\n \r\n /**\r\n * determines if the scroll position is outside of document boundaries\r\n * @param {int} currentScrollY the current y scroll position\r\n * @return {bool} true if out of bounds, false otherwise\r\n */\r\n isOutOfBounds : function (currentScrollY) {\r\n var pastTop = currentScrollY < 0,\r\n pastBottom = currentScrollY + this.getScrollerPhysicalHeight() > this.getScrollerHeight();\r\n \r\n return pastTop || pastBottom;\r\n },\r\n \r\n /**\r\n * determines if the tolerance has been exceeded\r\n * @param {int} currentScrollY the current scroll y position\r\n * @return {bool} true if tolerance exceeded, false otherwise\r\n */\r\n toleranceExceeded : function (currentScrollY, direction) {\r\n return Math.abs(currentScrollY-this.lastKnownScrollY) >= this.tolerance[direction];\r\n },\r\n \r\n /**\r\n * determine if it is appropriate to unpin\r\n * @param {int} currentScrollY the current y scroll position\r\n * @param {bool} toleranceExceeded has the tolerance been exceeded?\r\n * @return {bool} true if should unpin, false otherwise\r\n */\r\n shouldUnpin : function (currentScrollY, toleranceExceeded) {\r\n var scrollingDown = currentScrollY > this.lastKnownScrollY,\r\n pastOffset = currentScrollY >= this.offset;\r\n \r\n return scrollingDown && pastOffset && toleranceExceeded;\r\n },\r\n \r\n /**\r\n * determine if it is appropriate to pin\r\n * @param {int} currentScrollY the current y scroll position\r\n * @param {bool} toleranceExceeded has the tolerance been exceeded?\r\n * @return {bool} true if should pin, false otherwise\r\n */\r\n shouldPin : function (currentScrollY, toleranceExceeded) {\r\n var scrollingUp = currentScrollY < this.lastKnownScrollY,\r\n pastOffset = currentScrollY <= this.offset;\r\n \r\n return (scrollingUp && toleranceExceeded) || pastOffset;\r\n },\r\n \r\n /**\r\n * Handles updating the state of the widget\r\n */\r\n update : function() {\r\n var currentScrollY = this.getScrollY(),\r\n scrollDirection = currentScrollY > this.lastKnownScrollY ? 'down' : 'up',\r\n toleranceExceeded = this.toleranceExceeded(currentScrollY, scrollDirection);\r\n \r\n if(this.isOutOfBounds(currentScrollY)) { // Ignore bouncy scrolling in OSX\r\n return;\r\n }\r\n \r\n if (currentScrollY <= this.offset ) {\r\n this.top();\r\n } else {\r\n this.notTop();\r\n }\r\n \r\n if(currentScrollY + this.getViewportHeight() >= this.getScrollerHeight()) {\r\n this.bottom();\r\n }\r\n else {\r\n this.notBottom();\r\n }\r\n \r\n if(this.shouldUnpin(currentScrollY, toleranceExceeded)) {\r\n this.unpin();\r\n }\r\n else if(this.shouldPin(currentScrollY, toleranceExceeded)) {\r\n this.pin();\r\n }\r\n \r\n this.lastKnownScrollY = currentScrollY;\r\n },\r\n };\r\n /**\r\n * Default options\r\n * @type {Object}\r\n */\r\n Headroom.options = {\r\n tolerance : {\r\n up : 0,\r\n down : 0,\r\n },\r\n offset : 0,\r\n scroller: window,\r\n classes : {\r\n pinned : 'headroom--pinned',\r\n unpinned : 'headroom--unpinned',\r\n top : 'headroom--top',\r\n notTop : 'headroom--not-top',\r\n bottom : 'headroom--bottom',\r\n notBottom : 'headroom--not-bottom',\r\n initial : 'headroom',\r\n },\r\n };\r\n Headroom.cutsTheMustard = typeof features !== 'undefined' && features.rAF && features.bind && features.classList;\r\n\r\n return Headroom;\r\n}));\n\n\n// WEBPACK FOOTER //\n// ./scripts/vendor/headroom.js","/*!\n * Flickity v2.2.0\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2018 Metafizzy\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n './drag',\n './prev-next-button',\n './page-dots',\n './player',\n './add-remove-cell',\n './lazyload'\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('./flickity'),\n require('./drag'),\n require('./prev-next-button'),\n require('./page-dots'),\n require('./player'),\n require('./add-remove-cell'),\n require('./lazyload')\n );\n }\n\n})( window, function factory( Flickity ) {\n /*jshint strict: false*/\n return Flickity;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/index.js\n// module id = 144\n// module chunks = 0","/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n /*global define: false, module: false */\n 'use strict';\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n\n}( window, function factory() {\n 'use strict';\n\n var matchesMethod = ( function() {\n var ElemProto = window.Element.prototype;\n // check for the standard method name first\n if ( ElemProto.matches ) {\n return 'matches';\n }\n // check un-prefixed\n if ( ElemProto.matchesSelector ) {\n return 'matchesSelector';\n }\n // check vendor prefixes\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n for ( var i=0; i < prefixes.length; i++ ) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n if ( ElemProto[ method ] ) {\n return method;\n }\n }\n })();\n\n return function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n };\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/desandro-matches-selector/matches-selector.js\n// module id = 145\n// module chunks = 0","// Flickity.Cell\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'get-size/get-size'\n ], function( getSize ) {\n return factory( window, getSize );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('get-size')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Cell = factory(\n window,\n window.getSize\n );\n }\n\n}( window, function factory( window, getSize ) {\n\n'use strict';\n\nfunction Cell( elem, parent ) {\n this.element = elem;\n this.parent = parent;\n\n this.create();\n}\n\nvar proto = Cell.prototype;\n\nproto.create = function() {\n this.element.style.position = 'absolute';\n this.element.setAttribute( 'aria-hidden', 'true' );\n this.x = 0;\n this.shift = 0;\n};\n\nproto.destroy = function() {\n // reset style\n this.unselect();\n this.element.style.position = '';\n var side = this.parent.originSide;\n this.element.style[ side ] = '';\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\nproto.setPosition = function( x ) {\n this.x = x;\n this.updateTarget();\n this.renderPosition( x );\n};\n\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\nproto.updateTarget = proto.setDefaultTarget = function() {\n var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n this.target = this.x + this.size[ marginProperty ] +\n this.size.width * this.parent.cellAlign;\n};\n\nproto.renderPosition = function( x ) {\n // render position of cell with in slider\n var side = this.parent.originSide;\n this.element.style[ side ] = this.parent.getPositionValue( x );\n};\n\nproto.select = function() {\n this.element.classList.add('is-selected');\n this.element.removeAttribute('aria-hidden');\n};\n\nproto.unselect = function() {\n this.element.classList.remove('is-selected');\n this.element.setAttribute( 'aria-hidden', 'true' );\n};\n\n/**\n * @param {Integer} factor - 0, 1, or -1\n**/\nproto.wrapShift = function( shift ) {\n this.shift = shift;\n this.renderPosition( this.x + this.parent.slideableWidth * shift );\n};\n\nproto.remove = function() {\n this.element.parentNode.removeChild( this.element );\n};\n\nreturn Cell;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/cell.js\n// module id = 146\n// module chunks = 0","// slide\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Slide = factory();\n }\n\n}( window, function factory() {\n'use strict';\n\nfunction Slide( parent ) {\n this.parent = parent;\n this.isOriginLeft = parent.originSide == 'left';\n this.cells = [];\n this.outerWidth = 0;\n this.height = 0;\n}\n\nvar proto = Slide.prototype;\n\nproto.addCell = function( cell ) {\n this.cells.push( cell );\n this.outerWidth += cell.size.outerWidth;\n this.height = Math.max( cell.size.outerHeight, this.height );\n // first cell stuff\n if ( this.cells.length == 1 ) {\n this.x = cell.x; // x comes from first cell\n var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n this.firstMargin = cell.size[ beginMargin ];\n }\n};\n\nproto.updateTarget = function() {\n var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\n var lastCell = this.getLastCell();\n var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;\n var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\n this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.select = function() {\n this.cells.forEach( function( cell ) {\n cell.select();\n });\n};\n\nproto.unselect = function() {\n this.cells.forEach( function( cell ) {\n cell.unselect();\n });\n};\n\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n });\n};\n\nreturn Slide;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/slide.js\n// module id = 147\n// module chunks = 0","// animate\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'fizzy-ui-utils/utils'\n ], function( utils ) {\n return factory( window, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.animatePrototype = factory(\n window,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, utils ) {\n\n'use strict';\n\n// -------------------------- animate -------------------------- //\n\nvar proto = {};\n\nproto.startAnimation = function() {\n if ( this.isAnimating ) {\n return;\n }\n\n this.isAnimating = true;\n this.restingFrames = 0;\n this.animate();\n};\n\nproto.animate = function() {\n this.applyDragForce();\n this.applySelectedAttraction();\n\n var previousX = this.x;\n\n this.integratePhysics();\n this.positionSlider();\n this.settle( previousX );\n // animate next frame\n if ( this.isAnimating ) {\n var _this = this;\n requestAnimationFrame( function animateFrame() {\n _this.animate();\n });\n }\n};\n\nproto.positionSlider = function() {\n var x = this.x;\n // wrap position around\n if ( this.options.wrapAround && this.cells.length > 1 ) {\n x = utils.modulo( x, this.slideableWidth );\n x = x - this.slideableWidth;\n this.shiftWrapCells( x );\n }\n\n this.setTranslateX( x, this.isAnimating );\n this.dispatchScrollEvent();\n};\n\nproto.setTranslateX = function( x, is3d ) {\n x += this.cursorPosition;\n // reverse if right-to-left and using transform\n x = this.options.rightToLeft ? -x : x;\n var translateX = this.getPositionValue( x );\n // use 3D tranforms for hardware acceleration on iOS\n // but use 2D when settled, for better font-rendering\n this.slider.style.transform = is3d ?\n 'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\n};\n\nproto.dispatchScrollEvent = function() {\n var firstSlide = this.slides[0];\n if ( !firstSlide ) {\n return;\n }\n var positionX = -this.x - firstSlide.target;\n var progress = positionX / this.slidesWidth;\n this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\n};\n\nproto.positionSliderAtSelected = function() {\n if ( !this.cells.length ) {\n return;\n }\n this.x = -this.selectedSlide.target;\n this.velocity = 0; // stop wobble\n this.positionSlider();\n};\n\nproto.getPositionValue = function( position ) {\n if ( this.options.percentPosition ) {\n // percent position, round to 2 digits, like 12.34%\n return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 )+ '%';\n } else {\n // pixel positioning\n return Math.round( position ) + 'px';\n }\n};\n\nproto.settle = function( previousX ) {\n // keep track of frames where x hasn't moved\n if ( !this.isPointerDown && Math.round( this.x * 100 ) == Math.round( previousX * 100 ) ) {\n this.restingFrames++;\n }\n // stop animating if resting for 3 or more frames\n if ( this.restingFrames > 2 ) {\n this.isAnimating = false;\n delete this.isFreeScrolling;\n // render position with translateX when settled\n this.positionSlider();\n this.dispatchEvent( 'settle', null, [ this.selectedIndex ] );\n }\n};\n\nproto.shiftWrapCells = function( x ) {\n // shift before cells\n var beforeGap = this.cursorPosition + x;\n this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\n // shift after cells\n var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\n this._shiftCells( this.afterShiftCells, afterGap, 1 );\n};\n\nproto._shiftCells = function( cells, gap, shift ) {\n for ( var i=0; i < cells.length; i++ ) {\n var cell = cells[i];\n var cellShift = gap > 0 ? shift : 0;\n cell.wrapShift( cellShift );\n gap -= cell.size.outerWidth;\n }\n};\n\nproto._unshiftCells = function( cells ) {\n if ( !cells || !cells.length ) {\n return;\n }\n for ( var i=0; i < cells.length; i++ ) {\n cells[i].wrapShift( 0 );\n }\n};\n\n// -------------------------- physics -------------------------- //\n\nproto.integratePhysics = function() {\n this.x += this.velocity;\n this.velocity *= this.getFrictionFactor();\n};\n\nproto.applyForce = function( force ) {\n this.velocity += force;\n};\n\nproto.getFrictionFactor = function() {\n return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\n};\n\nproto.getRestingPosition = function() {\n // my thanks to Steven Wittens, who simplified this math greatly\n return this.x + this.velocity / ( 1 - this.getFrictionFactor() );\n};\n\nproto.applyDragForce = function() {\n if ( !this.isDraggable || !this.isPointerDown ) {\n return;\n }\n // change the position to drag position by applying force\n var dragVelocity = this.dragX - this.x;\n var dragForce = dragVelocity - this.velocity;\n this.applyForce( dragForce );\n};\n\nproto.applySelectedAttraction = function() {\n // do not attract if pointer down or no slides\n var dragDown = this.isDraggable && this.isPointerDown;\n if ( dragDown || this.isFreeScrolling || !this.slides.length ) {\n return;\n }\n var distance = this.selectedSlide.target * -1 - this.x;\n var force = distance * this.options.selectedAttraction;\n this.applyForce( force );\n};\n\nreturn proto;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/animate.js\n// module id = 148\n// module chunks = 0","// drag\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unidragger/unidragger',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, Unidragger, utils ) {\n return factory( window, Flickity, Unidragger, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unidragger'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window,\n window.Flickity,\n window.Unidragger,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unidragger, utils ) {\n\n'use strict';\n\n// ----- defaults ----- //\n\nutils.extend( Flickity.defaults, {\n draggable: '>1',\n dragThreshold: 3,\n});\n\n// ----- create ----- //\n\nFlickity.createMethods.push('_createDrag');\n\n// -------------------------- drag prototype -------------------------- //\n\nvar proto = Flickity.prototype;\nutils.extend( proto, Unidragger.prototype );\nproto._touchActionValue = 'pan-y';\n\n// -------------------------- -------------------------- //\n\nvar isTouch = 'createTouch' in document;\nvar isTouchmoveScrollCanceled = false;\n\nproto._createDrag = function() {\n this.on( 'activate', this.onActivateDrag );\n this.on( 'uiChange', this._uiChangeDrag );\n this.on( 'deactivate', this.onDeactivateDrag );\n this.on( 'cellChange', this.updateDraggable );\n // TODO updateDraggable on resize? if groupCells & slides change\n // HACK - add seemingly innocuous handler to fix iOS 10 scroll behavior\n // #457, RubaXa/Sortable#973\n if ( isTouch && !isTouchmoveScrollCanceled ) {\n window.addEventListener( 'touchmove', function() {});\n isTouchmoveScrollCanceled = true;\n }\n};\n\nproto.onActivateDrag = function() {\n this.handles = [ this.viewport ];\n this.bindHandles();\n this.updateDraggable();\n};\n\nproto.onDeactivateDrag = function() {\n this.unbindHandles();\n this.element.classList.remove('is-draggable');\n};\n\nproto.updateDraggable = function() {\n // disable dragging if less than 2 slides. #278\n if ( this.options.draggable == '>1' ) {\n this.isDraggable = this.slides.length > 1;\n } else {\n this.isDraggable = this.options.draggable;\n }\n if ( this.isDraggable ) {\n this.element.classList.add('is-draggable');\n } else {\n this.element.classList.remove('is-draggable');\n }\n};\n\n// backwards compatibility\nproto.bindDrag = function() {\n this.options.draggable = true;\n this.updateDraggable();\n};\n\nproto.unbindDrag = function() {\n this.options.draggable = false;\n this.updateDraggable();\n};\n\nproto._uiChangeDrag = function() {\n delete this.isFreeScrolling;\n};\n\n// -------------------------- pointer events -------------------------- //\n\nproto.pointerDown = function( event, pointer ) {\n if ( !this.isDraggable ) {\n this._pointerDownDefault( event, pointer );\n return;\n }\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay ) {\n return;\n }\n\n this._pointerDownPreventDefault( event );\n this.pointerDownFocus( event );\n // blur\n if ( document.activeElement != this.element ) {\n // do not blur if already focused\n this.pointerDownBlur();\n }\n\n // stop if it was moving\n this.dragX = this.x;\n this.viewport.classList.add('is-pointer-down');\n // track scrolling\n this.pointerDownScroll = getScrollPosition();\n window.addEventListener( 'scroll', this );\n\n this._pointerDownDefault( event, pointer );\n};\n\n// default pointerDown logic, used for staticClick\nproto._pointerDownDefault = function( event, pointer ) {\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. #779\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n // bind move and end events\n this._bindPostStartEvents( event );\n this.dispatchEvent( 'pointerDown', event, [ pointer ] );\n};\n\nvar focusNodes = {\n INPUT: true,\n TEXTAREA: true,\n SELECT: true,\n};\n\nproto.pointerDownFocus = function( event ) {\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isFocusNode ) {\n this.focus();\n }\n};\n\nproto._pointerDownPreventDefault = function( event ) {\n var isTouchStart = event.type == 'touchstart';\n var isTouchPointer = event.pointerType == 'touch';\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isTouchStart && !isTouchPointer && !isFocusNode ) {\n event.preventDefault();\n }\n};\n\n// ----- move ----- //\n\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > this.options.dragThreshold;\n};\n\n// ----- up ----- //\n\nproto.pointerUp = function( event, pointer ) {\n delete this.isTouchScrolling;\n this.viewport.classList.remove('is-pointer-down');\n this.dispatchEvent( 'pointerUp', event, [ pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto.pointerDone = function() {\n window.removeEventListener( 'scroll', this );\n delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nproto.dragStart = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n this.dragStartPosition = this.x;\n this.startAnimation();\n window.removeEventListener( 'scroll', this );\n this.dispatchEvent( 'dragStart', event, [ pointer ] );\n};\n\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n if ( !this.isDraggable ) {\n return;\n }\n event.preventDefault();\n\n this.previousDragX = this.dragX;\n // reverse if right-to-left\n var direction = this.options.rightToLeft ? -1 : 1;\n if ( this.options.wrapAround ) {\n // wrap around move. #589\n moveVector.x = moveVector.x % this.slideableWidth;\n }\n var dragX = this.dragStartPosition + moveVector.x * direction;\n\n if ( !this.options.wrapAround && this.slides.length ) {\n // slow drag\n var originBound = Math.max( -this.slides[0].target, this.dragStartPosition );\n dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\n var endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );\n dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\n }\n\n this.dragX = dragX;\n\n this.dragMoveTime = new Date();\n this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\n};\n\nproto.dragEnd = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n if ( this.options.freeScroll ) {\n this.isFreeScrolling = true;\n }\n // set selectedIndex based on where flick will end up\n var index = this.dragEndRestingSelect();\n\n if ( this.options.freeScroll && !this.options.wrapAround ) {\n // if free-scroll & not wrap around\n // do not free-scroll if going outside of bounding slides\n // so bounding slides can attract slider, and keep it in bounds\n var restingX = this.getRestingPosition();\n this.isFreeScrolling = -restingX > this.slides[0].target &&\n -restingX < this.getLastSlide().target;\n } else if ( !this.options.freeScroll && index == this.selectedIndex ) {\n // boost selection if selected index has not changed\n index += this.dragEndBoostSelect();\n }\n delete this.previousDragX;\n // apply selection\n // TODO refactor this, selecting here feels weird\n // HACK, set flag so dragging stays in correct direction\n this.isDragSelect = this.options.wrapAround;\n this.select( index );\n delete this.isDragSelect;\n this.dispatchEvent( 'dragEnd', event, [ pointer ] );\n};\n\nproto.dragEndRestingSelect = function() {\n var restingX = this.getRestingPosition();\n // how far away from selected slide\n var distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\n // get closet resting going up and going down\n var positiveResting = this._getClosestResting( restingX, distance, 1 );\n var negativeResting = this._getClosestResting( restingX, distance, -1 );\n // use closer resting for wrap-around\n var index = positiveResting.distance < negativeResting.distance ?\n positiveResting.index : negativeResting.index;\n return index;\n};\n\n/**\n * given resting X and distance to selected cell\n * get the distance and index of the closest cell\n * @param {Number} restingX - estimated post-flick resting position\n * @param {Number} distance - distance to selected cell\n * @param {Integer} increment - +1 or -1, going up or down\n * @returns {Object} - { distance: {Number}, index: {Integer} }\n */\nproto._getClosestResting = function( restingX, distance, increment ) {\n var index = this.selectedIndex;\n var minDistance = Infinity;\n var condition = this.options.contain && !this.options.wrapAround ?\n // if contain, keep going if distance is equal to minDistance\n function( d, md ) { return d <= md; } : function( d, md ) { return d < md; };\n while ( condition( distance, minDistance ) ) {\n // measure distance to next cell\n index += increment;\n minDistance = distance;\n distance = this.getSlideDistance( -restingX, index );\n if ( distance === null ) {\n break;\n }\n distance = Math.abs( distance );\n }\n return {\n distance: minDistance,\n // selected was previous index\n index: index - increment\n };\n};\n\n/**\n * measure distance between x and a slide target\n * @param {Number} x\n * @param {Integer} index - slide index\n */\nproto.getSlideDistance = function( x, index ) {\n var len = this.slides.length;\n // wrap around if at least 2 slides\n var isWrapAround = this.options.wrapAround && len > 1;\n var slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\n var slide = this.slides[ slideIndex ];\n if ( !slide ) {\n return null;\n }\n // add distance for wrap-around slides\n var wrap = isWrapAround ? this.slideableWidth * Math.floor( index / len ) : 0;\n return x - ( slide.target + wrap );\n};\n\nproto.dragEndBoostSelect = function() {\n // do not boost if no previousDragX or dragMoveTime\n if ( this.previousDragX === undefined || !this.dragMoveTime ||\n // or if drag was held for 100 ms\n new Date() - this.dragMoveTime > 100 ) {\n return 0;\n }\n\n var distance = this.getSlideDistance( -this.dragX, this.selectedIndex );\n var delta = this.previousDragX - this.dragX;\n if ( distance > 0 && delta > 0 ) {\n // boost to next if moving towards the right, and positive velocity\n return 1;\n } else if ( distance < 0 && delta < 0 ) {\n // boost to previous if moving towards the left, and negative velocity\n return -1;\n }\n return 0;\n};\n\n// ----- staticClick ----- //\n\nproto.staticClick = function( event, pointer ) {\n // get clickedCell, if cell was clicked\n var clickedCell = this.getParentCell( event.target );\n var cellElem = clickedCell && clickedCell.element;\n var cellIndex = clickedCell && this.cells.indexOf( clickedCell );\n this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );\n};\n\n// ----- scroll ----- //\n\nproto.onscroll = function() {\n var scroll = getScrollPosition();\n var scrollMoveX = this.pointerDownScroll.x - scroll.x;\n var scrollMoveY = this.pointerDownScroll.y - scroll.y;\n // cancel click/tap if scroll is too much\n if ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {\n this._pointerDone();\n }\n};\n\n// ----- utils ----- //\n\nfunction getScrollPosition() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n}\n\n// ----- ----- //\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/drag.js\n// module id = 149\n// module chunks = 0","/*!\n * Unidragger v2.3.0\n * Draggable base class\n * MIT license\n */\n\n/*jshint browser: true, unused: true, undef: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'unipointer/unipointer'\n ], function( Unipointer ) {\n return factory( window, Unipointer );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('unipointer')\n );\n } else {\n // browser global\n window.Unidragger = factory(\n window,\n window.Unipointer\n );\n }\n\n}( window, function factory( window, Unipointer ) {\n\n'use strict';\n\n// -------------------------- Unidragger -------------------------- //\n\nfunction Unidragger() {}\n\n// inherit Unipointer & EvEmitter\nvar proto = Unidragger.prototype = Object.create( Unipointer.prototype );\n\n// ----- bind start ----- //\n\nproto.bindHandles = function() {\n this._bindHandles( true );\n};\n\nproto.unbindHandles = function() {\n this._bindHandles( false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd\n */\nproto._bindHandles = function( isAdd ) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n // bind each handle\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n var touchAction = isAdd ? this._touchActionValue : '';\n for ( var i=0; i < this.handles.length; i++ ) {\n var handle = this.handles[i];\n this._bindStartEvent( handle, isAdd );\n handle[ bindMethod ]( 'click', this );\n // touch-action: none to override browser touch gestures. metafizzy/flickity#540\n if ( window.PointerEvent ) {\n handle.style.touchAction = touchAction;\n }\n }\n};\n\n// prototype so it can be overwriteable by Flickity\nproto._touchActionValue = 'none';\n\n// ----- start event ----- //\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerDown = function( event, pointer ) {\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay ) {\n return;\n }\n // track start event position\n this.pointerDownPointer = pointer;\n\n event.preventDefault();\n this.pointerDownBlur();\n // bind move and end events\n this._bindPostStartEvents( event );\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// nodes that have text fields\nvar cursorNodes = {\n TEXTAREA: true,\n INPUT: true,\n SELECT: true,\n OPTION: true,\n};\n\n// input types that do not have text fields\nvar clickTypes = {\n radio: true,\n checkbox: true,\n button: true,\n submit: true,\n image: true,\n file: true,\n};\n\n// dismiss inputs with text fields. flickity#403, flickity#404\nproto.okayPointerDown = function( event ) {\n var isCursorNode = cursorNodes[ event.target.nodeName ];\n var isClickType = clickTypes[ event.target.type ];\n var isOkay = !isCursorNode || isClickType;\n if ( !isOkay ) {\n this._pointerReset();\n }\n return isOkay;\n};\n\n// kludge to blur previously focused input\nproto.pointerDownBlur = function() {\n var focused = document.activeElement;\n // do not blur body for IE10, metafizzy/flickity#117\n var canBlur = focused && focused.blur && focused != document.body;\n if ( canBlur ) {\n focused.blur();\n }\n};\n\n// ----- move event ----- //\n\n/**\n * drag move\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.emitEvent( 'pointerMove', [ event, pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\n// base pointer move logic\nproto._dragPointerMove = function( event, pointer ) {\n var moveVector = {\n x: pointer.pageX - this.pointerDownPointer.pageX,\n y: pointer.pageY - this.pointerDownPointer.pageY\n };\n // start drag if pointer has moved far enough to start drag\n if ( !this.isDragging && this.hasDragStarted( moveVector ) ) {\n this._dragStart( event, pointer );\n }\n return moveVector;\n};\n\n// condition if pointer has moved far enough to start drag\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > 3 || Math.abs( moveVector.y ) > 3;\n};\n\n// ----- end event ----- //\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto._dragPointerUp = function( event, pointer ) {\n if ( this.isDragging ) {\n this._dragEnd( event, pointer );\n } else {\n // pointer didn't move enough for drag to start\n this._staticClick( event, pointer );\n }\n};\n\n// -------------------------- drag -------------------------- //\n\n// dragStart\nproto._dragStart = function( event, pointer ) {\n this.isDragging = true;\n // prevent clicks\n this.isPreventingClicks = true;\n this.dragStart( event, pointer );\n};\n\nproto.dragStart = function( event, pointer ) {\n this.emitEvent( 'dragStart', [ event, pointer ] );\n};\n\n// dragMove\nproto._dragMove = function( event, pointer, moveVector ) {\n // do not drag if not dragging yet\n if ( !this.isDragging ) {\n return;\n }\n\n this.dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n event.preventDefault();\n this.emitEvent( 'dragMove', [ event, pointer, moveVector ] );\n};\n\n// dragEnd\nproto._dragEnd = function( event, pointer ) {\n // set flags\n this.isDragging = false;\n // re-enable clicking async\n setTimeout( function() {\n delete this.isPreventingClicks;\n }.bind( this ) );\n\n this.dragEnd( event, pointer );\n};\n\nproto.dragEnd = function( event, pointer ) {\n this.emitEvent( 'dragEnd', [ event, pointer ] );\n};\n\n// ----- onclick ----- //\n\n// handle all clicks and prevent clicks when dragging\nproto.onclick = function( event ) {\n if ( this.isPreventingClicks ) {\n event.preventDefault();\n }\n};\n\n// ----- staticClick ----- //\n\n// triggered after pointer down & up with no/tiny movement\nproto._staticClick = function( event, pointer ) {\n // ignore emulated mouse up clicks\n if ( this.isIgnoringMouseUp && event.type == 'mouseup' ) {\n return;\n }\n\n this.staticClick( event, pointer );\n\n // set flag for emulated clicks 300ms after touchend\n if ( event.type != 'mouseup' ) {\n this.isIgnoringMouseUp = true;\n // reset flag after 300ms\n setTimeout( function() {\n delete this.isIgnoringMouseUp;\n }.bind( this ), 400 );\n }\n};\n\nproto.staticClick = function( event, pointer ) {\n this.emitEvent( 'staticClick', [ event, pointer ] );\n};\n\n// ----- utils ----- //\n\nUnidragger.getPointerPoint = Unipointer.getPointerPoint;\n\n// ----- ----- //\n\nreturn Unidragger;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/unidragger/unidragger.js\n// module id = 150\n// module chunks = 0","// prev/next buttons\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n'use strict';\n\nvar svgURI = 'http://www.w3.org/2000/svg';\n\n// -------------------------- PrevNextButton -------------------------- //\n\nfunction PrevNextButton( direction, parent ) {\n this.direction = direction;\n this.parent = parent;\n this._create();\n}\n\nPrevNextButton.prototype = Object.create( Unipointer.prototype );\n\nPrevNextButton.prototype._create = function() {\n // properties\n this.isEnabled = true;\n this.isPrevious = this.direction == -1;\n var leftDirection = this.parent.options.rightToLeft ? 1 : -1;\n this.isLeft = this.direction == leftDirection;\n\n var element = this.element = document.createElement('button');\n element.className = 'flickity-button flickity-prev-next-button';\n element.className += this.isPrevious ? ' previous' : ' next';\n // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\n element.setAttribute( 'type', 'button' );\n // init as disabled\n this.disable();\n\n element.setAttribute( 'aria-label', this.isPrevious ? 'Previous' : 'Next' );\n\n // create arrow\n var svg = this.createSVG();\n element.appendChild( svg );\n // events\n this.parent.on( 'select', this.update.bind( this ) );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPrevNextButton.prototype.activate = function() {\n this.bindStartEvent( this.element );\n this.element.addEventListener( 'click', this );\n // add to DOM\n this.parent.element.appendChild( this.element );\n};\n\nPrevNextButton.prototype.deactivate = function() {\n // remove from DOM\n this.parent.element.removeChild( this.element );\n // click events\n this.unbindStartEvent( this.element );\n this.element.removeEventListener( 'click', this );\n};\n\nPrevNextButton.prototype.createSVG = function() {\n var svg = document.createElementNS( svgURI, 'svg');\n svg.setAttribute( 'class', 'flickity-button-icon' );\n svg.setAttribute( 'viewBox', '0 0 100 100' );\n var path = document.createElementNS( svgURI, 'path');\n var pathMovements = getArrowMovements( this.parent.options.arrowShape );\n path.setAttribute( 'd', pathMovements );\n path.setAttribute( 'class', 'arrow' );\n // rotate arrow\n if ( !this.isLeft ) {\n path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );\n }\n svg.appendChild( path );\n return svg;\n};\n\n// get SVG path movmement\nfunction getArrowMovements( shape ) {\n // use shape as movement if string\n if ( typeof shape == 'string' ) {\n return shape;\n }\n // create movement string\n return 'M ' + shape.x0 + ',50' +\n ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\n ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\n ' L ' + shape.x3 + ',50 ' +\n ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\n ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\n ' Z';\n}\n\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\n\nPrevNextButton.prototype.onclick = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.parent.uiChange();\n var method = this.isPrevious ? 'previous' : 'next';\n this.parent[ method ]();\n};\n\n// ----- ----- //\n\nPrevNextButton.prototype.enable = function() {\n if ( this.isEnabled ) {\n return;\n }\n this.element.disabled = false;\n this.isEnabled = true;\n};\n\nPrevNextButton.prototype.disable = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.element.disabled = true;\n this.isEnabled = false;\n};\n\nPrevNextButton.prototype.update = function() {\n // index of first or last slide, if previous or next\n var slides = this.parent.slides;\n // enable is wrapAround and at least 2 slides\n if ( this.parent.options.wrapAround && slides.length > 1 ) {\n this.enable();\n return;\n }\n var lastIndex = slides.length ? slides.length - 1 : 0;\n var boundIndex = this.isPrevious ? 0 : lastIndex;\n var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\n this[ method ]();\n};\n\nPrevNextButton.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\n// -------------------------- Flickity prototype -------------------------- //\n\nutils.extend( Flickity.defaults, {\n prevNextButtons: true,\n arrowShape: {\n x0: 10,\n x1: 60, y1: 50,\n x2: 70, y2: 40,\n x3: 30\n }\n});\n\nFlickity.createMethods.push('_createPrevNextButtons');\nvar proto = Flickity.prototype;\n\nproto._createPrevNextButtons = function() {\n if ( !this.options.prevNextButtons ) {\n return;\n }\n\n this.prevButton = new PrevNextButton( -1, this );\n this.nextButton = new PrevNextButton( 1, this );\n\n this.on( 'activate', this.activatePrevNextButtons );\n};\n\nproto.activatePrevNextButtons = function() {\n this.prevButton.activate();\n this.nextButton.activate();\n this.on( 'deactivate', this.deactivatePrevNextButtons );\n};\n\nproto.deactivatePrevNextButtons = function() {\n this.prevButton.deactivate();\n this.nextButton.deactivate();\n this.off( 'deactivate', this.deactivatePrevNextButtons );\n};\n\n// -------------------------- -------------------------- //\n\nFlickity.PrevNextButton = PrevNextButton;\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/prev-next-button.js\n// module id = 151\n// module chunks = 0","// page dots\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n\n// -------------------------- PageDots -------------------------- //\n\n'use strict';\n\nfunction PageDots( parent ) {\n this.parent = parent;\n this._create();\n}\n\nPageDots.prototype = Object.create( Unipointer.prototype );\n\nPageDots.prototype._create = function() {\n // create holder element\n this.holder = document.createElement('ol');\n this.holder.className = 'flickity-page-dots';\n // create dots, array of elements\n this.dots = [];\n // events\n this.handleClick = this.onClick.bind( this );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPageDots.prototype.activate = function() {\n this.setDots();\n this.holder.addEventListener( 'click', this.handleClick );\n this.bindStartEvent( this.holder );\n // add to DOM\n this.parent.element.appendChild( this.holder );\n};\n\nPageDots.prototype.deactivate = function() {\n this.holder.removeEventListener( 'click', this.handleClick );\n this.unbindStartEvent( this.holder );\n // remove from DOM\n this.parent.element.removeChild( this.holder );\n};\n\nPageDots.prototype.setDots = function() {\n // get difference between number of slides and number of dots\n var delta = this.parent.slides.length - this.dots.length;\n if ( delta > 0 ) {\n this.addDots( delta );\n } else if ( delta < 0 ) {\n this.removeDots( -delta );\n }\n};\n\nPageDots.prototype.addDots = function( count ) {\n var fragment = document.createDocumentFragment();\n var newDots = [];\n var length = this.dots.length;\n var max = length + count;\n\n for ( var i = length; i < max; i++ ) {\n var dot = document.createElement('li');\n dot.className = 'dot';\n dot.setAttribute( 'aria-label', 'Page dot ' + ( i + 1 ) );\n fragment.appendChild( dot );\n newDots.push( dot );\n }\n\n this.holder.appendChild( fragment );\n this.dots = this.dots.concat( newDots );\n};\n\nPageDots.prototype.removeDots = function( count ) {\n // remove from this.dots collection\n var removeDots = this.dots.splice( this.dots.length - count, count );\n // remove from DOM\n removeDots.forEach( function( dot ) {\n this.holder.removeChild( dot );\n }, this );\n};\n\nPageDots.prototype.updateSelected = function() {\n // remove selected class on previous\n if ( this.selectedDot ) {\n this.selectedDot.className = 'dot';\n this.selectedDot.removeAttribute('aria-current');\n }\n // don't proceed if no dots\n if ( !this.dots.length ) {\n return;\n }\n this.selectedDot = this.dots[ this.parent.selectedIndex ];\n this.selectedDot.className = 'dot is-selected';\n this.selectedDot.setAttribute( 'aria-current', 'step' );\n};\n\nPageDots.prototype.onTap = // old method name, backwards-compatible\nPageDots.prototype.onClick = function( event ) {\n var target = event.target;\n // only care about dot clicks\n if ( target.nodeName != 'LI' ) {\n return;\n }\n\n this.parent.uiChange();\n var index = this.dots.indexOf( target );\n this.parent.select( index );\n};\n\nPageDots.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\nFlickity.PageDots = PageDots;\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pageDots: true\n});\n\nFlickity.createMethods.push('_createPageDots');\n\nvar proto = Flickity.prototype;\n\nproto._createPageDots = function() {\n if ( !this.options.pageDots ) {\n return;\n }\n this.pageDots = new PageDots( this );\n // events\n this.on( 'activate', this.activatePageDots );\n this.on( 'select', this.updateSelectedPageDots );\n this.on( 'cellChange', this.updatePageDots );\n this.on( 'resize', this.updatePageDots );\n this.on( 'deactivate', this.deactivatePageDots );\n};\n\nproto.activatePageDots = function() {\n this.pageDots.activate();\n};\n\nproto.updateSelectedPageDots = function() {\n this.pageDots.updateSelected();\n};\n\nproto.updatePageDots = function() {\n this.pageDots.setDots();\n};\n\nproto.deactivatePageDots = function() {\n this.pageDots.deactivate();\n};\n\n// ----- ----- //\n\nFlickity.PageDots = PageDots;\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/page-dots.js\n// module id = 152\n// module chunks = 0","// player & autoPlay\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'fizzy-ui-utils/utils',\n './flickity'\n ], function( EvEmitter, utils, Flickity ) {\n return factory( EvEmitter, utils, Flickity );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('ev-emitter'),\n require('fizzy-ui-utils'),\n require('./flickity')\n );\n } else {\n // browser global\n factory(\n window.EvEmitter,\n window.fizzyUIUtils,\n window.Flickity\n );\n }\n\n}( window, function factory( EvEmitter, utils, Flickity ) {\n\n'use strict';\n\n// -------------------------- Player -------------------------- //\n\nfunction Player( parent ) {\n this.parent = parent;\n this.state = 'stopped';\n // visibility change event handler\n this.onVisibilityChange = this.visibilityChange.bind( this );\n this.onVisibilityPlay = this.visibilityPlay.bind( this );\n}\n\nPlayer.prototype = Object.create( EvEmitter.prototype );\n\n// start play\nPlayer.prototype.play = function() {\n if ( this.state == 'playing' ) {\n return;\n }\n // do not play if page is hidden, start playing when page is visible\n var isPageHidden = document.hidden;\n if ( isPageHidden ) {\n document.addEventListener( 'visibilitychange', this.onVisibilityPlay );\n return;\n }\n\n this.state = 'playing';\n // listen to visibility change\n document.addEventListener( 'visibilitychange', this.onVisibilityChange );\n // start ticking\n this.tick();\n};\n\nPlayer.prototype.tick = function() {\n // do not tick if not playing\n if ( this.state != 'playing' ) {\n return;\n }\n\n var time = this.parent.options.autoPlay;\n // default to 3 seconds\n time = typeof time == 'number' ? time : 3000;\n var _this = this;\n // HACK: reset ticks if stopped and started within interval\n this.clear();\n this.timeout = setTimeout( function() {\n _this.parent.next( true );\n _this.tick();\n }, time );\n};\n\nPlayer.prototype.stop = function() {\n this.state = 'stopped';\n this.clear();\n // remove visibility change event\n document.removeEventListener( 'visibilitychange', this.onVisibilityChange );\n};\n\nPlayer.prototype.clear = function() {\n clearTimeout( this.timeout );\n};\n\nPlayer.prototype.pause = function() {\n if ( this.state == 'playing' ) {\n this.state = 'paused';\n this.clear();\n }\n};\n\nPlayer.prototype.unpause = function() {\n // re-start play if paused\n if ( this.state == 'paused' ) {\n this.play();\n }\n};\n\n// pause if page visibility is hidden, unpause if visible\nPlayer.prototype.visibilityChange = function() {\n var isPageHidden = document.hidden;\n this[ isPageHidden ? 'pause' : 'unpause' ]();\n};\n\nPlayer.prototype.visibilityPlay = function() {\n this.play();\n document.removeEventListener( 'visibilitychange', this.onVisibilityPlay );\n};\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pauseAutoPlayOnHover: true\n});\n\nFlickity.createMethods.push('_createPlayer');\nvar proto = Flickity.prototype;\n\nproto._createPlayer = function() {\n this.player = new Player( this );\n\n this.on( 'activate', this.activatePlayer );\n this.on( 'uiChange', this.stopPlayer );\n this.on( 'pointerDown', this.stopPlayer );\n this.on( 'deactivate', this.deactivatePlayer );\n};\n\nproto.activatePlayer = function() {\n if ( !this.options.autoPlay ) {\n return;\n }\n this.player.play();\n this.element.addEventListener( 'mouseenter', this );\n};\n\n// Player API, don't hate the ... thanks I know where the door is\n\nproto.playPlayer = function() {\n this.player.play();\n};\n\nproto.stopPlayer = function() {\n this.player.stop();\n};\n\nproto.pausePlayer = function() {\n this.player.pause();\n};\n\nproto.unpausePlayer = function() {\n this.player.unpause();\n};\n\nproto.deactivatePlayer = function() {\n this.player.stop();\n this.element.removeEventListener( 'mouseenter', this );\n};\n\n// ----- mouseenter/leave ----- //\n\n// pause auto-play on hover\nproto.onmouseenter = function() {\n if ( !this.options.pauseAutoPlayOnHover ) {\n return;\n }\n this.player.pause();\n this.element.addEventListener( 'mouseleave', this );\n};\n\n// resume auto-play on hover off\nproto.onmouseleave = function() {\n this.player.unpause();\n this.element.removeEventListener( 'mouseleave', this );\n};\n\n// ----- ----- //\n\nFlickity.Player = Player;\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/player.js\n// module id = 153\n// module chunks = 0","// add, remove cell\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n\n'use strict';\n\n// append cells to a document fragment\nfunction getCellsFragment( cells ) {\n var fragment = document.createDocumentFragment();\n cells.forEach( function( cell ) {\n fragment.appendChild( cell.element );\n });\n return fragment;\n}\n\n// -------------------------- add/remove cell prototype -------------------------- //\n\nvar proto = Flickity.prototype;\n\n/**\n * Insert, prepend, or append cells\n * @param {Element, Array, NodeList} elems\n * @param {Integer} index\n */\nproto.insert = function( elems, index ) {\n var cells = this._makeCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n var len = this.cells.length;\n // default to append\n index = index === undefined ? len : index;\n // add cells with document fragment\n var fragment = getCellsFragment( cells );\n // append to slider\n var isAppend = index == len;\n if ( isAppend ) {\n this.slider.appendChild( fragment );\n } else {\n var insertCellElement = this.cells[ index ].element;\n this.slider.insertBefore( fragment, insertCellElement );\n }\n // add to this.cells\n if ( index === 0 ) {\n // prepend, add to start\n this.cells = cells.concat( this.cells );\n } else if ( isAppend ) {\n // append, add to end\n this.cells = this.cells.concat( cells );\n } else {\n // insert in this.cells\n var endCells = this.cells.splice( index, len - index );\n this.cells = this.cells.concat( cells ).concat( endCells );\n }\n\n this._sizeCells( cells );\n this.cellChange( index, true );\n};\n\nproto.append = function( elems ) {\n this.insert( elems, this.cells.length );\n};\n\nproto.prepend = function( elems ) {\n this.insert( elems, 0 );\n};\n\n/**\n * Remove cells\n * @param {Element, Array, NodeList} elems\n */\nproto.remove = function( elems ) {\n var cells = this.getCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n\n var minCellIndex = this.cells.length - 1;\n // remove cells from collection & DOM\n cells.forEach( function( cell ) {\n cell.remove();\n var index = this.cells.indexOf( cell );\n minCellIndex = Math.min( index, minCellIndex );\n utils.removeFrom( this.cells, cell );\n }, this );\n\n this.cellChange( minCellIndex, true );\n};\n\n/**\n * logic to be run after a cell's size changes\n * @param {Element} elem - cell's element\n */\nproto.cellSizeChange = function( elem ) {\n var cell = this.getCell( elem );\n if ( !cell ) {\n return;\n }\n cell.getSize();\n\n var index = this.cells.indexOf( cell );\n this.cellChange( index );\n};\n\n/**\n * logic any time a cell is changed: added, removed, or size changed\n * @param {Integer} changedCellIndex - index of the changed cell, optional\n */\nproto.cellChange = function( changedCellIndex, isPositioningSlider ) {\n var prevSelectedElem = this.selectedElement;\n this._positionCells( changedCellIndex );\n this._getWrapShiftCells();\n this.setGallerySize();\n // update selectedIndex\n // try to maintain position & select previous selected element\n var cell = this.getCell( prevSelectedElem );\n if ( cell ) {\n this.selectedIndex = this.getCellSlideIndex( cell );\n }\n this.selectedIndex = Math.min( this.slides.length - 1, this.selectedIndex );\n\n this.emitEvent( 'cellChange', [ changedCellIndex ] );\n // position slider\n this.select( this.selectedIndex );\n // do not position slider after lazy load\n if ( isPositioningSlider ) {\n this.positionSliderAtSelected();\n }\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/add-remove-cell.js\n// module id = 154\n// module chunks = 0","// lazyload\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n'use strict';\n\nFlickity.createMethods.push('_createLazyload');\nvar proto = Flickity.prototype;\n\nproto._createLazyload = function() {\n this.on( 'select', this.lazyLoad );\n};\n\nproto.lazyLoad = function() {\n var lazyLoad = this.options.lazyLoad;\n if ( !lazyLoad ) {\n return;\n }\n // get adjacent cells, use lazyLoad option for adjacent count\n var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n var cellElems = this.getAdjacentCellElements( adjCount );\n // get lazy images in those cells\n var lazyImages = [];\n cellElems.forEach( function( cellElem ) {\n var lazyCellImages = getCellLazyImages( cellElem );\n lazyImages = lazyImages.concat( lazyCellImages );\n });\n // load lazy images\n lazyImages.forEach( function( img ) {\n new LazyLoader( img, this );\n }, this );\n};\n\nfunction getCellLazyImages( cellElem ) {\n // check if cell element is lazy image\n if ( cellElem.nodeName == 'IMG' ) {\n var lazyloadAttr = cellElem.getAttribute('data-flickity-lazyload');\n var srcAttr = cellElem.getAttribute('data-flickity-lazyload-src');\n var srcsetAttr = cellElem.getAttribute('data-flickity-lazyload-srcset');\n if ( lazyloadAttr || srcAttr || srcsetAttr ) {\n return [ cellElem ];\n }\n }\n // select lazy images in cell\n var lazySelector = 'img[data-flickity-lazyload], ' +\n 'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\n var imgs = cellElem.querySelectorAll( lazySelector );\n return utils.makeArray( imgs );\n}\n\n// -------------------------- LazyLoader -------------------------- //\n\n/**\n * class to handle loading images\n */\nfunction LazyLoader( img, flickity ) {\n this.img = img;\n this.flickity = flickity;\n this.load();\n}\n\nLazyLoader.prototype.handleEvent = utils.handleEvent;\n\nLazyLoader.prototype.load = function() {\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n // get src & srcset\n var src = this.img.getAttribute('data-flickity-lazyload') ||\n this.img.getAttribute('data-flickity-lazyload-src');\n var srcset = this.img.getAttribute('data-flickity-lazyload-srcset');\n // set src & serset\n this.img.src = src;\n if ( srcset ) {\n this.img.setAttribute( 'srcset', srcset );\n }\n // remove attr\n this.img.removeAttribute('data-flickity-lazyload');\n this.img.removeAttribute('data-flickity-lazyload-src');\n this.img.removeAttribute('data-flickity-lazyload-srcset');\n};\n\nLazyLoader.prototype.onload = function( event ) {\n this.complete( event, 'flickity-lazyloaded' );\n};\n\nLazyLoader.prototype.onerror = function( event ) {\n this.complete( event, 'flickity-lazyerror' );\n};\n\nLazyLoader.prototype.complete = function( event, className ) {\n // unbind events\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n\n var cell = this.flickity.getParentCell( this.img );\n var cellElem = cell && cell.element;\n this.flickity.cellSizeChange( cellElem );\n\n this.img.classList.add( className );\n this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\n};\n\n// ----- ----- //\n\nFlickity.LazyLoader = LazyLoader;\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/lazyload.js\n// module id = 155\n// module chunks = 0","var disableBodyScroll = (function() {\r\n var _selector = false,\r\n _element = false,\r\n _clientY;\r\n\r\n if (!Element.prototype.matches)\r\n Element.prototype.matches = Element.prototype.msMatchesSelector ||\r\n Element.prototype.webkitMatchesSelector;\r\n\r\n if (!Element.prototype.closest)\r\n Element.prototype.closest = function(s) {\r\n var el = this;\r\n if (!document.documentElement.contains(el)) return null;\r\n do {\r\n if (el.matches(s)) return el;\r\n el = el.parentElement || el.parentNode;\r\n } while (el !== null && el.nodeType === 1);\r\n return null;\r\n };\r\n\r\n var preventBodyScroll = function(event) {\r\n if (false === _element || !event.target.closest(_selector)) {\r\n event.preventDefault();\r\n }\r\n };\r\n\r\n var captureClientY = function(event) {\r\n if (event.targetTouches.length === 1) {\r\n _clientY = event.targetTouches[0].clientY;\r\n }\r\n };\r\n\r\n var preventOverscroll = function(event) {\r\n if (event.targetTouches.length !== 1) {\r\n return;\r\n }\r\n\r\n var clientY = event.targetTouches[0].clientY - _clientY;\r\n\r\n if (_element.scrollTop === 0 && clientY > 0) {\r\n event.preventDefault();\r\n }\r\n\r\n if ((_element.scrollHeight - _element.scrollTop <= _element.clientHeight) && clientY < 0) {\r\n event.preventDefault();\r\n }\r\n };\r\n\r\n return function(allow, selector) {\r\n if (typeof selector !== 'undefined') {\r\n _selector = selector;\r\n _element = document.querySelector(selector);\r\n }\r\n\r\n if (true === allow) {\r\n if (false !== _element) {\r\n _element.addEventListener('touchstart', captureClientY, {\r\n passive: false,\r\n });\r\n _element.addEventListener('touchmove', preventOverscroll, {\r\n passive: false,\r\n });\r\n }\r\n document.body.addEventListener('touchmove', preventBodyScroll, {\r\n passive: false,\r\n });\r\n } else {\r\n if (false !== _element) {\r\n _element.removeEventListener('touchstart', captureClientY, {\r\n passive: false,\r\n });\r\n _element.removeEventListener('touchmove', preventOverscroll, {\r\n passive: false,\r\n });\r\n }\r\n document.body.removeEventListener('touchmove', preventBodyScroll, {\r\n passive: false,\r\n });\r\n }\r\n };\r\n}());\r\n\r\nlet supportsOrientationChange = 'onorientationchange' in window,\r\n orientationEvent = supportsOrientationChange ? 'orientationchange' : 'resize';\r\n\r\nlet Filter = {};\r\n\r\nFilter.toggle = function() {\r\n let openFilter = $('.js-filter-open');\r\n let closeFilter = $('.js-filter-close');\r\n let filterContent = $('.js-filter-collapse');\r\n\r\n openFilter.click(function () {\r\n filterContent.addClass('show');\r\n $('body').addClass('filter-is-open');\r\n if (matchMedia('screen and (max-width: 1023.98px)').matches) {\r\n disableBodyScroll(true, '.js-filter-collapse');\r\n }\r\n });\r\n\r\n closeFilter.click(function (e) {\r\n e.preventDefault();\r\n filterContent.removeClass('show');\r\n $('body').removeClass('filter-is-open');\r\n if (matchMedia('screen and (max-width: 1023.98px)').matches) {\r\n disableBodyScroll(false, '.js-filter-collapse');\r\n }\r\n });\r\n\r\n if ($('.product-filter')[0]){\r\n window.addEventListener(orientationEvent, function() {\r\n filterContent.removeClass('show');\r\n $('body').removeClass('filter-is-open');\r\n if (matchMedia('screen and (max-width: 1023.98px)').matches) {\r\n disableBodyScroll(false, '.js-filter-collapse');\r\n }\r\n }, false);\r\n }\r\n\r\n $( document ).on( 'click', '.js-filter-collapse .dropdown-menu', function ( e ) {\r\n e.stopPropagation();\r\n} );\r\n};\r\n\r\n// Filter.accordion = function() {\r\n// var toggleAccordion = $('.js-accordion-toggle');\r\n// var accordionBody = $('.js-accordion-body');\r\n\r\n// toggleAccordion.click(function() {\r\n// var thisAccordion = $(this);\r\n// if (thisAccordion.hasClass('is-open')) {\r\n// thisAccordion.siblings(accordionBody).removeClass('is-open');\r\n// thisAccordion.removeClass('is-open');\r\n// } else {\r\n// thisAccordion.siblings(accordionBody).addClass('is-open');\r\n// thisAccordion.addClass('is-open');\r\n// }\r\n// });\r\n// };\r\n\r\nFilter.toggle();\r\n// Filter.accordion();\r\n\r\nFilter.dropdownUpdate = function () {\r\n if ( $( '.product-filter .filter-container' ).length === 0 ) {\r\n return;\r\n }\r\n\r\n var $checkSelector = $( '.product-filter .custom-dropdown' );\r\n var $checkBox = $( '.product-filter .custom-dropdown .check-selector .custom-control-input' );\r\n\r\n $checkSelector.each( function () {\r\n var thisSelector = $( this );\r\n var count = thisSelector.find( '.check-selector .custom-control-input:checked' ).length;\r\n\r\n if ( !thisSelector.hasClass( 'sort' ) ) {\r\n if ( !count == 0 ) {\r\n thisSelector.addClass( 'has-dash' ).find( '.dropdown-toggle .check-count' ).text( count );\r\n }\r\n }\r\n } );\r\n\r\n $checkBox.change( function () {\r\n var countCheckedCheck = $( this ).closest( '.check-selector' ).find( '.custom-control-input:checked' ).length;\r\n\r\n if ( !countCheckedCheck == 0 ) {\r\n $( this ).closest( '.custom-dropdown' ).addClass( 'has-dash' ).find( '.dropdown-toggle .check-count' ).text( countCheckedCheck );\r\n } else {\r\n $( this ).closest( '.custom-dropdown' ).removeClass( 'has-dash' ).find( '.dropdown-toggle .check-count' ).text( '' );\r\n }\r\n } );\r\n\r\n var dropdownSelector = $( '.product-filter .custom-dropdown .dropdown-menu.sort ul>li' );\r\n dropdownSelector.off( 'click' ).on( 'click', function() {\r\n dropdownSelector.each(function() {\r\n $(this).removeClass( 'selected' );\r\n });\r\n\r\n $(this).addClass( 'selected' );\r\n } );\r\n};\r\n\r\nFilter.dropdownUpdate();\r\n\r\n\r\nvar FilterUpdater = {};\r\n\r\n( function ( $ ) {\r\n var form = $( '#silkFilterForm' ), isSearch = $( 'body.search' ).length !== 0;\r\n\r\n// var initialLoad = true;\r\n\r\n FilterUpdater.update = function (filterProducts) {\r\n\r\n var products = $( '.products .product' );\r\n\r\n if( filterProducts ) {\r\n products = filterProducts;\r\n }\r\n\r\n if ( form.length === 0 || products.length === 0 ) {\r\n return;\r\n }\r\n\r\n // Hide all filter items\r\n if( isSearch ) {\r\n form.find( 'input[type=checkbox]' ).parents( 'li' ).hide();\r\n } else {\r\n form.find( 'input[type=checkbox][name=category],input[type=checkbox][name=material],input[type=checkbox][name=color],input[type=checkbox][name=size],input[type=checkbox][name=model],input[type=checkbox][name=heel]' ).parents( 'li' ).hide();\r\n }\r\n\r\n // Show only filter items that matches with the products\r\n $.each( products, function () {\r\n var product = $( this ),\r\n categories = product.data( 'category' ),\r\n materials = product.data( 'material' ),\r\n size = product.data( 'size' ),\r\n color = product.data( 'color' ),\r\n model = product.data( 'model' ),\r\n heel = product.data( 'heel' );\r\n\r\n\r\n // Filter categories only in search page\r\n if ( categories ) {\r\n $.each( categories.split( '|' ), function () {\r\n form.find( 'input[name=category][value=\"' + this + '\"]' ).parents( 'li' ).show();\r\n } );\r\n }\r\n\r\n if ( materials ) {\r\n $.each( materials.split( '|' ), function () {\r\n form.find( 'input[name=material][value=\"' + this + '\"]' ).parents( 'li' ).show();\r\n } );\r\n }\r\n\r\n if ( size ) {\r\n $.each( size.toString().split( '|' ), function () {\r\n form.find( 'input[name=size][value=\"' + this + '\"]' ).parents( 'li' ).show();\r\n } );\r\n }\r\n\r\n if ( color ) {\r\n $.each( color.split( '|' ), function () {\r\n form.find( 'input[name=color][value=\"' + this + '\"]' ).parents( 'li' ).show();\r\n } );\r\n }\r\n\r\n if ( model ) {\r\n $.each( model.split( '|' ), function () {\r\n form.find( 'input[name=model][value=\"' + this + '\"]' ).parents( 'li' ).show();\r\n } );\r\n }\r\n\r\n if ( heel ) {\r\n $.each( heel.split( '|' ), function () {\r\n form.find( 'input[name=heel][value=\"' + this + '\"]' ).parents( 'li' ).show();\r\n } );\r\n }\r\n/*\r\n console.log(\"show\");\r\n console.log( product.data( 'color' ) );\r\n*/\r\n form.find( 'input[name=color][value=\"' + product.data( 'color' ) + '\"]' ).parents( 'li' ).show();\r\n form.find( 'input[name=size][value=\"' + product.data( 'size' ) + '\"]' ).parents( 'li' ).show();\r\n } );\r\n\r\n // Hide filter group without visible items\r\n $.each( $( 'ul.check-selector' ), function () {\r\n var list = $( this ), visibleCount = 0;\r\n\r\n $.each( list.children( 'li' ), function () {\r\n visibleCount += $( this ).css( 'display' ) === 'none' ? 0 : 1;\r\n } );\r\n\r\n if ( visibleCount < 1 ) {\r\n list.parents( '.col-lg' ).hide();\r\n } else {\r\n list.parents( '.col-lg' ).show();\r\n }\r\n } );\r\n };\r\n\r\n FilterUpdater.update();\r\n\r\n window.FilterUpdater = FilterUpdater;\r\n window.Filter = Filter;\r\n} )( jQuery );\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/filter.js","let Dropdown = {};\r\n\r\nDropdown.init = function() {\r\n Dropdown.overlayScroll();\r\n};\r\n\r\nDropdown.overlayScroll = function() {\r\n $('.js-dropdown-overlay').overlayScrollbars({ });\r\n};\r\n\r\n$(window).on('load',function(){\r\n Dropdown.init();\r\n});\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/dropdown.js","var Filter = {};\r\n\r\n//add class if certain color was detected\r\nFilter.for_color = function () {\r\n var el = document.getElementsByClassName('js-color');\r\n if (!el) {\r\n return;\r\n }\r\n for (var i = 0; i < el.length; i++) {\r\n var bgProp = window.getComputedStyle(el[i], null).getPropertyValue('background-color');\r\n if (Filter.color_detector(bgProp) == 'light') {\r\n el[i].classList.add('is-checkmark-dark');\r\n } else {\r\n el[i].classList.add('is-checkmark-white');\r\n }\r\n\r\n\r\n if (i > 10) {\r\n break;\r\n }\r\n }\r\n\r\n}\r\n\r\n//color detector\r\nFilter.color_detector = function (color) {\r\n // Variables for red, green, blue values\r\n var r, g, b, hsp;\r\n\r\n // Check the format of the color, HEX or RGB?\r\n if (color.match(/^rgb/)) {\r\n\r\n // If HEX --> store the red, green, blue values in separate variables\r\n color = color.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/);\r\n\r\n r = color[1];\r\n g = color[2];\r\n b = color[3];\r\n } else {\r\n\r\n // If RGB --> Convert it to HEX: http://gist.github.com/983661\r\n color = +('0x' + color.slice(1).replace(\r\n color.length < 5 && /./g, '$&$&'));\r\n\r\n r = color >> 16;\r\n g = color >> 8 & 255;\r\n b = color & 255;\r\n }\r\n\r\n // HSP (Highly Sensitive Poo) equation from http://alienryderflex.com/hsp.html\r\n hsp = Math.sqrt(\r\n 0.299 * (r * r) +\r\n 0.587 * (g * g) +\r\n 0.114 * (b * b)\r\n );\r\n\r\n // Using the HSP value, determine whether the color is light or dark\r\n if (hsp > 127.5) {\r\n\r\n\r\n return 'light';\r\n } else {\r\n\r\n return 'dark';\r\n }\r\n}\r\n\r\nFilter.for_color();\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/picker.js","$.fn.resellersTable = function () {\r\n this.each(function () {\r\n let $tableRows = $(this).find(`.resellers-table-row:gt(${($(this).data('limit') - 1)})`);\r\n let $btnMore = $(this).find('.js-more');\r\n\r\n // On window load\r\n if ($(window).innerWidth() < 768) {\r\n $tableRows.removeClass('d-md-table-row').addClass('d-none');\r\n } else {\r\n $tableRows.removeClass('d-none').addClass('d-md-table-row');\r\n }\r\n\r\n // On window resize\r\n $(window).resize(function () {\r\n if ($(window).innerWidth() < 768) {\r\n $tableRows.removeClass('d-md-table-row').addClass('d-none');\r\n } else {\r\n $tableRows.removeClass('d-none').addClass('d-md-table-row');\r\n }\r\n });\r\n\r\n // Button more\r\n $btnMore.click(function () {\r\n $tableRows.each(function () {\r\n setTimeout(() => {\r\n $(this).removeClass('d-none').addClass('d-md-table-row').fadeIn('slow');\r\n }, $(this).index() * 50);\r\n });\r\n $btnMore.fadeOut();\r\n });\r\n });\r\n};\r\n\r\nvar $sectionResellers = $('.section.resellers');\r\n\r\n$('.resellers .fifty-fifty:eq(0) .btn').on('click', function (e) {\r\n e.preventDefault();\r\n\r\n $('html, body').animate({\r\n scrollTop: ($sectionResellers.offset().top - $('.js-header').height()) - parseInt($('html').css('margin-top')) + 'px',\r\n });\r\n});\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/resellers.js","/* eslint-disable no-unused-vars */\r\n\r\nimport { stokpress, stokpressViewPort } from '../util/helper';\r\n/* eslint-disable no-undef */\r\nvar Video = {};\r\nvar classes = {\r\n container: 'js-video',\r\n};\r\n\r\nwindow.onPlayerStateChange = function (event) {\r\n console.log('state changed');\r\n if (event.data === YT.PlayerState.PLAYING) {\r\n var target = event.target.g;\r\n var targetParent = Video.getParentEl(target);\r\n\r\n if (targetParent) {\r\n Video.removeElement(\r\n targetParent.querySelectorAll('.js-hide-on-play')\r\n );\r\n }\r\n \r\n if (target) {\r\n target.style.opacity = 1;\r\n if (typeof target.dataset.zIndex !== 'undefined') {\r\n target.style.zIndex = target.dataset.zIndex || 1;\r\n }\r\n }\r\n }\r\n};\r\n\r\nwindow.onPlayerReady = function (event) {\r\n event.target.playVideo();\r\n};\r\n\r\n// Youtube callbacks\r\nwindow.onYouTubeIframeAPIReady = function () {\r\n for (var i = 0; i < Video.iframes.length; i++) {\r\n new YT.Player(Video.iframes[i].id, {\r\n events: {\r\n onReady: onPlayerReady,\r\n onStateChange: onPlayerStateChange,\r\n },\r\n });\r\n }\r\n};\r\n\r\nVideo.isMobile = function () {\r\n return stokpress.isMobile() || stokpressViewPort.documentWidth().width < 720;\r\n};\r\n\r\nVideo.getParentEl = function (el) {\r\n if (!el) return;\r\n\r\n var videoparent = stokpress.findAncestor(el, classes.container);\r\n if (videoparent) {\r\n return videoparent;\r\n }\r\n\r\n return el.parentNode.parentNode;\r\n};\r\n\r\nVideo.initializeVimeo = function (iframes) {\r\n if (iframes.length === 0) {\r\n return;\r\n }\r\n\r\n for (var i = 0; i < iframes.length; i++) {\r\n var source = iframes[i].getAttribute('data-source');\r\n\r\n if (source !== 'vimeo') {\r\n continue;\r\n }\r\n\r\n var videoparent = Video.getParentEl(iframes[i]);\r\n var playVideo = videoparent.querySelector('.js-playvideo');\r\n\r\n if (!playVideo) {\r\n continue;\r\n }\r\n\r\n playVideo.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n var videoparent = Video.getParentEl(this);\r\n var iframe = videoparent.querySelector('.js-video-iframe');\r\n var elToHide = videoparent.querySelectorAll('.js-hide-on-play');\r\n\r\n if (!iframe) {\r\n return;\r\n }\r\n\r\n Video.removeElement(elToHide);\r\n iframe.style.opacity = 1;\r\n\r\n if (typeof iframe.dataset.zIndex !== 'undefined') {\r\n iframe.style.zIndex = iframe.dataset.zIndex || 1;\r\n }\r\n\r\n var player = new Vimeo.Player(iframe);\r\n player.play();\r\n });\r\n\r\n if (matchMedia('screen and (max-width: 1023.98px)').matches) {\r\n if (iframes[i].getAttribute('data-autoplaymobile')) {\r\n Video.removeElement(videoparent.querySelectorAll('.js-hide-on-play'));\r\n iframes[i].style.opacity = 1;\r\n\r\n if (typeof iframes[i].dataset.zIndex !== 'undefined') {\r\n iframes[i].style.zIndex = iframes[i].dataset.zIndex || 1;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nVideo.initializeYoutube = function (iframe) {\r\n var parent = Video.getParentEl(iframe);\r\n var playVideo = parent.querySelector('.js-playvideo');\r\n var elToHide = parent.querySelectorAll('.js-hide-on-play');\r\n\r\n if (!playVideo) {\r\n return;\r\n }\r\n\r\n playVideo.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n\r\n Video.removeElement(elToHide);\r\n iframe.style.opacity = 1;\r\n iframe.src += '&autoplay=1';\r\n\r\n if (typeof iframe.dataset.zIndex !== 'undefined') {\r\n iframe.style.zIndex = iframe.dataset.zIndex || 1;\r\n }\r\n });\r\n};\r\n\r\nVideo.iframeProcess = function () {\r\n var includeYoutubeScript = false,\r\n includeVimeoScript = false;\r\n\r\n for (var i = 0; i < Video.iframes.length; i++) {\r\n if (!Video.iframes[i].getAttribute('data-autoplay') || Video.isMobile()) {\r\n var source = Video.iframes[i].getAttribute('data-source'),\r\n playOnMobile = Video.iframes[i].getAttribute('data-showonmobile');\r\n\r\n if (source === 'vimeo') {\r\n includeVimeoScript = true;\r\n } else if (source === 'youtube') {\r\n if (Video.isMobile()) {\r\n if (playOnMobile === 'true') {\r\n Video.iframes[i].style.zIndex = Video.iframes[i].dataset.zIndex || 5;\r\n includeYoutubeScript = true;\r\n }\r\n } else {\r\n Video.initializeYoutube(Video.iframes[i]);\r\n }\r\n }\r\n } else {\r\n var videoparent = Video.getParentEl(Video.iframes[i]);\r\n Video.removeElement(videoparent.querySelectorAll('.js-hide-on-play'));\r\n\r\n Video.iframes[i].style.opacity = 1;\r\n if (typeof Video.iframes[i].dataset.zIndex !== 'undefined') {\r\n Video.iframes[i].style.zIndex = Video.iframes[i].dataset.zIndex || 1;\r\n }\r\n }\r\n }\r\n\r\n if (includeVimeoScript) {\r\n stokpress.getScript('https://player.vimeo.com/api/player.js', function () {\r\n Video.initializeVimeo(Video.iframes);\r\n });\r\n }\r\n\r\n if (includeYoutubeScript) {\r\n stokpress.getScript('https://www.youtube.com/iframe_api');\r\n }\r\n};\r\n\r\nVideo.removeElement = function (elToHide) {\r\n if (!elToHide) {\r\n return;\r\n }\r\n\r\n Array.prototype.forEach.call(elToHide, function (element) {\r\n element.parentNode.removeChild(element);\r\n });\r\n};\r\n\r\nVideo.init = function () {\r\n Video.iframes = document.querySelectorAll('.' + classes.container + ' iframe.js-video-iframe');\r\n Video.tags = document.querySelectorAll('.' + classes.container + ' video.js-video-tag');\r\n\r\n if (Video.iframes.length) {\r\n Video.iframeProcess();\r\n }\r\n\r\n if (Video.tags.length) {\r\n for (var i = 0; i < Video.tags.length; i++) {\r\n var videoparent = Video.getParentEl(Video.tags[i]);\r\n\r\n if (Video.tags[i].getAttribute('autoplay')) {\r\n Video.removeElement(videoparent.querySelectorAll('.js-hide-on-play'));\r\n Video.tags[i].style.zIndex = Video.tags[i].dataset.zIndex || 1;\r\n } else {\r\n // Play video upon clicking the play button\r\n var playVideo = videoparent.querySelector('.js-playvideo');\r\n\r\n if (!playVideo) {\r\n continue;\r\n }\r\n\r\n playVideo.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n var targetParent = Video.getParentEl(this);\r\n var targetVideo = targetParent.querySelector('video');\r\n var elToHide = targetParent.querySelectorAll('.js-hide-on-play');\r\n\r\n Video.removeElement(elToHide);\r\n\r\n targetVideo.play();\r\n targetVideo.style.zIndex = targetVideo.dataset.zIndex || 1;\r\n });\r\n }\r\n }\r\n }\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n Video.init();\r\n});\r\n\r\nwindow.Video = Video;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/video.js","import $ from 'jquery';\r\nimport jQueryBridget from 'jquery-bridget';\r\nimport Masonry from 'masonry-layout';\r\n\r\njQueryBridget( 'masonry', Masonry, $ );\r\n\r\nvar flag = true;\r\nlet isMasonry = false;\r\nlet masonryOptions = {\r\n itemSelector: '.product',\r\n percentPosition: true,\r\n}\r\n\r\nfunction detectMasonry () {\r\n if ( matchMedia( 'screen and (min-width: 1024px)' ).matches ) {\r\n window.productsMasonry = $( '.products' ).masonry( masonryOptions );\r\n isMasonry = true;\r\n\r\n if(flag){\r\n window.productsMasonry.on('layoutComplete', function() {\r\n titleCardCollapse();\r\n });\r\n\r\n flag = false;\r\n }\r\n\r\n $( '.products' ).masonry( masonryOptions );\r\n } else {\r\n if ( isMasonry ) {\r\n $( '.products' ).masonry( 'destroy' );\r\n isMasonry = false;\r\n }\r\n }\r\n}\r\n\r\nfunction titleCardCollapse () {\r\n let titleCard = $( '.product.title-card' );\r\n let collapseBtn = $( '.product.title-card .button-align .link' );\r\n let titleCardHeight = titleCard.outerHeight();\r\n\r\n let titleHeight = titleCard.find( '.title' ).outerHeight( true ) || 0;\r\n let contentHeight = titleCard.find( '.content' ).outerHeight( true ) || 0;\r\n let categoryHeight = titleCard.find( '.product-filter-category' ).outerHeight( true ) || 0;\r\n\r\n let elementsHeight = titleHeight + contentHeight + categoryHeight;\r\n\r\n // console.log(titleCardHeight)\r\n // console.log(titleHeight)\r\n // console.log(contentHeight)\r\n // console.log(categoryHeight)\r\n\r\n\r\n if ( elementsHeight < titleCardHeight ) {\r\n $( '.product.title-card .button-align' ).hide();\r\n } else {\r\n $( '.product.title-card .button-align' ).show();\r\n }\r\n\r\n collapseBtn.click( function () {\r\n if ( titleCard.hasClass( 'collapse' ) ) {\r\n titleCard.removeClass( 'collapse' );\r\n } else {\r\n titleCard.addClass( 'collapse' );\r\n }\r\n } );\r\n\r\n $( window ).on( 'resize', function () {\r\n titleCard.removeClass( 'collapse' );\r\n } );\r\n}\r\n\r\n// titleCardCollapse();\r\ndetectMasonry();\r\n\r\n$( window ).on( 'resize', function () {\r\n // titleCardCollapse();\r\n detectMasonry();\r\n} );\r\n\r\nwindow.titleCardCollapse = titleCardCollapse;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/listing.js","/**\n * Bridget makes jQuery widgets\n * v2.0.1\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /* globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [ 'jquery' ], function( jQuery ) {\n return factory( window, jQuery );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('jquery')\n );\n } else {\n // browser global\n window.jQueryBridget = factory(\n window,\n window.jQuery\n );\n }\n\n}( window, function factory( window, jQuery ) {\n'use strict';\n\n// ----- utils ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// helper function for logging errors\n// $.error breaks jQuery chaining\nvar console = window.console;\nvar logError = typeof console == 'undefined' ? function() {} :\n function( message ) {\n console.error( message );\n };\n\n// ----- jQueryBridget ----- //\n\nfunction jQueryBridget( namespace, PluginClass, $ ) {\n $ = $ || jQuery || window.jQuery;\n if ( !$ ) {\n return;\n }\n\n // add option method -> $().plugin('option', {...})\n if ( !PluginClass.prototype.option ) {\n // option setter\n PluginClass.prototype.option = function( opts ) {\n // bail out if not an object\n if ( !$.isPlainObject( opts ) ){\n return;\n }\n this.options = $.extend( true, this.options, opts );\n };\n }\n\n // make jQuery plugin\n $.fn[ namespace ] = function( arg0 /*, arg1 */ ) {\n if ( typeof arg0 == 'string' ) {\n // method call $().plugin( 'methodName', { options } )\n // shift arguments by 1\n var args = arraySlice.call( arguments, 1 );\n return methodCall( this, arg0, args );\n }\n // just $().plugin({ options })\n plainCall( this, arg0 );\n return this;\n };\n\n // $().plugin('methodName')\n function methodCall( $elems, methodName, args ) {\n var returnValue;\n var pluginMethodStr = '$().' + namespace + '(\"' + methodName + '\")';\n\n $elems.each( function( i, elem ) {\n // get instance\n var instance = $.data( elem, namespace );\n if ( !instance ) {\n logError( namespace + ' not initialized. Cannot call methods, i.e. ' +\n pluginMethodStr );\n return;\n }\n\n var method = instance[ methodName ];\n if ( !method || methodName.charAt(0) == '_' ) {\n logError( pluginMethodStr + ' is not a valid method' );\n return;\n }\n\n // apply method, get return value\n var value = method.apply( instance, args );\n // set return value if value is returned, use only first value\n returnValue = returnValue === undefined ? value : returnValue;\n });\n\n return returnValue !== undefined ? returnValue : $elems;\n }\n\n function plainCall( $elems, options ) {\n $elems.each( function( i, elem ) {\n var instance = $.data( elem, namespace );\n if ( instance ) {\n // set options & init\n instance.option( options );\n instance._init();\n } else {\n // initialize new instance\n instance = new PluginClass( elem, options );\n $.data( elem, namespace, instance );\n }\n });\n }\n\n updateJQuery( $ );\n\n}\n\n// ----- updateJQuery ----- //\n\n// set $.bridget for v1 backwards compatibility\nfunction updateJQuery( $ ) {\n if ( !$ || ( $ && $.bridget ) ) {\n return;\n }\n $.bridget = jQueryBridget;\n}\n\nupdateJQuery( jQuery || window.jQuery );\n\n// ----- ----- //\n\nreturn jQueryBridget;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/jquery-bridget/jquery-bridget.js\n// module id = 162\n// module chunks = 0","/*!\n * Masonry v4.2.2\n * Cascading grid layout library\n * https://masonry.desandro.com\n * MIT License\n * by David DeSandro\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'outlayer/outlayer',\n 'get-size/get-size'\n ],\n factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('outlayer'),\n require('get-size')\n );\n } else {\n // browser global\n window.Masonry = factory(\n window.Outlayer,\n window.getSize\n );\n }\n\n}( window, function factory( Outlayer, getSize ) {\n\n'use strict';\n\n// -------------------------- masonryDefinition -------------------------- //\n\n // create an Outlayer layout class\n var Masonry = Outlayer.create('masonry');\n // isFitWidth -> fitWidth\n Masonry.compatOptions.fitWidth = 'isFitWidth';\n\n var proto = Masonry.prototype;\n\n proto._resetLayout = function() {\n this.getSize();\n this._getMeasurement( 'columnWidth', 'outerWidth' );\n this._getMeasurement( 'gutter', 'outerWidth' );\n this.measureColumns();\n\n // reset column Y\n this.colYs = [];\n for ( var i=0; i < this.cols; i++ ) {\n this.colYs.push( 0 );\n }\n\n this.maxY = 0;\n this.horizontalColIndex = 0;\n };\n\n proto.measureColumns = function() {\n this.getContainerWidth();\n // if columnWidth is 0, default to outerWidth of first item\n if ( !this.columnWidth ) {\n var firstItem = this.items[0];\n var firstItemElem = firstItem && firstItem.element;\n // columnWidth fall back to item of first element\n this.columnWidth = firstItemElem && getSize( firstItemElem ).outerWidth ||\n // if first elem has no width, default to size of container\n this.containerWidth;\n }\n\n var columnWidth = this.columnWidth += this.gutter;\n\n // calculate columns\n var containerWidth = this.containerWidth + this.gutter;\n var cols = containerWidth / columnWidth;\n // fix rounding errors, typically with gutters\n var excess = columnWidth - containerWidth % columnWidth;\n // if overshoot is less than a pixel, round up, otherwise floor it\n var mathMethod = excess && excess < 1 ? 'round' : 'floor';\n cols = Math[ mathMethod ]( cols );\n this.cols = Math.max( cols, 1 );\n };\n\n proto.getContainerWidth = function() {\n // container is parent if fit width\n var isFitWidth = this._getOption('fitWidth');\n var container = isFitWidth ? this.element.parentNode : this.element;\n // check that this.size and size are there\n // IE8 triggers resize on body size change, so they might not be\n var size = getSize( container );\n this.containerWidth = size && size.innerWidth;\n };\n\n proto._getItemLayoutPosition = function( item ) {\n item.getSize();\n // how many columns does this brick span\n var remainder = item.size.outerWidth % this.columnWidth;\n var mathMethod = remainder && remainder < 1 ? 'round' : 'ceil';\n // round if off by 1 pixel, otherwise use ceil\n var colSpan = Math[ mathMethod ]( item.size.outerWidth / this.columnWidth );\n colSpan = Math.min( colSpan, this.cols );\n // use horizontal or top column position\n var colPosMethod = this.options.horizontalOrder ?\n '_getHorizontalColPosition' : '_getTopColPosition';\n var colPosition = this[ colPosMethod ]( colSpan, item );\n // position the brick\n var position = {\n x: this.columnWidth * colPosition.col,\n y: colPosition.y\n };\n // apply setHeight to necessary columns\n var setHeight = colPosition.y + item.size.outerHeight;\n var setMax = colSpan + colPosition.col;\n for ( var i = colPosition.col; i < setMax; i++ ) {\n this.colYs[i] = setHeight;\n }\n\n return position;\n };\n\n proto._getTopColPosition = function( colSpan ) {\n var colGroup = this._getTopColGroup( colSpan );\n // get the minimum Y value from the columns\n var minimumY = Math.min.apply( Math, colGroup );\n\n return {\n col: colGroup.indexOf( minimumY ),\n y: minimumY,\n };\n };\n\n /**\n * @param {Number} colSpan - number of columns the element spans\n * @returns {Array} colGroup\n */\n proto._getTopColGroup = function( colSpan ) {\n if ( colSpan < 2 ) {\n // if brick spans only one column, use all the column Ys\n return this.colYs;\n }\n\n var colGroup = [];\n // how many different places could this brick fit horizontally\n var groupCount = this.cols + 1 - colSpan;\n // for each group potential horizontal position\n for ( var i = 0; i < groupCount; i++ ) {\n colGroup[i] = this._getColGroupY( i, colSpan );\n }\n return colGroup;\n };\n\n proto._getColGroupY = function( col, colSpan ) {\n if ( colSpan < 2 ) {\n return this.colYs[ col ];\n }\n // make an array of colY values for that one group\n var groupColYs = this.colYs.slice( col, col + colSpan );\n // and get the max value of the array\n return Math.max.apply( Math, groupColYs );\n };\n\n // get column position based on horizontal index. #873\n proto._getHorizontalColPosition = function( colSpan, item ) {\n var col = this.horizontalColIndex % this.cols;\n var isOver = colSpan > 1 && col + colSpan > this.cols;\n // shift to next row if item can't fit on current row\n col = isOver ? 0 : col;\n // don't let zero-size items take up space\n var hasSize = item.size.outerWidth && item.size.outerHeight;\n this.horizontalColIndex = hasSize ? col + colSpan : this.horizontalColIndex;\n\n return {\n col: col,\n y: this._getColGroupY( col, colSpan ),\n };\n };\n\n proto._manageStamp = function( stamp ) {\n var stampSize = getSize( stamp );\n var offset = this._getElementOffset( stamp );\n // get the columns that this stamp affects\n var isOriginLeft = this._getOption('originLeft');\n var firstX = isOriginLeft ? offset.left : offset.right;\n var lastX = firstX + stampSize.outerWidth;\n var firstCol = Math.floor( firstX / this.columnWidth );\n firstCol = Math.max( 0, firstCol );\n var lastCol = Math.floor( lastX / this.columnWidth );\n // lastCol should not go over if multiple of columnWidth #425\n lastCol -= lastX % this.columnWidth ? 0 : 1;\n lastCol = Math.min( this.cols - 1, lastCol );\n // set colYs to bottom of the stamp\n\n var isOriginTop = this._getOption('originTop');\n var stampMaxY = ( isOriginTop ? offset.top : offset.bottom ) +\n stampSize.outerHeight;\n for ( var i = firstCol; i <= lastCol; i++ ) {\n this.colYs[i] = Math.max( stampMaxY, this.colYs[i] );\n }\n };\n\n proto._getContainerSize = function() {\n this.maxY = Math.max.apply( Math, this.colYs );\n var size = {\n height: this.maxY\n };\n\n if ( this._getOption('fitWidth') ) {\n size.width = this._getContainerFitWidth();\n }\n\n return size;\n };\n\n proto._getContainerFitWidth = function() {\n var unusedCols = 0;\n // count unused columns\n var i = this.cols;\n while ( --i ) {\n if ( this.colYs[i] !== 0 ) {\n break;\n }\n unusedCols++;\n }\n // fit container to columns that have been used\n return ( this.cols - unusedCols ) * this.columnWidth - this.gutter;\n };\n\n proto.needsResizeLayout = function() {\n var previousWidth = this.containerWidth;\n this.getContainerWidth();\n return previousWidth != this.containerWidth;\n };\n\n return Masonry;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/masonry-layout/masonry.js\n// module id = 163\n// module chunks = 0","/*!\n * Outlayer v2.1.1\n * the brains and guts of a layout library\n * MIT license\n */\n\n( function( window, factory ) {\n 'use strict';\n // universal module definition\n /* jshint strict: false */ /* globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './item'\n ],\n function( EvEmitter, getSize, utils, Item ) {\n return factory( window, EvEmitter, getSize, utils, Item);\n }\n );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./item')\n );\n } else {\n // browser global\n window.Outlayer = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n window.Outlayer.Item\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize, utils, Item ) {\n'use strict';\n\n// ----- vars ----- //\n\nvar console = window.console;\nvar jQuery = window.jQuery;\nvar noop = function() {};\n\n// -------------------------- Outlayer -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Outlayer intances\nvar instances = {};\n\n\n/**\n * @param {Element, String} element\n * @param {Object} options\n * @constructor\n */\nfunction Outlayer( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for ' + this.constructor.namespace +\n ': ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // add id for Outlayer.getFromElement\n var id = ++GUID;\n this.element.outlayerGUID = id; // expando\n instances[ id ] = this; // associate via id\n\n // kick it off\n this._create();\n\n var isInitLayout = this._getOption('initLayout');\n if ( isInitLayout ) {\n this.layout();\n }\n}\n\n// settings are for internal use only\nOutlayer.namespace = 'outlayer';\nOutlayer.Item = Item;\n\n// default options\nOutlayer.defaults = {\n containerStyle: {\n position: 'relative'\n },\n initLayout: true,\n originLeft: true,\n originTop: true,\n resize: true,\n resizeContainer: true,\n // item options\n transitionDuration: '0.4s',\n hiddenStyle: {\n opacity: 0,\n transform: 'scale(0.001)'\n },\n visibleStyle: {\n opacity: 1,\n transform: 'scale(1)'\n }\n};\n\nvar proto = Outlayer.prototype;\n// inherit EvEmitter\nutils.extend( proto, EvEmitter.prototype );\n\n/**\n * set options\n * @param {Object} opts\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\n/**\n * get backwards compatible option value, check old name\n */\nproto._getOption = function( option ) {\n var oldOption = this.constructor.compatOptions[ option ];\n return oldOption && this.options[ oldOption ] !== undefined ?\n this.options[ oldOption ] : this.options[ option ];\n};\n\nOutlayer.compatOptions = {\n // currentName: oldName\n initLayout: 'isInitLayout',\n horizontal: 'isHorizontal',\n layoutInstant: 'isLayoutInstant',\n originLeft: 'isOriginLeft',\n originTop: 'isOriginTop',\n resize: 'isResizeBound',\n resizeContainer: 'isResizingContainer'\n};\n\nproto._create = function() {\n // get items from children\n this.reloadItems();\n // elements that affect layout, but are not laid out\n this.stamps = [];\n this.stamp( this.options.stamp );\n // set container style\n utils.extend( this.element.style, this.options.containerStyle );\n\n // bind resize method\n var canBindResize = this._getOption('resize');\n if ( canBindResize ) {\n this.bindResize();\n }\n};\n\n// goes through all children again and gets bricks in proper order\nproto.reloadItems = function() {\n // collection of item elements\n this.items = this._itemize( this.element.children );\n};\n\n\n/**\n * turn elements into Outlayer.Items to be used in layout\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - collection of new Outlayer Items\n */\nproto._itemize = function( elems ) {\n\n var itemElems = this._filterFindItemElements( elems );\n var Item = this.constructor.Item;\n\n // create new Outlayer Items for collection\n var items = [];\n for ( var i=0; i < itemElems.length; i++ ) {\n var elem = itemElems[i];\n var item = new Item( elem, this );\n items.push( item );\n }\n\n return items;\n};\n\n/**\n * get item elements to be used in layout\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - item elements\n */\nproto._filterFindItemElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.itemSelector );\n};\n\n/**\n * getter method for getting item elements\n * @returns {Array} elems - collection of item elements\n */\nproto.getItemElements = function() {\n return this.items.map( function( item ) {\n return item.element;\n });\n};\n\n// ----- init & layout ----- //\n\n/**\n * lays out all items\n */\nproto.layout = function() {\n this._resetLayout();\n this._manageStamps();\n\n // don't animate first layout\n var layoutInstant = this._getOption('layoutInstant');\n var isInstant = layoutInstant !== undefined ?\n layoutInstant : !this._isLayoutInited;\n this.layoutItems( this.items, isInstant );\n\n // flag for initalized\n this._isLayoutInited = true;\n};\n\n// _init is alias for layout\nproto._init = proto.layout;\n\n/**\n * logic before any new layout\n */\nproto._resetLayout = function() {\n this.getSize();\n};\n\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\n/**\n * get measurement from option, for columnWidth, rowHeight, gutter\n * if option is String -> get element from selector string, & get size of element\n * if option is Element -> get size of element\n * else use option as a number\n *\n * @param {String} measurement\n * @param {String} size - width or height\n * @private\n */\nproto._getMeasurement = function( measurement, size ) {\n var option = this.options[ measurement ];\n var elem;\n if ( !option ) {\n // default to 0\n this[ measurement ] = 0;\n } else {\n // use option as an element\n if ( typeof option == 'string' ) {\n elem = this.element.querySelector( option );\n } else if ( option instanceof HTMLElement ) {\n elem = option;\n }\n // use size of element, if element\n this[ measurement ] = elem ? getSize( elem )[ size ] : option;\n }\n};\n\n/**\n * layout a collection of item elements\n * @api public\n */\nproto.layoutItems = function( items, isInstant ) {\n items = this._getItemsForLayout( items );\n\n this._layoutItems( items, isInstant );\n\n this._postLayout();\n};\n\n/**\n * get the items to be laid out\n * you may want to skip over some items\n * @param {Array} items\n * @returns {Array} items\n */\nproto._getItemsForLayout = function( items ) {\n return items.filter( function( item ) {\n return !item.isIgnored;\n });\n};\n\n/**\n * layout items\n * @param {Array} items\n * @param {Boolean} isInstant\n */\nproto._layoutItems = function( items, isInstant ) {\n this._emitCompleteOnItems( 'layout', items );\n\n if ( !items || !items.length ) {\n // no items, emit event with empty array\n return;\n }\n\n var queue = [];\n\n items.forEach( function( item ) {\n // get x/y object from method\n var position = this._getItemLayoutPosition( item );\n // enqueue\n position.item = item;\n position.isInstant = isInstant || item.isLayoutInstant;\n queue.push( position );\n }, this );\n\n this._processLayoutQueue( queue );\n};\n\n/**\n * get item layout position\n * @param {Outlayer.Item} item\n * @returns {Object} x and y position\n */\nproto._getItemLayoutPosition = function( /* item */ ) {\n return {\n x: 0,\n y: 0\n };\n};\n\n/**\n * iterate over array and position each item\n * Reason being - separating this logic prevents 'layout invalidation'\n * thx @paul_irish\n * @param {Array} queue\n */\nproto._processLayoutQueue = function( queue ) {\n this.updateStagger();\n queue.forEach( function( obj, i ) {\n this._positionItem( obj.item, obj.x, obj.y, obj.isInstant, i );\n }, this );\n};\n\n// set stagger from option in milliseconds number\nproto.updateStagger = function() {\n var stagger = this.options.stagger;\n if ( stagger === null || stagger === undefined ) {\n this.stagger = 0;\n return;\n }\n this.stagger = getMilliseconds( stagger );\n return this.stagger;\n};\n\n/**\n * Sets position of item in DOM\n * @param {Outlayer.Item} item\n * @param {Number} x - horizontal position\n * @param {Number} y - vertical position\n * @param {Boolean} isInstant - disables transitions\n */\nproto._positionItem = function( item, x, y, isInstant, i ) {\n if ( isInstant ) {\n // if not transition, just set CSS\n item.goTo( x, y );\n } else {\n item.stagger( i * this.stagger );\n item.moveTo( x, y );\n }\n};\n\n/**\n * Any logic you want to do after each layout,\n * i.e. size the container\n */\nproto._postLayout = function() {\n this.resizeContainer();\n};\n\nproto.resizeContainer = function() {\n var isResizingContainer = this._getOption('resizeContainer');\n if ( !isResizingContainer ) {\n return;\n }\n var size = this._getContainerSize();\n if ( size ) {\n this._setContainerMeasure( size.width, true );\n this._setContainerMeasure( size.height, false );\n }\n};\n\n/**\n * Sets width or height of container if returned\n * @returns {Object} size\n * @param {Number} width\n * @param {Number} height\n */\nproto._getContainerSize = noop;\n\n/**\n * @param {Number} measure - size of width or height\n * @param {Boolean} isWidth\n */\nproto._setContainerMeasure = function( measure, isWidth ) {\n if ( measure === undefined ) {\n return;\n }\n\n var elemSize = this.size;\n // add padding and border width if border box\n if ( elemSize.isBorderBox ) {\n measure += isWidth ? elemSize.paddingLeft + elemSize.paddingRight +\n elemSize.borderLeftWidth + elemSize.borderRightWidth :\n elemSize.paddingBottom + elemSize.paddingTop +\n elemSize.borderTopWidth + elemSize.borderBottomWidth;\n }\n\n measure = Math.max( measure, 0 );\n this.element.style[ isWidth ? 'width' : 'height' ] = measure + 'px';\n};\n\n/**\n * emit eventComplete on a collection of items events\n * @param {String} eventName\n * @param {Array} items - Outlayer.Items\n */\nproto._emitCompleteOnItems = function( eventName, items ) {\n var _this = this;\n function onComplete() {\n _this.dispatchEvent( eventName + 'Complete', null, [ items ] );\n }\n\n var count = items.length;\n if ( !items || !count ) {\n onComplete();\n return;\n }\n\n var doneCount = 0;\n function tick() {\n doneCount++;\n if ( doneCount == count ) {\n onComplete();\n }\n }\n\n // bind callback\n items.forEach( function( item ) {\n item.once( eventName, tick );\n });\n};\n\n/**\n * emits events via EvEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n // add original event to arguments\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\n if ( jQuery ) {\n // set this.$element\n this.$element = this.$element || jQuery( this.element );\n if ( event ) {\n // create jQuery event\n var $event = jQuery.Event( event );\n $event.type = type;\n this.$element.trigger( $event, args );\n } else {\n // just trigger with type if no event available\n this.$element.trigger( type, args );\n }\n }\n};\n\n// -------------------------- ignore & stamps -------------------------- //\n\n\n/**\n * keep item in collection, but do not lay it out\n * ignored items do not get skipped in layout\n * @param {Element} elem\n */\nproto.ignore = function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n item.isIgnored = true;\n }\n};\n\n/**\n * return item to layout collection\n * @param {Element} elem\n */\nproto.unignore = function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n delete item.isIgnored;\n }\n};\n\n/**\n * adds elements to stamps\n * @param {NodeList, Array, Element, or String} elems\n */\nproto.stamp = function( elems ) {\n elems = this._find( elems );\n if ( !elems ) {\n return;\n }\n\n this.stamps = this.stamps.concat( elems );\n // ignore\n elems.forEach( this.ignore, this );\n};\n\n/**\n * removes elements to stamps\n * @param {NodeList, Array, or Element} elems\n */\nproto.unstamp = function( elems ) {\n elems = this._find( elems );\n if ( !elems ){\n return;\n }\n\n elems.forEach( function( elem ) {\n // filter out removed stamp elements\n utils.removeFrom( this.stamps, elem );\n this.unignore( elem );\n }, this );\n};\n\n/**\n * finds child elements\n * @param {NodeList, Array, Element, or String} elems\n * @returns {Array} elems\n */\nproto._find = function( elems ) {\n if ( !elems ) {\n return;\n }\n // if string, use argument as selector string\n if ( typeof elems == 'string' ) {\n elems = this.element.querySelectorAll( elems );\n }\n elems = utils.makeArray( elems );\n return elems;\n};\n\nproto._manageStamps = function() {\n if ( !this.stamps || !this.stamps.length ) {\n return;\n }\n\n this._getBoundingRect();\n\n this.stamps.forEach( this._manageStamp, this );\n};\n\n// update boundingLeft / Top\nproto._getBoundingRect = function() {\n // get bounding rect for container element\n var boundingRect = this.element.getBoundingClientRect();\n var size = this.size;\n this._boundingRect = {\n left: boundingRect.left + size.paddingLeft + size.borderLeftWidth,\n top: boundingRect.top + size.paddingTop + size.borderTopWidth,\n right: boundingRect.right - ( size.paddingRight + size.borderRightWidth ),\n bottom: boundingRect.bottom - ( size.paddingBottom + size.borderBottomWidth )\n };\n};\n\n/**\n * @param {Element} stamp\n**/\nproto._manageStamp = noop;\n\n/**\n * get x/y position of element relative to container element\n * @param {Element} elem\n * @returns {Object} offset - has left, top, right, bottom\n */\nproto._getElementOffset = function( elem ) {\n var boundingRect = elem.getBoundingClientRect();\n var thisRect = this._boundingRect;\n var size = getSize( elem );\n var offset = {\n left: boundingRect.left - thisRect.left - size.marginLeft,\n top: boundingRect.top - thisRect.top - size.marginTop,\n right: thisRect.right - boundingRect.right - size.marginRight,\n bottom: thisRect.bottom - boundingRect.bottom - size.marginBottom\n };\n return offset;\n};\n\n// -------------------------- resize -------------------------- //\n\n// enable event handlers for listeners\n// i.e. resize -> onresize\nproto.handleEvent = utils.handleEvent;\n\n/**\n * Bind layout to window resizing\n */\nproto.bindResize = function() {\n window.addEventListener( 'resize', this );\n this.isResizeBound = true;\n};\n\n/**\n * Unbind layout to window resizing\n */\nproto.unbindResize = function() {\n window.removeEventListener( 'resize', this );\n this.isResizeBound = false;\n};\n\nproto.onresize = function() {\n this.resize();\n};\n\nutils.debounceMethod( Outlayer, 'onresize', 100 );\n\nproto.resize = function() {\n // don't trigger if size did not change\n // or if resize was unbound. See #9\n if ( !this.isResizeBound || !this.needsResizeLayout() ) {\n return;\n }\n\n this.layout();\n};\n\n/**\n * check if layout is needed post layout\n * @returns Boolean\n */\nproto.needsResizeLayout = function() {\n var size = getSize( this.element );\n // check that this.size and size are there\n // IE8 triggers resize on body size change, so they might not be\n var hasSizes = this.size && size;\n return hasSizes && size.innerWidth !== this.size.innerWidth;\n};\n\n// -------------------------- methods -------------------------- //\n\n/**\n * add items to Outlayer instance\n * @param {Array or NodeList or Element} elems\n * @returns {Array} items - Outlayer.Items\n**/\nproto.addItems = function( elems ) {\n var items = this._itemize( elems );\n // add items to collection\n if ( items.length ) {\n this.items = this.items.concat( items );\n }\n return items;\n};\n\n/**\n * Layout newly-appended item elements\n * @param {Array or NodeList or Element} elems\n */\nproto.appended = function( elems ) {\n var items = this.addItems( elems );\n if ( !items.length ) {\n return;\n }\n // layout and reveal just the new items\n this.layoutItems( items, true );\n this.reveal( items );\n};\n\n/**\n * Layout prepended elements\n * @param {Array or NodeList or Element} elems\n */\nproto.prepended = function( elems ) {\n var items = this._itemize( elems );\n if ( !items.length ) {\n return;\n }\n // add items to beginning of collection\n var previousItems = this.items.slice(0);\n this.items = items.concat( previousItems );\n // start new layout\n this._resetLayout();\n this._manageStamps();\n // layout new stuff without transition\n this.layoutItems( items, true );\n this.reveal( items );\n // layout previous items\n this.layoutItems( previousItems );\n};\n\n/**\n * reveal a collection of items\n * @param {Array of Outlayer.Items} items\n */\nproto.reveal = function( items ) {\n this._emitCompleteOnItems( 'reveal', items );\n if ( !items || !items.length ) {\n return;\n }\n var stagger = this.updateStagger();\n items.forEach( function( item, i ) {\n item.stagger( i * stagger );\n item.reveal();\n });\n};\n\n/**\n * hide a collection of items\n * @param {Array of Outlayer.Items} items\n */\nproto.hide = function( items ) {\n this._emitCompleteOnItems( 'hide', items );\n if ( !items || !items.length ) {\n return;\n }\n var stagger = this.updateStagger();\n items.forEach( function( item, i ) {\n item.stagger( i * stagger );\n item.hide();\n });\n};\n\n/**\n * reveal item elements\n * @param {Array}, {Element}, {NodeList} items\n */\nproto.revealItemElements = function( elems ) {\n var items = this.getItems( elems );\n this.reveal( items );\n};\n\n/**\n * hide item elements\n * @param {Array}, {Element}, {NodeList} items\n */\nproto.hideItemElements = function( elems ) {\n var items = this.getItems( elems );\n this.hide( items );\n};\n\n/**\n * get Outlayer.Item, given an Element\n * @param {Element} elem\n * @param {Function} callback\n * @returns {Outlayer.Item} item\n */\nproto.getItem = function( elem ) {\n // loop through items to get the one that matches\n for ( var i=0; i < this.items.length; i++ ) {\n var item = this.items[i];\n if ( item.element == elem ) {\n // return item\n return item;\n }\n }\n};\n\n/**\n * get collection of Outlayer.Items, given Elements\n * @param {Array} elems\n * @returns {Array} items - Outlayer.Items\n */\nproto.getItems = function( elems ) {\n elems = utils.makeArray( elems );\n var items = [];\n elems.forEach( function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n items.push( item );\n }\n }, this );\n\n return items;\n};\n\n/**\n * remove element(s) from instance and DOM\n * @param {Array or NodeList or Element} elems\n */\nproto.remove = function( elems ) {\n var removeItems = this.getItems( elems );\n\n this._emitCompleteOnItems( 'remove', removeItems );\n\n // bail if no items to remove\n if ( !removeItems || !removeItems.length ) {\n return;\n }\n\n removeItems.forEach( function( item ) {\n item.remove();\n // remove item from collection\n utils.removeFrom( this.items, item );\n }, this );\n};\n\n// ----- destroy ----- //\n\n// remove and disable Outlayer instance\nproto.destroy = function() {\n // clean up dynamic styles\n var style = this.element.style;\n style.height = '';\n style.position = '';\n style.width = '';\n // destroy items\n this.items.forEach( function( item ) {\n item.destroy();\n });\n\n this.unbindResize();\n\n var id = this.element.outlayerGUID;\n delete instances[ id ]; // remove reference to instance by id\n delete this.element.outlayerGUID;\n // remove data for jQuery\n if ( jQuery ) {\n jQuery.removeData( this.element, this.constructor.namespace );\n }\n\n};\n\n// -------------------------- data -------------------------- //\n\n/**\n * get Outlayer instance from element\n * @param {Element} elem\n * @returns {Outlayer}\n */\nOutlayer.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.outlayerGUID;\n return id && instances[ id ];\n};\n\n\n// -------------------------- create Outlayer class -------------------------- //\n\n/**\n * create a layout class\n * @param {String} namespace\n */\nOutlayer.create = function( namespace, options ) {\n // sub-class Outlayer\n var Layout = subclass( Outlayer );\n // apply new options and compatOptions\n Layout.defaults = utils.extend( {}, Outlayer.defaults );\n utils.extend( Layout.defaults, options );\n Layout.compatOptions = utils.extend( {}, Outlayer.compatOptions );\n\n Layout.namespace = namespace;\n\n Layout.data = Outlayer.data;\n\n // sub-class Item\n Layout.Item = subclass( Item );\n\n // -------------------------- declarative -------------------------- //\n\n utils.htmlInit( Layout, namespace );\n\n // -------------------------- jQuery bridge -------------------------- //\n\n // make into jQuery plugin\n if ( jQuery && jQuery.bridget ) {\n jQuery.bridget( namespace, Layout );\n }\n\n return Layout;\n};\n\nfunction subclass( Parent ) {\n function SubClass() {\n Parent.apply( this, arguments );\n }\n\n SubClass.prototype = Object.create( Parent.prototype );\n SubClass.prototype.constructor = SubClass;\n\n return SubClass;\n}\n\n// ----- helpers ----- //\n\n// how many milliseconds are in each unit\nvar msUnits = {\n ms: 1,\n s: 1000\n};\n\n// munge time-like parameter into millisecond number\n// '0.4s' -> 40\nfunction getMilliseconds( time ) {\n if ( typeof time == 'number' ) {\n return time;\n }\n var matches = time.match( /(^\\d*\\.?\\d*)(\\w*)/ );\n var num = matches && matches[1];\n var unit = matches && matches[2];\n if ( !num.length ) {\n return 0;\n }\n num = parseFloat( num );\n var mult = msUnits[ unit ] || 1;\n return num * mult;\n}\n\n// ----- fin ----- //\n\n// back in global\nOutlayer.Item = Item;\n\nreturn Outlayer;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/outlayer/outlayer.js\n// module id = 164\n// module chunks = 0","/**\n * Outlayer Item\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size'\n ],\n factory\n );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory(\n require('ev-emitter'),\n require('get-size')\n );\n } else {\n // browser global\n window.Outlayer = {};\n window.Outlayer.Item = factory(\n window.EvEmitter,\n window.getSize\n );\n }\n\n}( window, function factory( EvEmitter, getSize ) {\n'use strict';\n\n// ----- helpers ----- //\n\nfunction isEmptyObj( obj ) {\n for ( var prop in obj ) {\n return false;\n }\n prop = null;\n return true;\n}\n\n// -------------------------- CSS3 support -------------------------- //\n\n\nvar docElemStyle = document.documentElement.style;\n\nvar transitionProperty = typeof docElemStyle.transition == 'string' ?\n 'transition' : 'WebkitTransition';\nvar transformProperty = typeof docElemStyle.transform == 'string' ?\n 'transform' : 'WebkitTransform';\n\nvar transitionEndEvent = {\n WebkitTransition: 'webkitTransitionEnd',\n transition: 'transitionend'\n}[ transitionProperty ];\n\n// cache all vendor properties that could have vendor prefix\nvar vendorProperties = {\n transform: transformProperty,\n transition: transitionProperty,\n transitionDuration: transitionProperty + 'Duration',\n transitionProperty: transitionProperty + 'Property',\n transitionDelay: transitionProperty + 'Delay'\n};\n\n// -------------------------- Item -------------------------- //\n\nfunction Item( element, layout ) {\n if ( !element ) {\n return;\n }\n\n this.element = element;\n // parent layout class, i.e. Masonry, Isotope, or Packery\n this.layout = layout;\n this.position = {\n x: 0,\n y: 0\n };\n\n this._create();\n}\n\n// inherit EvEmitter\nvar proto = Item.prototype = Object.create( EvEmitter.prototype );\nproto.constructor = Item;\n\nproto._create = function() {\n // transition objects\n this._transn = {\n ingProperties: {},\n clean: {},\n onEnd: {}\n };\n\n this.css({\n position: 'absolute'\n });\n};\n\n// trigger specified handler for event type\nproto.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\n/**\n * apply CSS styles to element\n * @param {Object} style\n */\nproto.css = function( style ) {\n var elemStyle = this.element.style;\n\n for ( var prop in style ) {\n // use vendor property if available\n var supportedProp = vendorProperties[ prop ] || prop;\n elemStyle[ supportedProp ] = style[ prop ];\n }\n};\n\n // measure position, and sets it\nproto.getPosition = function() {\n var style = getComputedStyle( this.element );\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n var xValue = style[ isOriginLeft ? 'left' : 'right' ];\n var yValue = style[ isOriginTop ? 'top' : 'bottom' ];\n var x = parseFloat( xValue );\n var y = parseFloat( yValue );\n // convert percent to pixels\n var layoutSize = this.layout.size;\n if ( xValue.indexOf('%') != -1 ) {\n x = ( x / 100 ) * layoutSize.width;\n }\n if ( yValue.indexOf('%') != -1 ) {\n y = ( y / 100 ) * layoutSize.height;\n }\n // clean up 'auto' or other non-integer values\n x = isNaN( x ) ? 0 : x;\n y = isNaN( y ) ? 0 : y;\n // remove padding from measurement\n x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight;\n y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom;\n\n this.position.x = x;\n this.position.y = y;\n};\n\n// set settled position, apply padding\nproto.layoutPosition = function() {\n var layoutSize = this.layout.size;\n var style = {};\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n\n // x\n var xPadding = isOriginLeft ? 'paddingLeft' : 'paddingRight';\n var xProperty = isOriginLeft ? 'left' : 'right';\n var xResetProperty = isOriginLeft ? 'right' : 'left';\n\n var x = this.position.x + layoutSize[ xPadding ];\n // set in percentage or pixels\n style[ xProperty ] = this.getXValue( x );\n // reset other property\n style[ xResetProperty ] = '';\n\n // y\n var yPadding = isOriginTop ? 'paddingTop' : 'paddingBottom';\n var yProperty = isOriginTop ? 'top' : 'bottom';\n var yResetProperty = isOriginTop ? 'bottom' : 'top';\n\n var y = this.position.y + layoutSize[ yPadding ];\n // set in percentage or pixels\n style[ yProperty ] = this.getYValue( y );\n // reset other property\n style[ yResetProperty ] = '';\n\n this.css( style );\n this.emitEvent( 'layout', [ this ] );\n};\n\nproto.getXValue = function( x ) {\n var isHorizontal = this.layout._getOption('horizontal');\n return this.layout.options.percentPosition && !isHorizontal ?\n ( ( x / this.layout.size.width ) * 100 ) + '%' : x + 'px';\n};\n\nproto.getYValue = function( y ) {\n var isHorizontal = this.layout._getOption('horizontal');\n return this.layout.options.percentPosition && isHorizontal ?\n ( ( y / this.layout.size.height ) * 100 ) + '%' : y + 'px';\n};\n\nproto._transitionTo = function( x, y ) {\n this.getPosition();\n // get current x & y from top/left\n var curX = this.position.x;\n var curY = this.position.y;\n\n var didNotMove = x == this.position.x && y == this.position.y;\n\n // save end position\n this.setPosition( x, y );\n\n // if did not move and not transitioning, just go to layout\n if ( didNotMove && !this.isTransitioning ) {\n this.layoutPosition();\n return;\n }\n\n var transX = x - curX;\n var transY = y - curY;\n var transitionStyle = {};\n transitionStyle.transform = this.getTranslate( transX, transY );\n\n this.transition({\n to: transitionStyle,\n onTransitionEnd: {\n transform: this.layoutPosition\n },\n isCleaning: true\n });\n};\n\nproto.getTranslate = function( x, y ) {\n // flip cooridinates if origin on right or bottom\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n x = isOriginLeft ? x : -x;\n y = isOriginTop ? y : -y;\n return 'translate3d(' + x + 'px, ' + y + 'px, 0)';\n};\n\n// non transition + transform support\nproto.goTo = function( x, y ) {\n this.setPosition( x, y );\n this.layoutPosition();\n};\n\nproto.moveTo = proto._transitionTo;\n\nproto.setPosition = function( x, y ) {\n this.position.x = parseFloat( x );\n this.position.y = parseFloat( y );\n};\n\n// ----- transition ----- //\n\n/**\n * @param {Object} style - CSS\n * @param {Function} onTransitionEnd\n */\n\n// non transition, just trigger callback\nproto._nonTransition = function( args ) {\n this.css( args.to );\n if ( args.isCleaning ) {\n this._removeStyles( args.to );\n }\n for ( var prop in args.onTransitionEnd ) {\n args.onTransitionEnd[ prop ].call( this );\n }\n};\n\n/**\n * proper transition\n * @param {Object} args - arguments\n * @param {Object} to - style to transition to\n * @param {Object} from - style to start transition from\n * @param {Boolean} isCleaning - removes transition styles after transition\n * @param {Function} onTransitionEnd - callback\n */\nproto.transition = function( args ) {\n // redirect to nonTransition if no transition duration\n if ( !parseFloat( this.layout.options.transitionDuration ) ) {\n this._nonTransition( args );\n return;\n }\n\n var _transition = this._transn;\n // keep track of onTransitionEnd callback by css property\n for ( var prop in args.onTransitionEnd ) {\n _transition.onEnd[ prop ] = args.onTransitionEnd[ prop ];\n }\n // keep track of properties that are transitioning\n for ( prop in args.to ) {\n _transition.ingProperties[ prop ] = true;\n // keep track of properties to clean up when transition is done\n if ( args.isCleaning ) {\n _transition.clean[ prop ] = true;\n }\n }\n\n // set from styles\n if ( args.from ) {\n this.css( args.from );\n // force redraw. http://blog.alexmaccaw.com/css-transitions\n var h = this.element.offsetHeight;\n // hack for JSHint to hush about unused var\n h = null;\n }\n // enable transition\n this.enableTransition( args.to );\n // set styles that are transitioning\n this.css( args.to );\n\n this.isTransitioning = true;\n\n};\n\n// dash before all cap letters, including first for\n// WebkitTransform => -webkit-transform\nfunction toDashedAll( str ) {\n return str.replace( /([A-Z])/g, function( $1 ) {\n return '-' + $1.toLowerCase();\n });\n}\n\nvar transitionProps = 'opacity,' + toDashedAll( transformProperty );\n\nproto.enableTransition = function(/* style */) {\n // HACK changing transitionProperty during a transition\n // will cause transition to jump\n if ( this.isTransitioning ) {\n return;\n }\n\n // make `transition: foo, bar, baz` from style object\n // HACK un-comment this when enableTransition can work\n // while a transition is happening\n // var transitionValues = [];\n // for ( var prop in style ) {\n // // dash-ify camelCased properties like WebkitTransition\n // prop = vendorProperties[ prop ] || prop;\n // transitionValues.push( toDashedAll( prop ) );\n // }\n // munge number to millisecond, to match stagger\n var duration = this.layout.options.transitionDuration;\n duration = typeof duration == 'number' ? duration + 'ms' : duration;\n // enable transition styles\n this.css({\n transitionProperty: transitionProps,\n transitionDuration: duration,\n transitionDelay: this.staggerDelay || 0\n });\n // listen for transition end event\n this.element.addEventListener( transitionEndEvent, this, false );\n};\n\n// ----- events ----- //\n\nproto.onwebkitTransitionEnd = function( event ) {\n this.ontransitionend( event );\n};\n\nproto.onotransitionend = function( event ) {\n this.ontransitionend( event );\n};\n\n// properties that I munge to make my life easier\nvar dashedVendorProperties = {\n '-webkit-transform': 'transform'\n};\n\nproto.ontransitionend = function( event ) {\n // disregard bubbled events from children\n if ( event.target !== this.element ) {\n return;\n }\n var _transition = this._transn;\n // get property name of transitioned property, convert to prefix-free\n var propertyName = dashedVendorProperties[ event.propertyName ] || event.propertyName;\n\n // remove property that has completed transitioning\n delete _transition.ingProperties[ propertyName ];\n // check if any properties are still transitioning\n if ( isEmptyObj( _transition.ingProperties ) ) {\n // all properties have completed transitioning\n this.disableTransition();\n }\n // clean style\n if ( propertyName in _transition.clean ) {\n // clean up style\n this.element.style[ event.propertyName ] = '';\n delete _transition.clean[ propertyName ];\n }\n // trigger onTransitionEnd callback\n if ( propertyName in _transition.onEnd ) {\n var onTransitionEnd = _transition.onEnd[ propertyName ];\n onTransitionEnd.call( this );\n delete _transition.onEnd[ propertyName ];\n }\n\n this.emitEvent( 'transitionEnd', [ this ] );\n};\n\nproto.disableTransition = function() {\n this.removeTransitionStyles();\n this.element.removeEventListener( transitionEndEvent, this, false );\n this.isTransitioning = false;\n};\n\n/**\n * removes style property from element\n * @param {Object} style\n**/\nproto._removeStyles = function( style ) {\n // clean up transition styles\n var cleanStyle = {};\n for ( var prop in style ) {\n cleanStyle[ prop ] = '';\n }\n this.css( cleanStyle );\n};\n\nvar cleanTransitionStyle = {\n transitionProperty: '',\n transitionDuration: '',\n transitionDelay: ''\n};\n\nproto.removeTransitionStyles = function() {\n // remove transition\n this.css( cleanTransitionStyle );\n};\n\n// ----- stagger ----- //\n\nproto.stagger = function( delay ) {\n delay = isNaN( delay ) ? 0 : delay;\n this.staggerDelay = delay + 'ms';\n};\n\n// ----- show/hide/remove ----- //\n\n// remove element from DOM\nproto.removeElem = function() {\n this.element.parentNode.removeChild( this.element );\n // remove display: none\n this.css({ display: '' });\n this.emitEvent( 'remove', [ this ] );\n};\n\nproto.remove = function() {\n // just remove element if no transition support or no transition\n if ( !transitionProperty || !parseFloat( this.layout.options.transitionDuration ) ) {\n this.removeElem();\n return;\n }\n\n // start transition\n this.once( 'transitionEnd', function() {\n this.removeElem();\n });\n this.hide();\n};\n\nproto.reveal = function() {\n delete this.isHidden;\n // remove display: none\n this.css({ display: '' });\n\n var options = this.layout.options;\n\n var onTransitionEnd = {};\n var transitionEndProperty = this.getHideRevealTransitionEndProperty('visibleStyle');\n onTransitionEnd[ transitionEndProperty ] = this.onRevealTransitionEnd;\n\n this.transition({\n from: options.hiddenStyle,\n to: options.visibleStyle,\n isCleaning: true,\n onTransitionEnd: onTransitionEnd\n });\n};\n\nproto.onRevealTransitionEnd = function() {\n // check if still visible\n // during transition, item may have been hidden\n if ( !this.isHidden ) {\n this.emitEvent('reveal');\n }\n};\n\n/**\n * get style property use for hide/reveal transition end\n * @param {String} styleProperty - hiddenStyle/visibleStyle\n * @returns {String}\n */\nproto.getHideRevealTransitionEndProperty = function( styleProperty ) {\n var optionStyle = this.layout.options[ styleProperty ];\n // use opacity\n if ( optionStyle.opacity ) {\n return 'opacity';\n }\n // get first property\n for ( var prop in optionStyle ) {\n return prop;\n }\n};\n\nproto.hide = function() {\n // set flag\n this.isHidden = true;\n // remove display: none\n this.css({ display: '' });\n\n var options = this.layout.options;\n\n var onTransitionEnd = {};\n var transitionEndProperty = this.getHideRevealTransitionEndProperty('hiddenStyle');\n onTransitionEnd[ transitionEndProperty ] = this.onHideTransitionEnd;\n\n this.transition({\n from: options.visibleStyle,\n to: options.hiddenStyle,\n // keep hidden stuff hidden\n isCleaning: true,\n onTransitionEnd: onTransitionEnd\n });\n};\n\nproto.onHideTransitionEnd = function() {\n // check if still hidden\n // during transition, item may have been un-hidden\n if ( this.isHidden ) {\n this.css({ display: 'none' });\n this.emitEvent('hide');\n }\n};\n\nproto.destroy = function() {\n this.css({\n position: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n transition: '',\n transform: ''\n });\n};\n\nreturn Item;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/outlayer/item.js\n// module id = 165\n// module chunks = 0","var Instagram = {};\r\n\r\nfunction calculatePosition() {\r\n var tileInfoHeight = $('.instagram-gallery .tile-block-hidden').outerHeight();\r\n var infoHeight = $('.instagram-gallery .instagram-info').outerHeight();\r\n var instagramInfo = $('.instagram-info-margin');\r\n\r\n if (tileInfoHeight > infoHeight) {\r\n instagramInfo.css({\r\n 'margin-bottom': (tileInfoHeight * -1) + 'px',\r\n 'padding-top': ( tileInfoHeight - infoHeight) + 'px',\r\n });\r\n $('.instagram-gallery').removeClass('is-text-overlapping');\r\n } else {\r\n instagramInfo.css({\r\n 'margin-bottom': (tileInfoHeight * -1) + 'px',\r\n 'padding-top': '0',\r\n });\r\n $('.instagram-gallery').addClass('is-text-overlapping');\r\n }\r\n}\r\n\r\nInstagram.infoPosition = function() {\r\n calculatePosition();\r\n\r\n $(window).resize(function () {\r\n calculatePosition();\r\n });\r\n};\r\n\r\nInstagram.infoPosition();\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/instagram.js","import { stokpress } from '../util/helper';\r\nimport Rule from '../util/Rule';\r\nvar Alert = require('../components/alert');\r\n\r\nvar Newsletter = {};\r\n\r\n(function($){\r\n\r\n\tNewsletter.updateErrorHtml = function() {\r\n\t\tvar formError = this.parentNode.querySelector('.js-form-error');\r\n\r\n\t\tif (!formError) {\r\n\t\t\tformError = this.parentNode.parentNode.querySelector('.js-form-error');\r\n\t\t}\r\n\r\n\t\tif (formError && formError.innerText.length > 0) {\r\n\t\t\tformError.innerText = null;\r\n\t\t\tthis.classList.remove( Newsletter.elClasses.error );\r\n\t\t}\r\n\t};\r\n\r\n\tNewsletter.removeErrors = function (wrapperEl) {\r\n\t\tvar inputs = wrapperEl.querySelectorAll( 'input' );\r\n\r\n\t\tif (inputs.length === 0) { \r\n\t\t\treturn; \r\n\t\t}\r\n\r\n\t\tfor (var i=0; i < inputs.length; i++) {\r\n\t\t\tinputs[i].addEventListener( 'focus', Newsletter.updateErrorHtml );\r\n\t\t\tinputs[i].addEventListener( 'click', Newsletter.updateErrorHtml );\r\n\t\t} \r\n\t};\r\n\r\n\tNewsletter.validateEmail = function( email ) {\r\n\t\tvar re = /^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)$/i;\r\n\t\treturn re.test( email );\r\n\t};\r\n\r\n\tNewsletter.formValidation = function( wrapperEl ) {\r\n\t\tvar errorMessages = JSON.parse( wrapperEl.getAttribute( 'data-messages' ) );\r\n\t\tvar email = wrapperEl.querySelector( 'input[name=\"esc_email\"]' );\r\n\t\tvar terms = wrapperEl.querySelector( 'input[name=\"accept_terms\"]' );\r\n\t\tvar errors = {};\r\n\r\n\t\t// Form validation\r\n\t\tif( email.value.length === 0 ) {\r\n\t\t\terrors.email = ( errorMessages && errorMessages.required_email ) ? errorMessages.required_email : 'E-mail field is required';\r\n\t\t} else if ( !Newsletter.validateEmail( email.value ) ) {\r\n\t\t\terrors.email = ( errorMessages && errorMessages.invalid_email ) ? errorMessages.invalid_email : 'Email address is invalid';\r\n\t\t}\r\n\r\n\t\tif( terms.checked === false ) {\r\n\t\t\terrors.terms = ( errorMessages && errorMessages.required_terms ) ? errorMessages.required_terms : 'Accept terms is required';\r\n\t\t}\r\n\r\n\t\t// Return false if no errors\r\n\t\tif (Object.keys(errors).length === 0) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Display error\r\n\t\tfor( var key in errors ) {\r\n\t\t\tvar errorEl = wrapperEl.querySelector( '.js-form-error[data-field=\"'+ key +'\"]' );\r\n\t\t\tif (errorEl) {\r\n\t\t\t\terrorEl.innerText = errors[ key ];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tvar elToAddClass = key === 'email' ? email : terms;\r\n\t\t\telToAddClass.classList.add( Newsletter.elClasses.error );\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t};\r\n\r\n\tNewsletter.formSubmit = function ( form ) {\r\n\t\tif ( !form ) { return; }\r\n\t\t\r\n\t\tvar formData = new FormData( form );\r\n\t\tformData.append( 'ajax', 1 );\r\n\t\t\r\n\t\tvar button = form.querySelector('button[type=\"submit\"]');\r\n\t\tbutton.classList.add( Newsletter.elClasses.isLoading );\t\r\n\r\n\t\tvar hasErrors = Newsletter.formValidation( form );\r\n\t\tif (hasErrors) {\r\n\t\t\treturn setTimeout( function () {\r\n\t\t\t\tbutton.classList.remove( Newsletter.elClasses.isLoading );\r\n\t\t\t}, 500 );\t\t\r\n\t\t}\r\n\r\n\t\tif( form.dataset.formType === 'mailingList' ) {\r\n\t\t\tNewsletter.processRuleMailingList(formData, form, button);\r\n\t\t} else if(formData.has('is_notification')){\r\n\t\t\tNewsletter.processBackInStock(formData, form, button);\r\n\t\t} else {\r\n\t\t\tvar sendData = [];\r\n\r\n\t\t\tformData.forEach(function(value, key){\r\n\t\t\t\tsendData.push( encodeURIComponent(key) + '=' + encodeURIComponent(value) );\t \r\n\t\t\t});\r\n\t\r\n\t\t\tvar xhr = new XMLHttpRequest();\r\n\t\t\txhr.onreadystatechange = function() {\r\n\t\t\t\tif( xhr.readyState == XMLHttpRequest.DONE ) {\r\n\t\t\t\t\tif (xhr.status == 200) {\r\n\t\t\t\t\t\tvar response = JSON.parse(xhr.response);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif (response.success || response.success === true) {\r\n\t\t\t\t\t\t\tsetTimeout( function () {\r\n\t\t\t\t\t\t\t\tbutton.classList.remove( Newsletter.elClasses.isLoading );\t\r\n\t\t\t\t\t\t\t\tNewsletter.formSuccess(form);\r\n\t\t\t\t\t\t\t}, 1500 );\r\n\t\r\n\t\t\t\t\t\t\tvar targetEl = $( form.dataset.target );\r\n\t\t\t\t\t\t\tif (targetEl && targetEl.attr('id') === 'js-newsletter-modal') {\r\n\t\t\t\t\t\t\t\tvar displayTime = targetEl.data('display_time');\r\n\t\r\n\t\t\t\t\t\t\t\tif (form.dataset.success_type === 'alert') {\r\n\t\t\t\t\t\t\t\t\tdisplayTime = 0;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tNewsletter.forceCloseModal( targetEl, displayTime );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\txhr.open( 'POST', '/', true );\r\n\t\t\txhr.setRequestHeader( 'Accept', 'application/json, text/javascript, */*; q=0.01' );\r\n\t\t\txhr.setRequestHeader( 'Content-type', 'application/x-www-form-urlencoded;charset=UTF-8' );\r\n\t\t\txhr.send( sendData.join('&') );\r\n\t\t}\r\n\t};\r\n\r\n\tNewsletter.processBackInStock = function(formData, form, button) {\r\n\t\tvar body = new FormData();\r\n\t\t\r\n\t\tbody.append('email', formData.get('esc_email'));\r\n\t\tbody.append('item', formData.get('notify[item]'));\r\n\t\tbody.append('language', formData.get('notify[language]'));\r\n\t\tbody.append('action', 'process_back_in_stock');\r\n\r\n\t\tfetch(window.ajaxURL, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\tbody: body,\r\n\t\t}).then(function(response) {\r\n\t\t\treturn response.json();\r\n\t\t}).then(function(jsonResponse) {\r\n\t\t\tsetTimeout( function () {\r\n\t\t\t\tbutton.classList.remove( Newsletter.elClasses.isLoading );\t\r\n\t\t\t}, 1500 );\r\n\t\t\r\n\t\t\tif (jsonResponse.success) {\r\n\t\t\t\tbutton.classList.remove( Newsletter.elClasses.isLoading );\t\t\t\t\r\n\t\t\t\tNewsletter.formSuccess(form, false);\r\n\t\t\t} else {\r\n\t\t\t\tAlert.show( jsonResponse.data.message );\r\n\t\t\t}\r\n\t\t});\t\t\t\r\n\t};\r\n\r\n\tNewsletter.processRuleMailingList = function(formData, form, button) {\r\n\t\tconst email = formData.get('esc_email');\r\n\t\tconst language = formData.get('language');\r\n\t\tconst additionalTags = formData.get('additional_tags');\r\n\t\tconst selectedInterests = formData.getAll('interests');\r\n\r\n\t\tlet interests = '';\r\n\t\tif (selectedInterests.length) {\r\n\t\t\tinterests = selectedInterests.join(',').trim();\r\n\t\t}\r\n\r\n\t\tconst rule = new Rule();\r\n\t\t\r\n\t\trule.addSubscriber(email, interests, additionalTags, language).then(function ( response ) {\r\n\t\t\tsetTimeout( function () {\r\n\t\t\t\tbutton.classList.remove( Newsletter.elClasses.isLoading );\t\r\n\t\t\t}, 1500 );\r\n\r\n\t\t\tif (response.success) {\r\n\t\t\t\tbutton.classList.remove( Newsletter.elClasses.isLoading );\t\t\t\t\r\n\t\t\t\tNewsletter.formSuccess(form);\r\n\t\t\t} else {\r\n\t\t\t\tAlert.show( response.data.message );\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tNewsletter.forceCloseModal = function( el, displayTime ) {\r\n\t\tsetTimeout( function () {\r\n\t\t\tel.modal('hide');\r\n\t\t}, displayTime * 1000 );\r\n\t};\t\r\n\r\n\tNewsletter.formSuccess = function(form, reset=true) {\r\n\t\tvar targetContainer = document.querySelector(form.dataset.target);\r\n\t\tvar successType = form.dataset.success_type;\r\n\r\n\t\tif (targetContainer && successType === 'success-message') {\r\n\t\t\ttargetContainer.classList.add('is-success');\r\n\t\t\tNewsletter.displaySuccessMessage( targetContainer, '.js-newsletter-success', '.js-newsletter-content' );\r\n\r\n\t\t} else if( successType === 'alert' ) {\r\n\t\t\tvar btn = document.getElementById( 'js-alert-button' );\r\n\t\t\tvar btnText = btn ? btn.dataset.text : '';\r\n\r\n\t\t\tAlert.show( 'success', form.dataset.alert_title, form.dataset.alert, btnText );\r\n\t\t}\r\n\r\n\t\tif (reset) {\r\n\t\t\tNewsletter.resetForm(targetContainer, form, successType);\r\n\t\t}\t\r\n\t};\r\n\r\n\tNewsletter.resetForm = function( targetContainer, form, successType ) {\r\n\t\tform.querySelector( 'input[name=\"esc_email\"]' ).value = '';\r\n\t\tform.querySelector( 'input[name=\"accept_terms\"]' ).checked = false;\t\r\n\r\n\t\tvar checkboxes = form.querySelectorAll( '.custom-control-input' );\r\n\t\tif (checkboxes.length) {\r\n\t\t\tcheckboxes.forEach(function (item) {\r\n\t\t\t\titem.checked = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (successType === 'success-message') {\r\n\t\t\tsetTimeout( function () {\t\t\t\t\r\n\t\t\t\ttargetContainer.classList.remove('is-success');\r\n\t\t\t\tNewsletter.displaySuccessMessage( targetContainer, '.js-newsletter-content', '.js-newsletter-success' );\r\n\t\t\t}, 10000 );\r\n\t\t}\r\n\t};\r\n\r\n\tNewsletter.displaySuccessMessage = function( targetContainer, toDisplayClass, toHideClass ) {\r\n\t\tif (!targetContainer) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar contentToDisplay = targetContainer.querySelectorAll( toDisplayClass );\r\n\t\tvar contentToHide = targetContainer.querySelectorAll( toHideClass );\r\n\r\n\t\tif( contentToHide.length > 0 ) {\r\n\t\t\tArray.prototype.forEach.call( contentToHide, function ( element ) {\r\n\t\t\t\telement.classList.add( Newsletter.elClasses.hidden );\r\n\t\t\t} );\r\n\t\t}\t\r\n\r\n\t\tif( contentToDisplay.length > 0 ) {\r\n\t\t\tArray.prototype.forEach.call( contentToDisplay, function ( element ) {\r\n\t\t\t\telement.classList.remove( Newsletter.elClasses.hidden );\r\n\t\t\t} );\r\n\t\t}\r\n\t};\r\n\r\n\tNewsletter.modal = function( modal ) {\r\n\t\tif( !modal ) { \r\n\t\t\treturn; \r\n\t\t}\r\n\r\n\t\tvar cookieName = modal.data( 'cookie' );\r\n\t\tvar delay = modal.data( 'delay' );\r\n\t\t\r\n\t\tif( !stokpress.getCookie( cookieName ) ) {\r\n\t\t\t// Show modal\r\n\t\t\tsetTimeout( function () {\r\n\t\t\t\tmodal.modal('show');\r\n\t\t\t\tstokpress.setCookie( cookieName, true, 365 );\r\n\t\t\t}, delay * 1000 );\r\n\t\t}\r\n\t};\r\n\r\n\tNewsletter.init = function ( mainWrapper, modalId ) {\t\r\n\t\tvar container = document.querySelectorAll( mainWrapper );\r\n\t\tif (container.length === 0) { \r\n\t\t\treturn; \r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < container.length; i++) {\r\n\r\n\t\t\t// Form submit\r\n\t\t\tvar form = container[i];\r\n\t\t\tform.addEventListener( 'submit', function (e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tNewsletter.formSubmit( this );\r\n\t\t\t});\r\n\r\n\t\t\t// Remove Errors on input change\r\n\t\t\tNewsletter.removeErrors( form );\r\n\t\t}\r\n\r\n\t\t// Newsletter Modal\r\n\t\tvar modal = $( modalId );\r\n\t\tif (modal.length) {\r\n\t\t\tNewsletter.modal( modal );\r\n\t\t}\r\n\t};\r\n\r\n\tdocument.addEventListener( 'DOMContentLoaded', function () {\r\n\t\tNewsletter.elClasses = {\r\n\t\t\thidden: 'd-none',\r\n\t\t\tisLoading: 'is-loading',\r\n\t\t\tisDisabled: 'is-disabled',\r\n\t\t\terror: 'is-invalid',\r\n\t\t};\r\n\r\n\t\tNewsletter.init( '.js-newsletter', '#js-newsletter-modal' );\r\n\t} );\r\n\r\n\twindow.Newsletter = Newsletter;\r\n})(jQuery);\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/newsletter.js","export default class Rule {\r\n constructor() {\r\n console.log('Rule!');\r\n }\r\n addSubscriber(email, interests, additionalTags, language = 'en') {\r\n return fetch(`/wp-json/stok/v1/rule/subscriber/${email}`, {\r\n method: 'post',\r\n headers: {\r\n 'Content-type': 'application/json; charset=UTF-8',\r\n },\r\n body: JSON.stringify({\r\n interests: interests,\r\n language: language,\r\n additionalTags: additionalTags,\r\n }),\r\n })\r\n .then((data) => data.json())\r\n .then(function (data) {\r\n console.log('Request succeeded with JSON response', data);\r\n return data;\r\n })\r\n .catch(function (error) {\r\n console.log('Request failed', error);\r\n });\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/Rule.js","/*global FilterUpdater, Filter */\r\n\r\n( function ( $ ) {\r\n\r\n var hashQueryString = window.location.hash,\r\n currentSort = $( '#js-current-sort' ),\r\n listingHolder = $( '#js-listing-holder' ),\r\n holder = $( '.silk-product-item-holder' ),\r\n firstItem = holder.length > 0 ? holder.children()[0].outerHTML : '',\r\n loadMore = $( '.silk-loadmore' ),\r\n language = loadMore.data( 'language' ),\r\n search = loadMore.data( 'search' ),\r\n allProducts = $('.products .product').clone(),\r\n searchHitCountSelector = '.js-hit-count',\r\n titleCard;\r\n\r\n if( allProducts.length > 0 ) {\r\n titleCard = allProducts.eq(0).clone();\r\n allProducts.eq(0).remove();\r\n }\r\n\r\n loadMore.addClass('d-none');\r\n\r\n if( $( '#silkFilterForm' ).data( 'ajaxurl' ) ) {\r\n filterDataLoad();\r\n }\r\n\r\n if ( hashQueryString != '' ) {\r\n holder.html( '' );\r\n loadMore.addClass( 'd-none' );\r\n $( '.silk-spinner' ).removeClass( 'd-none' );\r\n //silkProductLoad( 1 );\r\n }\r\n\r\n loadMore.click( function () {\r\n var currentPage = $( this ).data( 'currentpage' );\r\n var nextPage = currentPage + 1;\r\n silkProductLoad( nextPage );\r\n $( this ).data( 'currentpage', nextPage );\r\n } );\r\n\r\n $( '.silk-hash-clear' ).click( function (e) {\r\n e.preventDefault();\r\n history.pushState( '', document.title, window.location.pathname + window.location.search );\r\n $( '#silkFilterForm' ).trigger( 'reset' );\r\n $( '.silk-hash-orderby' ).removeClass( 'active' );\r\n $( '.check-count' ).each( function () {\r\n $( this ).html( '<strong></strong>' );\r\n $( this ).parents( '.dropdown' ).removeClass( 'has-dash' );\r\n } );\r\n\r\n filterProducts();\r\n\r\n //silkProductLoad( 1 );\r\n } );\r\n\r\n $( '.silk-hash-orderby' ).click( function ( e ) {\r\n e.preventDefault();\r\n $( '.silk-hash-orderby.active' ).removeClass( 'active' );\r\n $( this ).addClass( 'active' );\r\n currentSort.text( $( this ).text() );\r\n } );\r\n\r\n $( '.silk-hash-filter' ).click( function () {\r\n filterProducts();\r\n });\r\n\r\n function filterProducts() {\r\n\r\n var colorList = '';\r\n var sizeList = '';\r\n var categoryList = '';\r\n var materialList = '';\r\n var modelList = '';\r\n var heelList = '';\r\n var collectionList = '';\r\n var collectionFilter = '';\r\n\r\n var orderBy = $( '.silk-hash-orderby.active' ).data( 'value' ) ? $( '.silk-hash-orderby.active' ).data( 'value' ) : '';\r\n var comma = '';\r\n\r\n $( '.silk-hash-filter' ).each( function () {\r\n var inputName = $( this ).attr( 'name' );\r\n var inputValue = $( this ).val();\r\n if ( $( this ).prop( 'checked' ) == true ) {\r\n switch ( inputName ) {\r\n case 'color':\r\n comma = '';\r\n if ( colorList != '' ) {\r\n comma = ',';\r\n }\r\n colorList += comma + inputValue;\r\n break;\r\n case 'size':\r\n comma = '';\r\n if ( sizeList != '' ) {\r\n comma = '|';\r\n }\r\n sizeList += comma + inputValue;\r\n break;\r\n case 'category':\r\n comma = '';\r\n if ( categoryList != '' ) {\r\n comma = ',';\r\n }\r\n categoryList += comma + inputValue;\r\n break;\r\n case 'material':\r\n comma = '';\r\n if ( materialList != '' ) {\r\n comma = ',';\r\n }\r\n materialList += comma + inputValue;\r\n break;\r\n case 'model':\r\n comma = '';\r\n if ( modelList != '' ) {\r\n comma = ',';\r\n }\r\n modelList += comma + inputValue;\r\n break;\r\n case 'heel':\r\n comma = '';\r\n if ( heelList != '' ) {\r\n comma = ',';\r\n }\r\n heelList += comma + inputValue;\r\n break;\r\n case 'collection':\r\n comma = '';\r\n if ( collectionList != '' ) {\r\n comma = ',';\r\n }\r\n collectionList += comma + inputValue;\r\n collectionFilter += comma + $( this ).data('name');\r\n break;\r\n }\r\n }\r\n } );\r\n\r\n // this will be use for Order By\r\n //$( '.silk-hash-orderby' ).parent( 'label' ).removeClass( 'active' );\r\n //var checkedOrderBy = $( this ).children( 'input[type=\"radio\"]' ).val();\r\n //if ( checkedOrderBy != undefined ) {\r\n // orderBy = checkedOrderBy;\r\n //}\r\n\r\n var filterUrl = '';\r\n\r\n if ( categoryList != '' ) {\r\n filterUrl += 'category=' + categoryList;\r\n } else if(loadMore.data( 'currentcategory' )) {\r\n filterUrl += 'category=' + loadMore.data( 'currentcategory' );\r\n }\r\n\r\n if ( colorList != '' ) {\r\n if ( filterUrl != '' ) {\r\n filterUrl += '&';\r\n }\r\n filterUrl += 'color=' + colorList;\r\n var colorFilter = new RegExp( colorList.replace(/,/g, '|'), 'g');\r\n }\r\n if ( sizeList != '' ) {\r\n if ( filterUrl != '' ) {\r\n filterUrl += '&';\r\n }\r\n filterUrl += 'size=' + sizeList;\r\n var sizeFilter = new RegExp( sizeList.replace(/,/g, '|'), 'g');\r\n }\r\n if ( materialList != '' ) {\r\n if ( filterUrl != '' ) {\r\n filterUrl += '&';\r\n }\r\n filterUrl += 'material=' + materialList;\r\n var materialFilter = new RegExp( materialList.replace(/,/g, '|'), 'g');\r\n }\r\n if ( modelList != '' ) {\r\n if ( filterUrl != '' ) {\r\n filterUrl += '&';\r\n }\r\n filterUrl += 'model=' + modelList;\r\n var modelFilter = new RegExp( modelList.replace(/,/g, '|'), 'g');\r\n }\r\n if ( heelList != '' ) {\r\n if ( filterUrl != '' ) {\r\n filterUrl += '&';\r\n }\r\n filterUrl += 'heel=' + heelList;\r\n var heelFilter = new RegExp( heelList.replace(/,/g, '|'), 'g');\r\n }\r\n if ( collectionList != '' ) {\r\n if ( filterUrl != '' ) {\r\n filterUrl += '&';\r\n }\r\n filterUrl += 'collection=' + collectionList;\r\n collectionFilter = new RegExp( collectionFilter.replace(/,/g, '|'), 'g');\r\n }\r\n if ( orderBy != '' && typeof orderBy !== 'undefined' ) {\r\n if ( filterUrl != '' ) {\r\n filterUrl += '&';\r\n }\r\n filterUrl += 'orderBy=' + orderBy;\r\n }\r\n\r\n filterUrl = '#' + filterUrl;\r\n window.history.pushState( '', 'Title', filterUrl );\r\n\r\n var categoryFilter;\r\n\r\n if ( categoryList != '' ) {\r\n categoryFilter = new RegExp( `\\\\b${ categoryList.replace(/,/g, '\\\\b|\\\\b') }\\\\b`, 'g');\r\n } else {\r\n categoryFilter = new RegExp( `\\\\b${ loadMore.data( 'currentcategory' ) }\\\\b`, 'g');\r\n }\r\n\r\n $('.products .product').remove();\r\n\r\n var filteredResult = '';\r\n\r\n filteredResult = allProducts.filter(function () { return $(this).data('category') ? $(this).data('category').match(categoryFilter) : false } ).clone();\r\n\r\n // FilterUpdater.update(filteredResult);\r\n // Filter.dropdownUpdate();\r\n\r\n if( colorFilter ) {\r\n filteredResult = filteredResult.filter(function () { return $(this).data('color') ? $(this).data('color').match(colorFilter) : false } );\r\n }\r\n if( sizeFilter ) {\r\n filteredResult = filteredResult.filter(function () { return $(this).data('size') ? $(this).data('size').toString().match(sizeFilter) : false } );\r\n }\r\n if( materialFilter ) {\r\n filteredResult = filteredResult.filter(function () { return $(this).data('material') ? $(this).data('material').match(materialFilter) : false } );\r\n }\r\n if( modelFilter ) {\r\n filteredResult = filteredResult.filter(function () { return $(this).data('model') ? $(this).data('model').match(modelFilter) : false } );\r\n }\r\n if( heelFilter ) {\r\n filteredResult = filteredResult.filter(function () { return $(this).data('heel') ? $(this).data('heel').match(heelFilter) : false } );\r\n }\r\n if( collectionFilter ) {\r\n filteredResult = filteredResult.filter(function () { return $(this).data('collection') ? $(this).data('collection').match(collectionFilter) : false } );\r\n }\r\n\r\n var sortTitleDesc = function(a,b) {\r\n a = $(a).data('name').toUpperCase();\r\n b = $(b).data('name').toUpperCase();\r\n if(a > b) {\r\n return -1;\r\n } else if(a < b) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n };\r\n\r\n var sortTitleAsc = function(a,b) {\r\n a = $(a).data('name').toUpperCase();\r\n b = $(b).data('name').toUpperCase();\r\n if(a < b) {\r\n return -1;\r\n } else if(a > b) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n };\r\n\r\n var sortPrizeDesc = function(a,b) {\r\n a = parseInt($(a).data('prize'), 10);\r\n b = parseInt($(b).data('prize'), 10);\r\n if(a > b) {\r\n return -1;\r\n } else if(a < b) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n };\r\n\r\n var sortPrizeAsc = function(a,b) {\r\n a = parseInt($(a).data('prize'), 10);\r\n b = parseInt($(b).data('prize'), 10);\r\n if(a < b) {\r\n return -1;\r\n } else if(a > b) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n };\r\n\r\n var sortIndexAsc = function(a,b) {\r\n a = parseInt($(a).data('index'), 10);\r\n b = parseInt($(b).data('index'), 10);\r\n if(a < b) {\r\n return -1;\r\n } else if(a > b) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n };\r\n\r\n switch ( orderBy ) {\r\n case 'price_asc':\r\n filteredResult = filteredResult.sort(sortPrizeAsc);\r\n break;\r\n case 'price_desc':\r\n filteredResult = filteredResult.sort(sortPrizeDesc);\r\n break;\r\n case 'title_desc':\r\n filteredResult = filteredResult.sort(sortTitleDesc);\r\n break;\r\n case 'title_asc':\r\n filteredResult = filteredResult.sort(sortTitleAsc);\r\n break;\r\n default:\r\n filteredResult = filteredResult.sort(sortIndexAsc);\r\n break;\r\n }\r\n\r\n\r\n if (titleCard) {\r\n titleCard.appendTo('#js-listing-holder.products');\r\n }\r\n\r\n $.each( filteredResult, function(pos, item) {\r\n $( '#js-listing-holder.products' ).append( item );\r\n } );\r\n\r\n if( typeof window.productsMasonry !== 'undefined' ) {\r\n // Rebuild masonry\r\n window.productsMasonry.masonry( 'destroy' );\r\n window.productsMasonry.masonry( {\r\n itemSelector: '.product',\r\n percentPosition: true,\r\n } );\r\n }\r\n\r\n // Reinitialize read more link\r\n // window.titleCardCollapse();\r\n\r\n if (window.lazyLoadInstance && typeof window.lazyLoadInstance.update !== 'undefined') {\r\n window.lazyLoadInstance.update();\r\n }\r\n\r\n // Show Product Bg\r\n if ( $( '.bg-image' ).hasClass( 'd-none' ) ) {\r\n $( '.bg-image' ).removeClass( 'd-none' );\r\n }\r\n\r\n // Remove 2nd product image for hover if in mobile view\r\n var currentIsDesktop = matchMedia( 'screen and (min-width: 992px)' ).matches;\r\n if (currentIsDesktop === false) {\r\n var productImages = $( '.products .product figure img' );\r\n\r\n if (productImages.length > 0) {\r\n $.each( productImages, function() {\r\n if ($(this).hasClass( 'second-image' )) {\r\n $(this).parent().removeClass( 'has-second-image' );\r\n $(this).remove();\r\n }\r\n } );\r\n }\r\n }\r\n\r\n // Update hit count\r\n if ($( searchHitCountSelector ).length) {\r\n $.each( $( searchHitCountSelector ), function() {\r\n $(this).text( filteredResult.length );\r\n } );\r\n }\r\n\r\n // silkProductLoad( 1 );\r\n // Reset Current Page Count upon Filter update\r\n loadMore.data( 'currentpage', 1 );\r\n }\r\n\r\n function filterDataLoad () {\r\n var ajaxUrl = $( '#silkFilterForm' ).data( 'ajaxurl' );\r\n var currentCategory = loadMore.data( 'currentcategory' );\r\n var currentTermId = loadMore.data( 'currentterm_id' );\r\n\r\n if (currentCategory && currentTermId) {\r\n ajaxUrl += '&category=' + currentCategory + '&termid=' + currentTermId;\r\n }\r\n\r\n if ( search ) {\r\n ajaxUrl += '&search=' + encodeURIComponent( search );\r\n }\r\n\r\n if (window.user != undefined && window.user) {\r\n ajaxUrl += '&user=' + window.user;\r\n }\r\n\r\n ajaxUrl = ajaxUrl.replace(/per_page=[\\d]{1,4}/,'per_page=1000');\r\n\r\n $.ajax( {\r\n url: ajaxUrl + '&lang=' + language,\r\n type: 'GET',\r\n error: function ( data, textStatus ) {\r\n console.log( data );\r\n console.log( textStatus );\r\n },\r\n success: function ( data ) {\r\n // Sort orderBy index\r\n var sortIndexAsc = function(a,b) {\r\n a = parseInt(a.index, 10);\r\n b = parseInt(b.index, 10);\r\n if(a < b) {\r\n return -1;\r\n } else if(a > b) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n };\r\n data = data.sort(sortIndexAsc);\r\n\r\n var html = '';\r\n var listingHolderContent = '';\r\n\r\n if ( $( data ).length > 0 ) {\r\n html = '';\r\n listingHolderContent = '';\r\n\r\n $( '.silk-spinner' ).addClass( 'd-none' );\r\n loadMore.addClass( 'd-none' );\r\n let itemCtr = 0;\r\n\r\n $( data ).each( function ( key, val ) {\r\n if (val.index == undefined || val.index === false) {\r\n return;\r\n }\r\n\r\n itemCtr++;\r\n\r\n // If first page, prepend category/collection texts\r\n if ( itemCtr == 1 ) {\r\n html += firstItem;\r\n listingHolderContent += firstItem;\r\n }\r\n\r\n listingHolderContent += val.product_item;\r\n\r\n html += val.product_item;\r\n } );\r\n\r\n allProducts = $( html ).clone();\r\n\r\n if ( hashQueryString != '' ) {\r\n\r\n silkSetFilterUsingHash();\r\n filterProducts();\r\n\r\n } else {\r\n\r\n // holder.html( '' );\r\n // holder.append( html );\r\n\r\n listingHolder.html( '' );\r\n listingHolder.append( listingHolderContent );\r\n\r\n // Rebuild masonry\r\n if( typeof window.productsMasonry !== 'undefined' ) {\r\n window.productsMasonry.masonry( 'destroy' );\r\n window.productsMasonry.masonry( {\r\n itemSelector: '.product',\r\n percentPosition: true,\r\n } );\r\n window.productsMasonry.masonry('reloadItems');\r\n }\r\n\r\n // Reinitialize read more link\r\n // window.titleCardCollapse();\r\n\r\n if (window.lazyLoadInstance && typeof window.lazyLoadInstance.update !== 'undefined') {\r\n window.lazyLoadInstance.update();\r\n }\r\n\r\n FilterUpdater.update();\r\n Filter.dropdownUpdate();\r\n\r\n // Update hit count\r\n if ($( searchHitCountSelector ).length) {\r\n $.each( $( searchHitCountSelector ), function() {\r\n $(this).html( $( data ).length );\r\n } );\r\n }\r\n\r\n // Show Product Bg\r\n if ( $( '.bg-image' ).hasClass( 'd-none' ) ) {\r\n $( '.bg-image' ).removeClass( 'd-none' );\r\n }\r\n }\r\n\r\n } else {\r\n holder.html( '<p>' + holder.data( 'alt' ) + '</p>' );\r\n }\r\n\r\n\r\n },\r\n } );\r\n }\r\n\r\n function silkProductLoad ( nextPage ) {\r\n // this will set selected filter\r\n silkSetFilterUsingHash();\r\n\r\n var ajaxUrl = $( '#silkFilterForm' ).data( 'ajaxurl' );\r\n var currentCategory = loadMore.data( 'currentcategory' );\r\n var currentTermId = loadMore.data( 'currentterm_id' );\r\n var hashQueryString = window.location.hash;\r\n var lastScrollPosition;\r\n hashQueryString = hashQueryString.replace( '#', '&' );\r\n\r\n if ( hashQueryString != '' ) {\r\n ajaxUrl = ajaxUrl + hashQueryString;\r\n } else {\r\n ajaxUrl = ajaxUrl + '&category=' + currentCategory + '&termid=' + currentTermId;\r\n }\r\n\r\n // console.log( ajaxUrl + '&page=' + nextPage );\r\n\r\n if ( search ) {\r\n ajaxUrl += '&search=' + encodeURIComponent( search );\r\n }\r\n\r\n $.ajax( {\r\n url: ajaxUrl + '&page=' + nextPage + '&lang=' + language,\r\n type: 'GET',\r\n beforeSend: function () {\r\n loadMore.addClass( 'd-none' );\r\n $( '.silk-spinner' ).removeClass( 'd-none' );\r\n lastScrollPosition = jQuery( window ).scrollTop();\r\n },\r\n error: function ( data, textStatus ) {\r\n // console.log( data );\r\n console.log( textStatus );\r\n },\r\n success: function ( data, textStatus, jqXHR ) {\r\n if ( data ) {\r\n loadMore.removeClass( 'd-none' );\r\n $( '.silk-spinner' ).addClass( 'd-none' );\r\n\r\n // Need to clear list if filter is trigger\r\n if ( nextPage == 1 ) {\r\n holder.html( '' );\r\n }\r\n\r\n if ( $( data ).length > 0 ) {\r\n var html = '';\r\n\r\n $( data ).each( function ( key, val ) {\r\n // If first page, prepend category/collection texts\r\n if ( nextPage === 1 && key == 0 ) {\r\n html += firstItem;\r\n }\r\n\r\n html += val.product_item;\r\n } );\r\n\r\n holder.append( html );\r\n\r\n // Rebuild masonry\r\n window.productsMasonry.masonry( 'destroy' );\r\n window.productsMasonry.masonry( {\r\n itemSelector: '.product',\r\n percentPosition: true,\r\n } );\r\n\r\n // Reinitialize read more link\r\n // window.titleCardCollapse();\r\n\r\n if (window.lazyLoadInstance && typeof window.lazyLoadInstance.update !== 'undefined') {\r\n window.lazyLoadInstance.update();\r\n }\r\n\r\n // Show Product Bg\r\n if ( $( '.bg-image' ).hasClass( 'd-none' ) ) {\r\n $( '.bg-image' ).removeClass( 'd-none' );\r\n }\r\n } else {\r\n holder.html( '<p>' + holder.data( 'alt' ) + '</p>' );\r\n }\r\n\r\n var totalPage = parseInt( jqXHR.getResponseHeader( 'X-WP-TotalPages' ), 10 );\r\n if ( loadMore.data( 'currentpage' ) == totalPage || data.length == 0 )\r\n loadMore.addClass( 'd-none' ); // if last page, remove the button\r\n } else {\r\n loadMore.addClass( 'd-none' ); // if no data, remove the button as well\r\n }\r\n\r\n jQuery( window ).scrollTop( lastScrollPosition );\r\n },\r\n } );\r\n }\r\n\r\n function silkSetFilterUsingHash () {\r\n var hash = window.location.hash;\r\n hash = hash.replace( '#', '' );\r\n var hashArr = hash.split( '&' );\r\n if ( hashArr.length > 0 ) {\r\n $( hashArr ).each( function ( key, queryItem ) {\r\n var queryItemArr = queryItem.split( '=' );\r\n // console.log(queryItemArr);\r\n if ( queryItemArr.length > 0 ) {\r\n $( queryItemArr ).each( function ( queryItemKey, queryItemValue ) {\r\n var queryItemValueArr = queryItemValue.split( ',' );\r\n\r\n if ( queryItemValue.indexOf( '|' ) !== -1 ) {\r\n queryItemValueArr = queryItemValue.split( '|' );\r\n }\r\n\r\n if ( queryItemValueArr.length > 0 ) {\r\n $( queryItemValueArr ).each( function ( queryItemSelectedKey, queryItemSelectedValue ) {\r\n if ( queryItemSelectedValue != '' ) {\r\n var inputName = queryItemArr[0];\r\n // console.log(inputName+' '+queryItemSelectedValue);\r\n if ( inputName == 'orderBy' ) {\r\n var currentSortField = $( 'a[data-value=' + queryItemSelectedValue + ']' );\r\n $( '.silk-hash-orderby.active' ).removeClass( 'active' );\r\n currentSortField.addClass( 'active' );\r\n currentSort.text( currentSortField.text() );\r\n } else {\r\n $( 'input[name=\"' + inputName + '\"]:checkbox[value=\"' + queryItemSelectedValue + '\"]' ).prop( 'checked', 'true' );\r\n }\r\n }\r\n } );\r\n }\r\n } );\r\n }\r\n } );\r\n }\r\n }\r\n\r\n\r\n var h1Desktop = document.getElementById( 'js-desktop-h1' ),\r\n h1Mobile = document.getElementById( 'js-mobile-h1' ),\r\n isDesktop = true,\r\n timeOut = false;\r\n\r\n if ( !h1Desktop || !h1Mobile ) {\r\n return;\r\n }\r\n\r\n var checkH1 = function () {\r\n var currentIsDesktop = matchMedia( 'screen and (min-width: 992px)' ).matches;\r\n\r\n if ( isDesktop !== currentIsDesktop ) {\r\n $( '.js-dynamic-title' ).remove();\r\n\r\n if ( currentIsDesktop ) {\r\n $( h1Desktop ).after( unescape( h1Desktop.innerText ) );\r\n } else {\r\n $( h1Mobile ).after( unescape( h1Mobile.innerText ) );\r\n }\r\n }\r\n\r\n isDesktop = currentIsDesktop;\r\n };\r\n\r\n checkH1();\r\n $( window ).resize( function () {\r\n if ( timeOut ) {\r\n clearTimeout( timeOut );\r\n }\r\n\r\n timeOut = setTimeout( function () {\r\n checkH1();\r\n }, 100 );\r\n } );\r\n\r\n //console.log( matchMedia( 'screen and (min-width: 992px)' ).matches );\r\n} )( jQuery );\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/category.js","// Accordion first child\r\n$('.js-selected-product-accordion .list-group-item:eq(0) .collapse').addClass(\r\n 'show'\r\n);\r\n$('.js-selected-product-accordion .list-group-item:eq(0) .header').removeClass(\r\n 'collapsed'\r\n);\r\n\r\n$('#js-try-again').on('click', function (e) {\r\n e.preventDefault();\r\n $('#js-size-helper-result').addClass('d-none');\r\n $('#js-size-helper-main').removeClass('d-none');\r\n});\r\n\r\n$(document).on('click', '.js-size-guide-helper', function (e) {\r\n e.preventDefault();\r\n let navHeight = $('.js-header').height();\r\n let spacing;\r\n if ($('body').hasClass('admin-bar')) {\r\n spacing = navHeight + 32;\r\n } else {\r\n spacing = navHeight;\r\n }\r\n $('html, body').animate(\r\n {\r\n scrollTop: $('#js-size-helper').offset().top - spacing,\r\n },\r\n 1000\r\n );\r\n});\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/product-selected.js","/* eslint-disable no-unused-vars */\r\nimport { stokpress } from '../util/helper';\r\n// var StellarAccordion = require( '../components/accordion' );\r\n/* eslint-disable no-undef */\r\n\r\nconst Product = {};\r\n\r\nlet productSectionsContainer = document.getElementById( 'js-selected-product-sections' ),\r\n productInfoContainer = document.getElementById( 'js-selected-product-info' ),\r\n productSwitchSelector = 'js-change-product',\r\n productSizeSelector = 'js-change-size',\r\n productNotifySize = 'js-notify-size',\r\n productSizeDisabled = 'disabled',\r\n ajaxRequestEnable = true;\r\n\r\nProduct.processChangeProduct = (el) => {\r\n let url = Product.ajaxUrl + el.dataset.id;\r\n\r\n if (Product.currentLang) {\r\n url = url + '?lang=' + Product.currentLang;\r\n }\r\n\r\n Product.processRequest( 'GET', url, el.dataset.url );\r\n}\r\n\r\nProduct.processRequest = (action, url, targetUrl) => {\r\n\r\n // To avoid double send of ajax request\r\n if( !ajaxRequestEnable ) {\r\n return;\r\n }\r\n\r\n let xhr = new XMLHttpRequest();\r\n\r\n ajaxRequestEnable = false;\r\n\r\n\txhr.onreadystatechange = function () {\r\n\t\tif ( xhr.readyState !== XMLHttpRequest.DONE ) { return; }\r\n\r\n\t\tif ( xhr.status === 200 ) {\r\n\t\t\ttry {\r\n let data = JSON.parse( xhr.response );\r\n\r\n Product.outputResult( data, targetUrl );\r\n ajaxRequestEnable = true;\r\n\t\t\t}\r\n\t\t\tcatch ( err ) {\r\n console.log( err );\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t};\r\n\r\n xhr.open( action, url, true );\r\n xhr.setRequestHeader( 'X-Requested-With', 'XMLHttpRequest' );\r\n xhr.send();\r\n}\r\n\r\nProduct.outputResult = (data, targetUrl) => {\r\n if( !data.product ) {\r\n return;\r\n }\r\n\r\n window.history.pushState( data, '', targetUrl );\r\n Product.updateHtml( data );\r\n}\r\n\r\nProduct.updateHtml = (data) => {\r\n productInfoContainer.innerHTML = data.product.info;\r\n productSectionsContainer.innerHTML = data.product.sections;\r\n\r\n if (data.product.current_color.name) {\r\n $( 'title' ).html( data.product.current_color.name );\r\n }\r\n\r\n var finePrint = $( '#js-main-nav-msg.fine-print' );\r\n\tvar cartButton = $( '.js-btn-cart-bg' );\r\n\r\n if(finePrint.length > 0) {\r\n finePrint.attr('data-bg', data.product.current_color.hex || '');\r\n finePrint.removeClass('is-light').addClass(data.product.current_color.bgClass || '');\r\n\t\tfinePrint.attr('style', '--dynamic-bg:'+ (data.product.current_color.hex || 'var(--primary)'));\r\n\r\n var lightIcon = finePrint.find('.icon-light');\r\n var darkIcon = finePrint.find('.icon-dark');\r\n\r\n if (data.product.current_color.bgClass === 'is-light') {\r\n if (lightIcon.length) lightIcon.addClass('d-none');\r\n if (darkIcon.length) darkIcon.removeClass('d-none');\r\n } else {\r\n if (lightIcon.length) lightIcon.removeClass('d-none');\r\n if (darkIcon.length) darkIcon.addClass('d-none');\r\n }\r\n\t} \r\n\r\n\tif(cartButton.length > 0) {\r\n\t\tcartButton.attr('style', '--dynamic-bg:'+ (data.product.current_color.hex || 'var(--primary)'));\r\n\t} \r\n \r\n Product.init( true );\r\n}\r\n\r\nProduct.changeProduct = (items) => {\r\n if (!items) {\r\n return;\r\n }\r\n\r\n Array.prototype.forEach.call( items, function (item) {\r\n\t\titem.addEventListener( 'click', function () {\r\n let input = this.querySelector('input');\r\n if (input && this.dataset.type !== 'heel') {\r\n input.checked = false;\r\n }\r\n\r\n Product.processChangeProduct(item);\r\n\t\t});\r\n\t} );\r\n}\r\n\r\nProduct.changeSize = (items) => {\r\n if (!items) {\r\n return;\r\n }\r\n \r\n Array.prototype.forEach.call( items, function (item) {\r\n\t\titem.addEventListener( 'change', function () {\r\n let input = this.querySelector('input'),\r\n parent = stokpress.findAncestor(input, 'js-selectProductSingle'),\r\n button = parent ? parent.querySelector('button[type=\"submit\"]') : null,\r\n inputWrap = input.parentNode.parentNode,\r\n sizesWrap = stokpress.findAncestor( input, 'js-dropdown' );\r\n\r\n if (button) {\r\n var button_text = button.querySelector('.js-button-text');\r\n\r\n if (sizesWrap) $(sizesWrap).find('.js-selected-label').removeClass('is-active');\r\n\r\n if (input.classList.contains(productSizeDisabled)) {\r\n button_text.innerHTML = button.dataset.soldout || 'Soldout'; \r\n button.setAttribute('disabled', true);\r\n \r\n const target = input.dataset.target;\r\n\r\n\t\t\t\t\tif (target) {\r\n let sizeName = input.getAttribute('data-product-name'),\r\n itemId = input.getAttribute('data-product-item');\r\n console.log(sizeName, itemId);\r\n \r\n $(target).find('#notify-size-name').html(sizeName);\r\n $(target).find('#no-size-item-value').val( itemId );\r\n\t\t\t\t\t}\r\n } else {\r\n button_text.innerHTML = button.dataset.text || 'Add to cart';\r\n button.removeAttribute('disabled');\r\n \r\n if (inputWrap) $(inputWrap).addClass('is-active'); \r\n }\r\n }\r\n\t\t});\r\n\t} );\r\n}\r\n\r\n\r\n// Product.notifySize = (items) => {\r\n// if (!items) {\r\n// return;\r\n// }\r\n\r\n// Array.prototype.forEach.call( items, function (item) {\r\n// \t\titem.addEventListener( 'click', function () {\r\n// let sizeName = item.getAttribute('data-product-name'),\r\n// itemId = item.getAttribute('data-product-item');\r\n\r\n// $('#notify-size-name').html(sizeName);\r\n// $('#no-size-item-value').val( itemId )\r\n// \t\t});\r\n// \t} );\r\n\r\n// }\r\n\r\n\r\nProduct.init = (reinit) => {\r\n if (!productInfoContainer || !productSectionsContainer) {\r\n return;\r\n }\r\n\r\n Product.ajaxUrl = productInfoContainer.dataset.url;\r\n Product.currentLang = productInfoContainer.dataset.lang;\r\n Product.changeProduct( productInfoContainer.getElementsByClassName(productSwitchSelector) );\r\n Product.changeSize( productInfoContainer.getElementsByClassName(productSizeSelector) );\r\n // Product.notifySize( productInfoContainer.getElementsByClassName(productNotifySize) );\r\n\r\n if ( reinit ) {\r\n // $('.js-plus-item').plusItem();\r\n if ($('.js-plus-item').length) {\r\n $.each($('.js-plus-item'), function (i, el) {\r\n $(el).plusItem();\r\n });\r\n } \r\n if (window.lazyLoadInstance && typeof window.lazyLoadInstance.update !== 'undefined') {\r\n window.lazyLoadInstance.update(); \r\n }\r\n\r\n window.BackgroundSwicher.refresh();\r\n window.ProductSelectedSlider.init();\r\n window.TrustbarSlider.init(); \r\n window.ProductSlider.init();\r\n window.FeatureSlider.init();\r\n window.Video.init();\r\n window.Cart.init();\r\n window.ProductOptionsTabSlider.init();\r\n window.Newsletter.init( '.js-newsletter', '#js-newsletter-modal' );\r\n \r\n var api = new Yotpo.API(yotpo);\r\n\t\tapi.refreshWidgets();\r\n }\r\n}\r\n\r\ndocument.addEventListener( 'DOMContentLoaded', function () {\r\n\tProduct.init(false);\r\n\r\n\tif ( typeof history.pushState !== 'undefined' ) {\r\n\t\tif ( Product.productColors ) {\r\n\r\n\t\t\tlet initialColorData = {};\r\n initialColorData.product = {};\r\n initialColorData.product.info = productInfoContainer.innerHTML;\r\n initialColorData.product.sections = productSectionsContainer.innerHTML;\r\n\r\n window.history.replaceState( initialColorData, '', location.pathname );\r\n\t\t}\r\n\r\n\t\twindow.addEventListener( 'popstate', function ( e ) {\r\n let data = e.state;\r\n\r\n\t\t\tif ( data && typeof data === 'object' ) {\r\n\r\n setTimeout( function(){\r\n Product.updateHtml( data );\r\n }, 500 );\r\n\t\t\t} else {\r\n\t\t\t\t// Product not loaded\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\nwindow.Product = Product;\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/product.js","/* eslint-disable no-unused-vars */\r\n\r\nimport { stokpress, stokpressViewPort } from '../util/helper';\r\n/* eslint-disable no-undef */\r\n\r\nvar Cart = {};\r\n\r\n(function ($) {\r\n var cartForm = '.js-selectProductSingle';\r\n var navCart = '.js-cart-overlay';\r\n var removeItem = '.js-cart-remove-item';\r\n var cartItemCount = $('.js-item-count');\r\n var cartItems = $('.js-cart-items');\r\n var formButtonSelector = 'button[type=\"submit\"]';\r\n // var cartNavButton = $('.navbar-cart-button');\r\n var buttonText = '.js-button-text';\r\n var singlePageScope = $('body.single');\r\n var cartAjaxRequestEnable = true;\r\n\r\n Cart.ajaxCall = function (type, data, url, button) {\r\n // To avoid double send of ajax request\r\n if (!cartAjaxRequestEnable) {\r\n return;\r\n }\r\n\r\n $.ajax({\r\n url: url,\r\n data: data,\r\n type: type,\r\n dataType: 'json',\r\n beforeSend: function () {\r\n cartAjaxRequestEnable = false;\r\n\r\n if (button && button.length > 0) {\r\n button.attr('disabled', 'disabled');\r\n button.addClass('is-loading');\r\n }\r\n },\r\n success: function (result) {\r\n\r\n // Update cart item count\r\n if (cartItemCount) {\r\n cartItemCount.each( function () {\r\n $(this).text(result.totalItems);\r\n\r\n // Hide / Show Cart count\r\n if (!result.totalItems) {\r\n $(this).addClass( 'd-none' );\r\n cartItems.addClass( 'no-item' );\r\n } else {\r\n $(this).removeClass( 'd-none' );\r\n cartItems.removeClass( 'no-item' );\r\n } \r\n }); \r\n }\r\n\r\n if (result.basket) {\r\n cartItems.html(result.basket);\r\n Cart.toggleCart( 'open' );\r\n }\r\n },\r\n complete: function () {\r\n setTimeout(function () {\r\n Cart.toggleCart( 'close' );\r\n\r\n if (button && button.length > 0) {\r\n button.removeAttr('disabled');\r\n button.removeClass('is-loading');\r\n }\r\n\r\n cartAjaxRequestEnable = true;\r\n }, 1500);\r\n\r\n // Re initialize element events\r\n Cart.init(); \r\n },\r\n error: function (request) {\r\n console.debug(request);\r\n },\r\n });\r\n };\r\n\r\n Cart.toggleCart = function(action) {\r\n var cartContainer = $(navCart);\r\n var body = $('body');\r\n\r\n if (!cartContainer) { return; }\r\n\r\n if (action==='open') {\r\n\r\n cartContainer.addClass( 'is-open' );\r\n body.addClass( 'cart-overlay' ); \r\n \r\n } else if(action==='close') {\r\n\r\n cartContainer.removeClass( 'is-open' );\r\n body.removeClass( 'cart-overlay' ); \r\n\r\n }\r\n\r\n };\r\n\r\n Cart.add = function (_this) {\r\n var buttonEl = _this.find( formButtonSelector );\r\n\r\n if (_this.find('input[name=\"esc_product_item\"]:checked').length > 0 || _this.find('select[name=\"esc_product_item\"]').val()) {\r\n var data = _this.serialize();\r\n\r\n Cart.ajaxCall( 'POST', data, null, buttonEl );\r\n\r\n } else {\r\n // Display error in button\r\n Cart.updateButtonText( 'error', buttonEl );\r\n\r\n var isMobile = stokpress.isMobile() || stokpressViewPort.documentWidth().width < 720;\r\n var navHeight = $('nav').height();\r\n var scrollToPos = 0;\r\n\r\n // Scroll to sizes\r\n if (isMobile) { \r\n scrollToPos = Math.abs(document.documentElement.clientHeight - buttonEl.offset().top - (buttonEl.height() + navHeight));\r\n }\r\n\r\n // Scroll to size error if current page is single page\r\n if (singlePageScope.length) {\r\n $('html, body').animate({\r\n scrollTop: scrollToPos,\r\n }, 1000);\r\n }\r\n }\r\n };\r\n\r\n Cart.updateButtonText = function( dataAttr, buttonEl ) {\r\n if (!buttonEl) { return; }\r\n\r\n var textVal = buttonEl.data( dataAttr );\r\n var buttonTextEl = buttonEl.find( buttonText );\r\n\r\n if (buttonTextEl) {\r\n buttonTextEl.text(textVal);\r\n } \r\n };\r\n\r\n Cart.init = function () {\r\n\r\n // Add to bag\r\n $(document).find( cartForm ).off( 'submit' ).on( 'submit', function(e) {\r\n e.preventDefault();\r\n Cart.add( $(this) );\r\n });\r\n\r\n // Remove product\r\n $(document).find( removeItem ).off( 'click' ).on( 'click', function (e) {\r\n e.preventDefault();\r\n var _this = $(this);\r\n Cart.ajaxCall( 'GET', null, _this.attr('href'), null );\r\n });\r\n\r\n // Has size selected\r\n $(document).find( 'input[name=\"esc_product_item\"], select[name=\"esc_product_item\"]' ).off( 'change' ).on( 'change', function (e) {\r\n e.preventDefault();\r\n Cart.updateButtonText( 'text', $( cartForm ).find( formButtonSelector ) );\r\n });\r\n\r\n };\r\n\r\n Cart.init();\r\n\r\n})(jQuery);\r\n\r\nwindow.Cart = Cart;\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/cart.js","let Search = {};\r\nrequire('../util/autoPadding');\r\n\r\n\r\nSearch.iOSfocusAndOpenKeyboard = function (el, timeout) {\r\n if(!timeout) {\r\n timeout = 100;\r\n }\r\n\r\n if(el) {\r\n // Align temp input element approximately where the input element is\r\n // so the cursor doesn't jump around\r\n var __tempEl__ = document.createElement('input');\r\n __tempEl__.style.position = 'absolute';\r\n __tempEl__.style.top = (el.offsetTop + 7) + 'px';\r\n __tempEl__.style.left = el.offsetLeft + 'px';\r\n __tempEl__.style.height = 0;\r\n __tempEl__.style.opacity = 0;\r\n // Put this temp element as a child of the page <body> and focus on it\r\n document.body.appendChild(__tempEl__);\r\n __tempEl__.focus();\r\n // The keyboard is open. Now do a delayed focus on the target element\r\n setTimeout(function() {\r\n el.focus();\r\n el.click();\r\n // Remove the temp element\r\n document.body.removeChild(__tempEl__);\r\n }, timeout);\r\n }\r\n}\r\n\r\nSearch.headerAdjustment = function () {\r\n if (matchMedia('screen and (min-width: 1024px)').matches) {\r\n if ($('#js-nav-menu').hasClass('headroom--top')) {\r\n $('body').addClass('nav-is-adjust');\r\n setTimeout(function () {\r\n if ($('body').hasClass('nav-is-transparent')) {\r\n $('body').autoPadding({\r\n source: $('#js-main-nav-msg'),\r\n });\r\n } else {\r\n $('body').autoPadding({\r\n source: $('.js-header'),\r\n });\r\n }\r\n }, 500);\r\n }\r\n }\r\n};\r\n\r\nSearch.search = function () {\r\n let searchOpen = $('.js-search-open');\r\n let searchClose = $('.js-search-close');\r\n let searchForm = $('.js-search-form');\r\n\r\n searchOpen.on('click', function () {\r\n searchForm.addClass('show');\r\n $('body').addClass('search-active');\r\n\r\n let targetEl = $($(this).data('focus'));\r\n\r\n if (targetEl) {\r\n setTimeout(function () {\r\n targetEl.focus();\r\n }, 100);\r\n }\r\n\r\n Search.headerAdjustment();\r\n\r\n if($('body').hasClass('isApple') && $('body').hasClass('iphone')) {\r\n Search.iOSfocusAndOpenKeyboard('#js-search-input', 300);\r\n }\r\n\r\n });\r\n\r\n searchClose.click(function () {\r\n searchForm.removeClass('show');\r\n $('body').removeClass('search-active');\r\n Search.headerAdjustment();\r\n });\r\n}\r\n\r\nSearch.sizeSearch = function() {\r\n let searchSizeBtn = $('#search_size_btn');\r\n let tryAgain = $('#js-try-again');\r\n\r\n searchSizeBtn.click(function () {\r\n searchSize();\r\n });\r\n\r\n $('#size_input').keypress(function (event) {\r\n if (event.keyCode == 13) {\r\n //EnterKey\r\n event.preventDefault();\r\n searchSize();\r\n }\r\n });\r\n\r\n tryAgain.click(function () {\r\n $('#js-size-helper-recommended-size').html('');\r\n $('#js-size-helper-guide').html('');\r\n $('#js-size-helper-main').removeClass('d-none');\r\n $('#js-size-helper-result').addClass('d-none');\r\n });\r\n\r\n function searchSize() {\r\n let product_id = $('#search_product_id').val();\r\n let sizeInput = $('#size_input').val();\r\n\r\n //Update all HTML\r\n $.ajax({\r\n url: window.ajaxURL,\r\n data: {\r\n action: 'search_product_size',\r\n product_id: product_id,\r\n size: sizeInput,\r\n },\r\n type: 'POST',\r\n dataType: 'JSON',\r\n beforeSend: function () {\r\n $('#js-error-feedback').html('');\r\n $('#js-error-feedback').addClass('d-none');\r\n },\r\n success: function (data) {\r\n if (data.status) {\r\n var helperRecomendDiv = document.getElementById(\r\n 'js-size-helper-recommended-size'\r\n );\r\n helperRecomendDiv.innerHTML += data.rec_title;\r\n\r\n var helperDiv = document.getElementById('js-size-helper-guide');\r\n helperDiv.innerHTML += data.rec_msg;\r\n\r\n $('#js-size-helper-main').addClass('d-none');\r\n $('#js-size-helper-result').removeClass('d-none');\r\n $('#size_input').removeClass('is-invalid');\r\n } else {\r\n var errorDiv = document.getElementById('js-error-feedback');\r\n var parentDiv = $('#size_input').parent();\r\n errorDiv.innerHTML += data.error_msg;\r\n parentDiv.addClass('is-invalid');\r\n $('#js-error-feedback').removeClass('d-none');\r\n }\r\n },\r\n });\r\n }\r\n}\r\n\r\nSearch.init = function () {\r\n Search.search();\r\n Search.sizeSearch();\r\n};\r\n\r\nSearch.init();\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/search.js","// import StickySidebar from 'sticky-sidebar';\r\nimport StickySidebar from 'sticky-sidebar/dist/sticky-sidebar';\r\n\r\n(function($) {\r\n var Checkout = {};\r\n\r\n var editProduct = '.js-edit-item';\r\n var cartContainer = $(document).find( '#js-selectedItems' );\r\n var selectedItemsContainer = $(document).find( '#js-selectedItems--selection' );\r\n var selectedTotalsContainer = $(document).find( '#js-selectedTotals' );\r\n var voucherContainer = $(document).find('#js-selectedVoucher');\r\n var paymentMethodContainer = $(document).find( '#js-selectedPaymentMethod' );\r\n var newsletterContainer = $(document).find( '#js-selectedNewsletter' );\r\n var giftContainer = $(document).find( '#js-selectedGiftwrap' );\r\n var paymentFieldsContainer = $(document).find( '#js-paymentFields' );\r\n var commentContainer = $(document).find('#js-selectedComment');\r\n var shippingMethodContainer = $(document).find( '#js-selectedShippingMethod' );\r\n var scope = $(document).find( '#js-checkout-content' );\r\n var totalDesktop = $(document).find( '#js-checkout-sidebar' );\r\n var totalMobile = $(document).find( '#js-checkout-sidebar-mobile' );\r\n var abandonCartEmailSession = document.getElementById( 'js-abandon-cart-email-session' );\r\n var isDesktop;\r\n\r\n\r\n\tCheckout.init = function() {\r\n isDesktop = true;\r\n Checkout.moveTotalSummaryContent();\r\n\r\n // Payment form submit\r\n var checkoutFormPurchase = $(document).find( '.template-checkout #esc_purchase' );\r\n if (checkoutFormPurchase) {\r\n checkoutFormPurchase.off( 'submit' ).on( 'submit', function () {\r\n var hasError = Checkout.processPaymentFormValidation();\r\n\r\n if (hasError === false) {\r\n return hasError;\r\n }\r\n });\r\n } \r\n\r\n // Payment form input fields\r\n var checkoutFormFields = paymentFieldsContainer.find( 'input' );\r\n if (checkoutFormFields) {\r\n checkoutFormFields.off( 'focus' ).on( 'focus', function () {\r\n $(this).removeClass( 'is-invalid' );\r\n });\r\n }\r\n\r\n // Add/Remove product\r\n if ($(document).find( editProduct )) {\r\n $(document).find( editProduct ).off( 'click' ).on( 'click', function (e) {\r\n e.preventDefault();\r\n Checkout.processItems( $(this) );\r\n });\r\n }\r\n\r\n // Voucher\r\n var voucherField = $(document).find( '#js-selectedVoucher #voucher' );\r\n if (voucherField) {\r\n voucherField.off( 'keydown' ).on( 'keydown', function(e) {\r\n if (e.keyCode !== 13) { return; }\r\n\r\n e.preventDefault();\r\n Checkout.voucherProcess( $(this).parent().next() );\r\n });\r\n }\r\n\r\n var voucherButton = $(document).find( '#js-selectedVoucher .js-voucher-button' );\r\n if (voucherButton) {\r\n voucherButton.off( 'click' ).on( 'click', function(e) {\r\n e.preventDefault();\r\n Checkout.voucherProcess( $(this) );\r\n });\r\n }\r\n\r\n // Newsletter\r\n if (newsletterContainer.find( ':checkbox' )) {\r\n newsletterContainer.find( ':checkbox' ).off( 'change' ).on( 'change', function(e) {\r\n e.preventDefault();\r\n Checkout.processNewsletter( 'click' );\r\n });\r\n }\r\n\r\n // Gift\r\n if (giftContainer.find( ':checkbox' )) {\r\n giftContainer.find( ':checkbox' ).off( 'change' ).on( 'change', function(e) {\r\n e.preventDefault();\r\n Checkout.processComment( 'click' );\r\n });\r\n }\r\n\r\n // Comment\r\n if (commentContainer.find( 'textarea' )) {\r\n commentContainer.find( 'textarea' ).off( 'blur' ).on( 'blur', function(e) {\r\n e.preventDefault();\r\n Checkout.processComment( 'click' );\r\n });\r\n }\r\n\r\n // Payment Method\r\n var paymentOptions = $(document).find('#js-selectedPaymentMethod :radio');\r\n if (paymentOptions) {\r\n paymentOptions.off( 'change' ).on( 'change', function(e) {\r\n e.preventDefault();\r\n Checkout.processPaymentMethod( paymentMethodContainer );\r\n });\r\n }\r\n\r\n // Shipping Method\r\n var shippingOptions = $(document).find('#js-selectedShippingMethod :radio');\r\n if (shippingOptions) {\r\n shippingOptions.off( 'change' ).on( 'change', function(e) {\r\n e.preventDefault();\r\n Checkout.processShippingMethod( shippingMethodContainer );\r\n });\r\n }\r\n\r\n // Country\r\n var countryOptions = $(document).find( '#js-selectedCountry .js-country-item' );\r\n if (countryOptions) {\r\n countryOptions.off( 'click' ).on( 'click', function(e) {\r\n e.preventDefault(); \r\n Checkout.countryChangeProcess( this.dataset.code, '', false );\r\n } );\r\n }\r\n\r\n // State\r\n var stateOptions = $(document).find( '#js-selectedState .js-state-item' );\r\n if (stateOptions) {\r\n stateOptions.off( 'click' ).on( 'click', function(e) {\r\n e.preventDefault(); \r\n //Checkout.countryChangeProcess( $(document).find( '#js-selectedCountry .js-country-item.active' )[0].dataset.code, this.dataset.code, false );\r\n Checkout.stateChangeProcess(this.dataset.code);\r\n } );\r\n } \r\n\r\n\r\n\r\n // Catch Klarna form updates\r\n let interval = setInterval( () => {\r\n // console.log( 'waiting for window._klarnaCheckout...' );\r\n // console.log(typeof window._klarnaCheckout);\r\n if ( typeof window._klarnaCheckout === 'undefined' ) {\r\n return;\r\n }\r\n \r\n clearInterval( interval );\r\n \r\n window._klarnaCheckout( function ( api ) {\r\n api.on( {\r\n 'shipping_address_change': function ( data ) {\r\n // console.log( 'shipping_address_change' );\r\n // console.log( data.email );\r\n \r\n let zipCode = ( data.hasOwnProperty( 'postal_code' ) && data.postal_code ) ? data.postal_code : null;\r\n \r\n if ( zipCode ) {\r\n $( '#js-zip-code' ).val( zipCode ).trigger( 'change' );\r\n }\r\n console.log(data.hasOwnProperty( 'email' ));\r\n if ( data.hasOwnProperty( 'email' ) && data.email ) {\r\n $.ajax( {\r\n url: '/wp-admin/admin-ajax.php',\r\n dataType: 'JSON',\r\n type: 'POST',\r\n data: {\r\n action: 'update_cart_abandonment',\r\n email: data.email,\r\n zip_code: zipCode,\r\n },\r\n error: function ( request ) {\r\n console.debug( request );\r\n },\r\n } );\r\n }\r\n },\r\n } );\r\n } );\r\n }, 1000 );\r\n };\r\n\r\n Checkout.moveTotalSummaryContent = function() {\r\n if ( !totalDesktop || !totalMobile ) {\r\n return;\r\n }\r\n\r\n var currentIsDesktop = matchMedia( 'screen and (min-width: 1024px)' ).matches;\r\n var appendContent = function(from, to) {\r\n var content = from.children();\r\n\r\n if (content) {\r\n content.detach().appendTo( to );\r\n }\r\n };\r\n \r\n if ( isDesktop !== currentIsDesktop ) {\r\n if (currentIsDesktop) {\r\n appendContent( totalMobile, totalDesktop );\r\n } else {\r\n appendContent( totalDesktop, totalMobile );\r\n }\r\n }\r\n\r\n isDesktop = currentIsDesktop;\r\n }; \r\n\r\n\tCheckout.updateHtml = function( data ) {\r\n console.log('reinit payments');\r\n\r\n if (data.totalItems === 0) {\r\n\r\n window.location.href = location.pathname;\r\n\r\n } else {\r\n\r\n paymentMethodContainer.html( data.paymentOptions );\r\n shippingMethodContainer.html( data.shippingOptions );\r\n paymentFieldsContainer.html( data.payments );\r\n cartContainer.html( data.basket );\r\n selectedItemsContainer.html( data.items );\r\n selectedTotalsContainer.html( data.totals );\r\n voucherContainer.html( data.voucher );\r\n Checkout.init();\r\n\r\n }\r\n\r\n Checkout.showLoader( false );\r\n };\r\n\r\n Checkout.showLoader = function( showLoader ) {\r\n var loader = $(document).find('.js-loader');\r\n var hiddenClass = 'd-none';\r\n\r\n if (!loader) {\r\n return;\r\n }\r\n\r\n if (showLoader) {\r\n loader.removeClass( hiddenClass );\r\n } else {\r\n loader.addClass( hiddenClass );\r\n }\r\n };\r\n\r\n Checkout.validateEmail = function( email ) {\r\n //eslint-disable-next-line\r\n var re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return re.test( email );\r\n };\r\n\r\n Checkout.processPaymentFormValidation = function() {\r\n\r\n var hasError = false;\r\n\r\n var formFields = [\r\n 'email',\r\n 'phoneNumber',\r\n 'firstName',\r\n 'lastName',\r\n 'address1',\r\n 'city',\r\n 'zipCode',\r\n 'termsAndConditions',\r\n ];\r\n\r\n $.each( formFields, function ( index, field ) {\r\n\r\n var formField = $( '#address_' + field + ':visible' );\r\n\r\n formField.removeClass( 'is-invalid' );\r\n\r\n if ( typeof ( formField.val() ) !== 'undefined' ) {\r\n\r\n if ( !formField.val() ) {\r\n formField.addClass( 'is-invalid' );\r\n hasError = true;\r\n } else if ( field === 'email' ) {\r\n if ( !Checkout.validateEmail( formField.val() ) ) {\r\n formField.addClass( 'is-invalid' );\r\n hasError = true;\r\n }\r\n } else if ( field === 'termsAndConditions' ) {\r\n if( ! formField.is(':checked') ) {\r\n formField.addClass( 'is-invalid' );\r\n hasError = true;\r\n }\r\n }\r\n }\r\n } );\r\n\r\n\r\n if ( hasError ) {\r\n return false;\r\n }\r\n \r\n \r\n var zipcode = $('#address_zipCode').val();\r\n var email = $('#address_email').val();\r\n\r\n if (abandonCartEmailSession.value != 1){\r\n $.ajax( {\r\n url: '/wp-admin/admin-ajax.php',\r\n dataType: 'JSON',\r\n type: 'POST',\r\n data: {\r\n action: 'update_cart_abandonment',\r\n email: email,\r\n zip_code : zipcode,\r\n },\r\n error: function ( request ) {\r\n console.debug( request );\r\n },\r\n } );\r\n }\r\n };\r\n\r\n Checkout.processItems = function( el ) {\r\n if ( !el ) { return; }\r\n\r\n $.ajax({\r\n type: 'GET',\r\n dataType: 'json',\r\n url: el.attr( 'href' ),\r\n beforeSend: function() {\r\n Checkout.showLoader( true );\r\n },\r\n success: function(data) {\r\n\r\n if( data.totalItems === 0 ) {\r\n window.location.href = location.pathname;\r\n } else {\r\n Checkout.updateHtml( data );\r\n }\r\n\r\n },\r\n error: function (request) {\r\n Checkout.showLoader( false );\r\n console.debug(request);\r\n },\r\n });\r\n };\r\n\r\n Checkout.processPaymentMethod = function ( wrapper ) {\r\n var paymentValue = wrapper.find( ':radio:checked' ).val();\r\n\r\n var sendData = $( '#esc_purchase' ).serialize();\r\n \r\n sendData += '&payment_method=' + paymentValue + '&ajax=1';\r\n\r\n console.log( 'processPaymentMethod' );\r\n\r\n $.ajax( {\r\n dataType: 'JSON',\r\n type: 'POST',\r\n data: sendData,\r\n beforeSend: function() {\r\n Checkout.showLoader( true );\r\n }, \r\n success: function ( data ) {\r\n Checkout.showLoader( false );\r\n Checkout.updateHtml( data );\r\n },\r\n error: function ( error ) {\r\n console.log( error );\r\n },\r\n } );\r\n } \r\n\r\n\t// Checkout.processPaymentMethod = function( wrapper ) {\r\n\t// \tvar paymentValue = wrapper.find( ':radio:checked' ).val();\r\n\r\n // console.log( 'processPaymentMethod' );\r\n\r\n // $.ajax( {\r\n // url: window.ajaxURL,\r\n // dataType: 'JSON',\r\n // data: {\r\n // action: 'get_payment_method_form',\r\n // payment_method: paymentValue,\r\n // },\r\n // beforeSend: function() {\r\n // Checkout.showLoader( true );\r\n // },\r\n // success: function ( result ) {\r\n // Checkout.showLoader( false );\r\n // if( result.html ) {\r\n // $( '#js-paymentFields' ).html( result.html );\r\n // } else {\r\n // window.location.reload();\r\n // }\r\n // },\r\n // error: function (request) {\r\n // Checkout.showLoader( false );\r\n // console.debug(request);\r\n // },\r\n // } );\r\n\t// }\r\n\r\n\tCheckout.voucherProcess = function( $button ) {\r\n\t\tvar sendData = $( '#esc_purchase' ).serialize();\r\n\t\tvar buttonName = $button.attr('name');\r\n\t\tvar buttonValue = $button.attr('value');\r\n\r\n\t\tsendData += '&' + buttonName + '=' + buttonValue + '&ajax=1';\r\n\r\n\t\t//Update all HTML\r\n\t\t$.ajax( {\r\n\t\t\tdata: sendData,\r\n\t\t\ttype: 'POST',\r\n dataType: 'JSON',\r\n beforeSend: function() {\r\n Checkout.showLoader( true );\r\n },\r\n\t\t\tsuccess: function(data) {\r\n\t\t\t\tCheckout.updateHtml( data );\r\n },\r\n error: function (request) {\r\n Checkout.showLoader( false );\r\n console.debug(request);\r\n }, \r\n\t\t} );\r\n\t};\r\n\r\n Checkout.countryChangeProcess = function ( countryCode, state, reloadPage ) {\r\n console.log( 'countryChangeProcess' );\r\n\r\n var sendData = 'esc_action=esc_change_country';\r\n\r\n if ( !state ) {\r\n state = '';\r\n }\r\n\r\n sendData += '&esc_country=' + countryCode + '&ajax=1';\r\n sendData += '&address[state]=' + state;\r\n\r\n //Update all HTML\r\n $.ajax( {\r\n data: sendData,\r\n type: 'POST',\r\n dataType: 'JSON',\r\n beforeSend: function() {\r\n Checkout.showLoader( true );\r\n }, \r\n success: function ( data ) {\r\n if ( reloadPage ) {\r\n window.location.reload( true );\r\n } else {\r\n Checkout.updateHtml( data );\r\n }\r\n },\r\n error: function ( request ) {\r\n window.location.reload( true );\r\n console.debug( request );\r\n },\r\n } );\r\n };\r\n\r\n Checkout.stateChangeProcess = function (state) {\r\n console.log('stateChangeProcess');\r\n \r\n //Update all HTML\r\n $.ajax( {\r\n url: '/wp-admin/admin-ajax.php',\r\n data: { \r\n action: 'process_state_change',\r\n state: state,\r\n },\r\n type: 'POST',\r\n dataType: 'JSON',\r\n beforeSend: function () {\r\n Checkout.showLoader(true);\r\n }, \r\n success: function ( data ) {\r\n Checkout.updateHtml(data);\r\n },\r\n } );\r\n };\r\n\r\n Checkout.processShippingMethod = function( wrapper ) {\r\n\r\n var shippingValue = wrapper.find( ':radio:checked' ).val();\r\n\r\n var sendData = $( '#esc_purchase' ).serialize();\r\n\r\n sendData += '&shipping_method=' + shippingValue + '&ajax=1';\r\n\r\n console.log('processShippingMethod');\r\n\r\n $.ajax( {\r\n dataType: 'JSON',\r\n type: 'POST',\r\n data: sendData,\r\n beforeSend: function() {\r\n Checkout.showLoader( true );\r\n },\r\n success: function ( data ) {\r\n Checkout.updateHtml( data );\r\n },\r\n error: function (request) {\r\n Checkout.showLoader( false );\r\n console.debug(request);\r\n },\r\n } );\r\n\r\n };\r\n\r\n Checkout.processComment = function( action ) {\r\n\r\n console.log('send comment');\r\n\r\n var value = giftContainer.find( ':checkbox:checked' ).length;\r\n var form = $( '#esc_purchase' );\r\n var sendData = form.serializeArray();\r\n var voucher = form.find( '#js-voucher-field button' ).val();\r\n\r\n $.each( sendData, function() {\r\n if( this.name === 'voucher' ) {\r\n this.value = voucher;\r\n }\r\n });\r\n\r\n sendData = $.param( sendData );\r\n\r\n if( value === 0 ) {\r\n sendData += '&internalComment[giftwrap]=0';\r\n }\r\n\r\n sendData += '&submit_comment'+ '=' + value +'&ajax=1';\r\n\r\n //Update all HTML\r\n $.ajax( {\r\n data: sendData,\r\n type: 'POST',\r\n dataType: 'JSON',\r\n beforeSend: function() {\r\n Checkout.showLoader( true );\r\n },\r\n success: function( data ) {\r\n if( action === 'click' ) {\r\n Checkout.updateHtml( data );\r\n }\r\n },\r\n error: function (request) {\r\n Checkout.showLoader( false );\r\n console.debug(request);\r\n }, \r\n } );\r\n };\r\n\r\n\r\n\tCheckout.processNewsletter = function( action ) {\r\n console.log('newsletter');\r\n\r\n\t\tvar value = newsletterContainer.find( ':checkbox:checked' ).length;\r\n var form = $( '#esc_purchase' );\r\n var sendData = form.serializeArray();\r\n var voucher = form.find( '#js-voucher-field button' ).val();\r\n\r\n $.each(sendData, function() {\r\n if( this.name === 'voucher' ) {\r\n this.value = voucher;\r\n }\r\n });\r\n\r\n sendData = $.param( sendData );\r\n\r\n if( value === 0 ) {\r\n sendData += '&address[newsletter]=0';\r\n }\r\n\r\n sendData += '&submit_newsletter'+ '=' + value +'&ajax=1';\r\n\r\n //Update all HTML\r\n $.ajax( {\r\n data: sendData,\r\n type: 'POST',\r\n dataType: 'JSON',\r\n beforeSend: function() {\r\n Checkout.showLoader( true );\r\n },\r\n success: function( data ) {\r\n if( action === 'click' ) {\r\n Checkout.updateHtml( data );\r\n }\r\n },\r\n error: function (request) {\r\n Checkout.showLoader( false );\r\n console.debug(request);\r\n }, \r\n } );\r\n };\r\n\r\n Checkout.animateTitle = function() {\r\n var checkoutSidebar = $('#js-checkout-sidebar');\r\n var checkoutBanner = $('#js-checkout-banner');\r\n var checkoutText = $('#js-checkout-text');\r\n window.onscroll = function () {\r\n if ($(window).innerWidth() >= 768) {\r\n if (document.body.scrollTop > 30 || document.documentElement.scrollTop > 30) {\r\n checkoutBanner.css('padding-top', '24px');\r\n checkoutBanner.css('padding-bottom', '25px');\r\n checkoutText.css('font-size', '30px');\r\n if (checkoutSidebar.length > 0) {\r\n Checkout.sideBar();\r\n }\r\n } else {\r\n checkoutBanner.css('padding-top', '48px');\r\n checkoutBanner.css('padding-bottom', '50px');\r\n checkoutText.css('font-size', '40px');\r\n }\r\n }\r\n\r\n else {\r\n checkoutBanner.css('padding-top', '24px');\r\n checkoutBanner.css('padding-bottom', '25px');\r\n checkoutText.css('font-size', '30px');\r\n }\r\n };\r\n }\r\n\r\n Checkout.sideBar = function() {\r\n var sidebarTopSpacing;\r\n // GET SITE WIDE PRINT HEIGHT WITHOUT MARGIN\r\n // var fineprint = $('.js-header .fine-print')\r\n // var fineprintHeight = fineprint.outerHeight();\r\n\r\n // IF ADMIN IS LOGIN ADD ADMIN BAR HEIGHT\r\n if ($('body').hasClass('admin-bar')) {\r\n if ($(window).innerWidth() >= 1024) {\r\n // if (fineprint.length > 0) {\r\n // // DESKTOP - ADMINBAR + HEADER + CHECKOUT\r\n // sidebarTopSpacing = 185 + fineprintHeight;\r\n // } else {\r\n\r\n // }\r\n\r\n sidebarTopSpacing = 185;\r\n } else {\r\n // MOBILE - ADMINBAR + SMALL(HEADER + CHECKOUT)\r\n // if (fineprint.length > 0) {\r\n // sidebarTopSpacing = 172 + fineprintHeight;\r\n // } else {\r\n\r\n // }\r\n\r\n sidebarTopSpacing = 172;\r\n }\r\n } else {\r\n // NO ADMIN BAR HEADER + CHECKOUT ONLY\r\n if ($(window).innerWidth() >= 1024) {\r\n // DESKTOP - HEADER + CHECKOUT\r\n // if (fineprint.length > 0) {\r\n // sidebarTopSpacing = 157 + fineprintHeight;\r\n // } else {\r\n\r\n // }\r\n\r\n sidebarTopSpacing = 157;\r\n } else {\r\n // MOBILE - SMALL(HEADER + CHECKOUT)\r\n // if (fineprint.length > 0) {\r\n // sidebarTopSpacing = 140 + fineprintHeight;\r\n // } else {\r\n\r\n // }\r\n\r\n sidebarTopSpacing = 140 ;\r\n }\r\n }\r\n\r\n var sidebar = document.getElementById('js-checkout-sidebar');\r\n new StickySidebar(sidebar, {\r\n topSpacing: sidebarTopSpacing,\r\n containerSelector: '.container',\r\n innerWrapperSelector: '.checkout-total',\r\n minWidth: 1023,\r\n });\r\n }\r\n\r\n if( scope.length > 0) {\r\n $(document).ready( function() {\r\n Checkout.init();\r\n Checkout.animateTitle();\r\n } );\r\n\r\n $(window).resize( function () {\r\n Checkout.moveTotalSummaryContent();\r\n Checkout.animateTitle();\r\n } ); \r\n }\r\n\r\n else {\r\n Checkout.animateTitle();\r\n }\r\n\r\n})(jQuery);\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/checkout.js","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.StickySidebar = factory());\n}(this, (function () { 'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\r\n * Sticky Sidebar JavaScript Plugin.\r\n * @version 3.3.1\r\n * @author Ahmed Bouhuolia <a.bouhuolia@gmail.com>\r\n * @license The MIT License (MIT)\r\n */\nvar StickySidebar = function () {\n\n // ---------------------------------\n // # Define Constants\n // ---------------------------------\n //\n var EVENT_KEY = '.stickySidebar';\n var DEFAULTS = {\n\n /**\r\n * Additional top spacing of the element when it becomes sticky.\r\n * @type {Numeric|Function}\r\n */\n topSpacing: 0,\n\n /**\r\n * Additional bottom spacing of the element when it becomes sticky.\r\n * @type {Numeric|Function}\r\n */\n bottomSpacing: 0,\n\n /**\r\n * Container sidebar selector to know what the beginning and end of sticky element.\r\n * @type {String|False}\r\n */\n containerSelector: false,\n\n /**\r\n * Inner wrapper selector.\r\n * @type {String}\r\n */\n innerWrapperSelector: '.inner-wrapper-sticky',\n\n /**\r\n * The name of CSS class to apply to elements when they have become stuck.\r\n * @type {String|False}\r\n */\n stickyClass: 'is-affixed',\n\n /**\r\n * Detect when sidebar and its container change height so re-calculate their dimensions.\r\n * @type {Boolean}\r\n */\n resizeSensor: true,\n\n /**\r\n * The sidebar returns to its normal position if its width below this value.\r\n * @type {Numeric}\r\n */\n minWidth: false\n };\n\n // ---------------------------------\n // # Class Definition\n // ---------------------------------\n //\n /**\r\n * Sticky Sidebar Class.\r\n * @public\r\n */\n\n var StickySidebar = function () {\n\n /**\r\n * Sticky Sidebar Constructor.\r\n * @constructor\r\n * @param {HTMLElement|String} sidebar - The sidebar element or sidebar selector.\r\n * @param {Object} options - The options of sticky sidebar.\r\n */\n function StickySidebar(sidebar) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, StickySidebar);\n\n this.options = StickySidebar.extend(DEFAULTS, options);\n\n // Sidebar element query if there's no one, throw error.\n this.sidebar = 'string' === typeof sidebar ? document.querySelector(sidebar) : sidebar;\n if ('undefined' === typeof this.sidebar) throw new Error(\"There is no specific sidebar element.\");\n\n this.sidebarInner = false;\n this.container = this.sidebar.parentElement;\n\n // Current Affix Type of sidebar element.\n this.affixedType = 'STATIC';\n this.direction = 'down';\n this.support = {\n transform: false,\n transform3d: false\n };\n\n this._initialized = false;\n this._reStyle = false;\n this._breakpoint = false;\n this._resizeListeners = [];\n\n // Dimensions of sidebar, container and screen viewport.\n this.dimensions = {\n translateY: 0,\n topSpacing: 0,\n lastTopSpacing: 0,\n bottomSpacing: 0,\n lastBottomSpacing: 0,\n sidebarHeight: 0,\n sidebarWidth: 0,\n containerTop: 0,\n containerHeight: 0,\n viewportHeight: 0,\n viewportTop: 0,\n lastViewportTop: 0\n };\n\n // Bind event handlers for referencability.\n ['handleEvent'].forEach(function (method) {\n _this[method] = _this[method].bind(_this);\n });\n\n // Initialize sticky sidebar for first time.\n this.initialize();\n }\n\n /**\r\n * Initializes the sticky sidebar by adding inner wrapper, define its container, \r\n * min-width breakpoint, calculating dimensions, adding helper classes and inline style.\r\n * @private\r\n */\n\n\n _createClass(StickySidebar, [{\n key: 'initialize',\n value: function initialize() {\n var _this2 = this;\n\n this._setSupportFeatures();\n\n // Get sticky sidebar inner wrapper, if not found, will create one.\n if (this.options.innerWrapperSelector) {\n this.sidebarInner = this.sidebar.querySelector(this.options.innerWrapperSelector);\n\n if (null === this.sidebarInner) this.sidebarInner = false;\n }\n\n if (!this.sidebarInner) {\n var wrapper = document.createElement('div');\n wrapper.setAttribute('class', 'inner-wrapper-sticky');\n this.sidebar.appendChild(wrapper);\n\n while (this.sidebar.firstChild != wrapper) {\n wrapper.appendChild(this.sidebar.firstChild);\n }this.sidebarInner = this.sidebar.querySelector('.inner-wrapper-sticky');\n }\n\n // Container wrapper of the sidebar.\n if (this.options.containerSelector) {\n var containers = document.querySelectorAll(this.options.containerSelector);\n containers = Array.prototype.slice.call(containers);\n\n containers.forEach(function (container, item) {\n if (!container.contains(_this2.sidebar)) return;\n _this2.container = container;\n });\n\n if (!containers.length) throw new Error(\"The container does not contains on the sidebar.\");\n }\n\n // If top/bottom spacing is not function parse value to integer.\n if ('function' !== typeof this.options.topSpacing) this.options.topSpacing = parseInt(this.options.topSpacing) || 0;\n\n if ('function' !== typeof this.options.bottomSpacing) this.options.bottomSpacing = parseInt(this.options.bottomSpacing) || 0;\n\n // Breakdown sticky sidebar if screen width below `options.minWidth`.\n this._widthBreakpoint();\n\n // Calculate dimensions of sidebar, container and viewport.\n this.calcDimensions();\n\n // Affix sidebar in proper position.\n this.stickyPosition();\n\n // Bind all events.\n this.bindEvents();\n\n // Inform other properties the sticky sidebar is initialized.\n this._initialized = true;\n }\n\n /**\r\n * Bind all events of sticky sidebar plugin.\r\n * @protected\r\n */\n\n }, {\n key: 'bindEvents',\n value: function bindEvents() {\n window.addEventListener('resize', this, { passive: true, capture: false });\n window.addEventListener('scroll', this, { passive: true, capture: false });\n\n this.sidebar.addEventListener('update' + EVENT_KEY, this);\n\n if (this.options.resizeSensor && 'undefined' !== typeof ResizeSensor) {\n new ResizeSensor(this.sidebarInner, this.handleEvent);\n new ResizeSensor(this.container, this.handleEvent);\n }\n }\n\n /**\r\n * Handles all events of the plugin.\r\n * @param {Object} event - Event object passed from listener.\r\n */\n\n }, {\n key: 'handleEvent',\n value: function handleEvent(event) {\n this.updateSticky(event);\n }\n\n /**\r\n * Calculates dimensions of sidebar, container and screen viewpoint\r\n * @public\r\n */\n\n }, {\n key: 'calcDimensions',\n value: function calcDimensions() {\n if (this._breakpoint) return;\n var dims = this.dimensions;\n\n // Container of sticky sidebar dimensions.\n dims.containerTop = StickySidebar.offsetRelative(this.container).top;\n dims.containerHeight = this.container.clientHeight;\n dims.containerBottom = dims.containerTop + dims.containerHeight;\n\n // Sidebar dimensions.\n dims.sidebarHeight = this.sidebarInner.offsetHeight;\n dims.sidebarWidth = this.sidebar.offsetWidth;\n\n // Screen viewport dimensions.\n dims.viewportHeight = window.innerHeight;\n\n this._calcDimensionsWithScroll();\n }\n\n /**\r\n * Some dimensions values need to be up-to-date when scrolling the page.\r\n * @private\r\n */\n\n }, {\n key: '_calcDimensionsWithScroll',\n value: function _calcDimensionsWithScroll() {\n var dims = this.dimensions;\n\n dims.sidebarLeft = StickySidebar.offsetRelative(this.sidebar).left;\n\n dims.viewportTop = document.documentElement.scrollTop || document.body.scrollTop;\n dims.viewportBottom = dims.viewportTop + dims.viewportHeight;\n dims.viewportLeft = document.documentElement.scrollLeft || document.body.scrollLeft;\n\n dims.topSpacing = this.options.topSpacing;\n dims.bottomSpacing = this.options.bottomSpacing;\n\n if ('function' === typeof dims.topSpacing) dims.topSpacing = parseInt(dims.topSpacing(this.sidebar)) || 0;\n\n if ('function' === typeof dims.bottomSpacing) dims.bottomSpacing = parseInt(dims.bottomSpacing(this.sidebar)) || 0;\n\n if ('VIEWPORT-TOP' === this.affixedType) {\n // Adjust translate Y in the case decrease top spacing value.\n if (dims.topSpacing < dims.lastTopSpacing) {\n dims.translateY += dims.lastTopSpacing - dims.topSpacing;\n this._reStyle = true;\n }\n } else if ('VIEWPORT-BOTTOM' === this.affixedType) {\n // Adjust translate Y in the case decrease bottom spacing value.\n if (dims.bottomSpacing < dims.lastBottomSpacing) {\n dims.translateY += dims.lastBottomSpacing - dims.bottomSpacing;\n this._reStyle = true;\n }\n }\n\n dims.lastTopSpacing = dims.topSpacing;\n dims.lastBottomSpacing = dims.bottomSpacing;\n }\n\n /**\r\n * Determine whether the sidebar is bigger than viewport.\r\n * @public\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'isSidebarFitsViewport',\n value: function isSidebarFitsViewport() {\n return this.dimensions.sidebarHeight < this.dimensions.viewportHeight;\n }\n\n /**\r\n * Observe browser scrolling direction top and down.\r\n */\n\n }, {\n key: 'observeScrollDir',\n value: function observeScrollDir() {\n var dims = this.dimensions;\n if (dims.lastViewportTop === dims.viewportTop) return;\n\n var furthest = 'down' === this.direction ? Math.min : Math.max;\n\n // If the browser is scrolling not in the same direction.\n if (dims.viewportTop === furthest(dims.viewportTop, dims.lastViewportTop)) this.direction = 'down' === this.direction ? 'up' : 'down';\n }\n\n /**\r\n * Gets affix type of sidebar according to current scrollTop and scrollLeft.\r\n * Holds all logical affix of the sidebar when scrolling up and down and when sidebar \r\n * is bigger than viewport and vice versa.\r\n * @public\r\n * @return {String|False} - Proper affix type.\r\n */\n\n }, {\n key: 'getAffixType',\n value: function getAffixType() {\n var dims = this.dimensions,\n affixType = false;\n\n this._calcDimensionsWithScroll();\n\n var sidebarBottom = dims.sidebarHeight + dims.containerTop;\n var colliderTop = dims.viewportTop + dims.topSpacing;\n var colliderBottom = dims.viewportBottom - dims.bottomSpacing;\n\n // When browser is scrolling top.\n if ('up' === this.direction) {\n if (colliderTop <= dims.containerTop) {\n dims.translateY = 0;\n affixType = 'STATIC';\n } else if (colliderTop <= dims.translateY + dims.containerTop) {\n dims.translateY = colliderTop - dims.containerTop;\n affixType = 'VIEWPORT-TOP';\n } else if (!this.isSidebarFitsViewport() && dims.containerTop <= colliderTop) {\n affixType = 'VIEWPORT-UNBOTTOM';\n }\n // When browser is scrolling up.\n } else {\n // When sidebar element is not bigger than screen viewport.\n if (this.isSidebarFitsViewport()) {\n\n if (dims.sidebarHeight + colliderTop >= dims.containerBottom) {\n dims.translateY = dims.containerBottom - sidebarBottom;\n affixType = 'CONTAINER-BOTTOM';\n } else if (colliderTop >= dims.containerTop) {\n dims.translateY = colliderTop - dims.containerTop;\n affixType = 'VIEWPORT-TOP';\n }\n // When sidebar element is bigger than screen viewport.\n } else {\n\n if (dims.containerBottom <= colliderBottom) {\n dims.translateY = dims.containerBottom - sidebarBottom;\n affixType = 'CONTAINER-BOTTOM';\n } else if (sidebarBottom + dims.translateY <= colliderBottom) {\n dims.translateY = colliderBottom - sidebarBottom;\n affixType = 'VIEWPORT-BOTTOM';\n } else if (dims.containerTop + dims.translateY <= colliderTop) {\n affixType = 'VIEWPORT-UNBOTTOM';\n }\n }\n }\n\n // Make sure the translate Y is not bigger than container height.\n dims.translateY = Math.max(0, dims.translateY);\n dims.translateY = Math.min(dims.containerHeight, dims.translateY);\n\n dims.lastViewportTop = dims.viewportTop;\n return affixType;\n }\n\n /**\r\n * Gets inline style of sticky sidebar wrapper and inner wrapper according \r\n * to its affix type.\r\n * @private\r\n * @param {String} affixType - Affix type of sticky sidebar.\r\n * @return {Object}\r\n */\n\n }, {\n key: '_getStyle',\n value: function _getStyle(affixType) {\n if ('undefined' === typeof affixType) return;\n\n var style = { inner: {}, outer: {} };\n var dims = this.dimensions;\n\n switch (affixType) {\n case 'VIEWPORT-TOP':\n style.inner = { position: 'fixed', top: dims.topSpacing,\n left: dims.sidebarLeft - dims.viewportLeft, width: dims.sidebarWidth };\n break;\n case 'VIEWPORT-BOTTOM':\n style.inner = { position: 'fixed', top: 'auto', left: dims.sidebarLeft,\n bottom: dims.bottomSpacing, width: dims.sidebarWidth };\n break;\n case 'CONTAINER-BOTTOM':\n case 'VIEWPORT-UNBOTTOM':\n var translate = this._getTranslate(0, dims.translateY + 'px');\n\n if (translate) style.inner = { transform: translate };else style.inner = { position: 'absolute', top: dims.translateY, width: dims.sidebarWidth };\n break;\n }\n\n switch (affixType) {\n case 'VIEWPORT-TOP':\n case 'VIEWPORT-BOTTOM':\n case 'VIEWPORT-UNBOTTOM':\n case 'CONTAINER-BOTTOM':\n style.outer = { height: dims.sidebarHeight, position: 'relative' };\n break;\n }\n\n style.outer = StickySidebar.extend({ height: '', position: '' }, style.outer);\n style.inner = StickySidebar.extend({ position: 'relative', top: '', left: '',\n bottom: '', width: '', transform: this._getTranslate() }, style.inner);\n\n return style;\n }\n\n /**\r\n * Cause the sidebar to be sticky according to affix type by adding inline\r\n * style, adding helper class and trigger events.\r\n * @function\r\n * @protected\r\n * @param {string} force - Update sticky sidebar position by force.\r\n */\n\n }, {\n key: 'stickyPosition',\n value: function stickyPosition(force) {\n if (this._breakpoint) return;\n\n force = this._reStyle || force || false;\n\n var affixType = this.getAffixType();\n var style = this._getStyle(affixType);\n\n if ((this.affixedType != affixType || force) && affixType) {\n var affixEvent = 'affix.' + affixType.toLowerCase().replace('viewport-', '') + EVENT_KEY;\n StickySidebar.eventTrigger(this.sidebar, affixEvent);\n\n if ('STATIC' === affixType) StickySidebar.removeClass(this.sidebar, this.options.stickyClass);else StickySidebar.addClass(this.sidebar, this.options.stickyClass);\n\n for (var key in style.outer) {\n this.sidebar.style[key] = style.outer[key];\n }\n\n for (var _key in style.inner) {\n var _unit2 = 'number' === typeof style.inner[_key] ? 'px' : '';\n this.sidebarInner.style[_key] = style.inner[_key] + _unit2;\n }\n\n var affixedEvent = 'affixed.' + affixType.toLowerCase().replace('viewport-', '') + EVENT_KEY;\n StickySidebar.eventTrigger(this.sidebar, affixedEvent);\n } else {\n if (this._initialized) this.sidebarInner.style.left = style.inner.left;\n }\n\n this.affixedType = affixType;\n }\n\n /**\r\n * Breakdown sticky sidebar when window width is below `options.minWidth` value.\r\n * @protected\r\n */\n\n }, {\n key: '_widthBreakpoint',\n value: function _widthBreakpoint() {\n\n if (window.innerWidth <= this.options.minWidth) {\n this._breakpoint = true;\n this.affixedType = 'STATIC';\n\n this.sidebar.removeAttribute('style');\n StickySidebar.removeClass(this.sidebar, this.options.stickyClass);\n this.sidebarInner.removeAttribute('style');\n } else {\n this._breakpoint = false;\n }\n }\n\n /**\r\n * Switches between functions stack for each event type, if there's no \r\n * event, it will re-initialize sticky sidebar.\r\n * @public\r\n */\n\n }, {\n key: 'updateSticky',\n value: function updateSticky() {\n var _this3 = this;\n\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (this._running) return;\n this._running = true;\n\n (function (eventType) {\n\n requestAnimationFrame(function () {\n switch (eventType) {\n // When browser is scrolling and re-calculate just dimensions\n // within scroll. \n case 'scroll':\n _this3._calcDimensionsWithScroll();\n _this3.observeScrollDir();\n _this3.stickyPosition();\n break;\n\n // When browser is resizing or there's no event, observe width\n // breakpoint and re-calculate dimensions.\n case 'resize':\n default:\n _this3._widthBreakpoint();\n _this3.calcDimensions();\n _this3.stickyPosition(true);\n break;\n }\n _this3._running = false;\n });\n })(event.type);\n }\n\n /**\r\n * Set browser support features to the public property.\r\n * @private\r\n */\n\n }, {\n key: '_setSupportFeatures',\n value: function _setSupportFeatures() {\n var support = this.support;\n\n support.transform = StickySidebar.supportTransform();\n support.transform3d = StickySidebar.supportTransform(true);\n }\n\n /**\r\n * Get translate value, if the browser supports transfrom3d, it will adopt it.\r\n * and the same with translate. if browser doesn't support both return false.\r\n * @param {Number} y - Value of Y-axis.\r\n * @param {Number} x - Value of X-axis.\r\n * @param {Number} z - Value of Z-axis.\r\n * @return {String|False}\r\n */\n\n }, {\n key: '_getTranslate',\n value: function _getTranslate() {\n var y = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var x = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var z = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n if (this.support.transform3d) return 'translate3d(' + y + ', ' + x + ', ' + z + ')';else if (this.support.translate) return 'translate(' + y + ', ' + x + ')';else return false;\n }\n\n /**\r\n * Destroy sticky sidebar plugin.\r\n * @public\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n window.removeEventListener('resize', this, { caption: false });\n window.removeEventListener('scroll', this, { caption: false });\n\n this.sidebar.classList.remove(this.options.stickyClass);\n this.sidebar.style.minHeight = '';\n\n this.sidebar.removeEventListener('update' + EVENT_KEY, this);\n\n var styleReset = { inner: {}, outer: {} };\n\n styleReset.inner = { position: '', top: '', left: '', bottom: '', width: '', transform: '' };\n styleReset.outer = { height: '', position: '' };\n\n for (var key in styleReset.outer) {\n this.sidebar.style[key] = styleReset.outer[key];\n }for (var _key2 in styleReset.inner) {\n this.sidebarInner.style[_key2] = styleReset.inner[_key2];\n }if (this.options.resizeSensor && 'undefined' !== typeof ResizeSensor) {\n ResizeSensor.detach(this.sidebarInner, this.handleEvent);\n ResizeSensor.detach(this.container, this.handleEvent);\n }\n }\n\n /**\r\n * Determine if the browser supports CSS transform feature.\r\n * @function\r\n * @static\r\n * @param {Boolean} transform3d - Detect transform with translate3d.\r\n * @return {String}\r\n */\n\n }], [{\n key: 'supportTransform',\n value: function supportTransform(transform3d) {\n var result = false,\n property = transform3d ? 'perspective' : 'transform',\n upper = property.charAt(0).toUpperCase() + property.slice(1),\n prefixes = ['Webkit', 'Moz', 'O', 'ms'],\n support = document.createElement('support'),\n style = support.style;\n\n (property + ' ' + prefixes.join(upper + ' ') + upper).split(' ').forEach(function (property, i) {\n if (style[property] !== undefined) {\n result = property;\n return false;\n }\n });\n return result;\n }\n\n /**\r\n * Trigger custom event.\r\n * @static\r\n * @param {DOMObject} element - Target element on the DOM.\r\n * @param {String} eventName - Event name.\r\n * @param {Object} data - \r\n */\n\n }, {\n key: 'eventTrigger',\n value: function eventTrigger(element, eventName, data) {\n try {\n var event = new CustomEvent(eventName, { detail: data });\n } catch (e) {\n var event = document.createEvent('CustomEvent');\n event.initCustomEvent(eventName, true, true, data);\n }\n element.dispatchEvent(event);\n }\n\n /**\r\n * Extend options object with defaults.\r\n * @function\r\n * @static\r\n */\n\n }, {\n key: 'extend',\n value: function extend(defaults, options) {\n var results = {};\n for (var key in defaults) {\n if ('undefined' !== typeof options[key]) results[key] = options[key];else results[key] = defaults[key];\n }\n return results;\n }\n\n /**\r\n * Get current coordinates left and top of specific element.\r\n * @static\r\n */\n\n }, {\n key: 'offsetRelative',\n value: function offsetRelative(element) {\n var result = { left: 0, top: 0 };\n\n do {\n var offsetTop = element.offsetTop;\n var offsetLeft = element.offsetLeft;\n\n if (!isNaN(offsetTop)) result.top += offsetTop;\n\n if (!isNaN(offsetLeft)) result.left += offsetLeft;\n\n element = 'BODY' === element.tagName ? element.parentElement : element.offsetParent;\n } while (element);\n return result;\n }\n\n /**\r\n * Add specific class name to specific element.\r\n * @static \r\n * @param {ObjectDOM} element \r\n * @param {String} className \r\n */\n\n }, {\n key: 'addClass',\n value: function addClass(element, className) {\n if (!StickySidebar.hasClass(element, className)) {\n if (element.classList) element.classList.add(className);else element.className += ' ' + className;\n }\n }\n\n /**\r\n * Remove specific class name to specific element\r\n * @static\r\n * @param {ObjectDOM} element \r\n * @param {String} className \r\n */\n\n }, {\n key: 'removeClass',\n value: function removeClass(element, className) {\n if (StickySidebar.hasClass(element, className)) {\n if (element.classList) element.classList.remove(className);else element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n\n /**\r\n * Determine weather the element has specific class name.\r\n * @static\r\n * @param {ObjectDOM} element \r\n * @param {String} className \r\n */\n\n }, {\n key: 'hasClass',\n value: function hasClass(element, className) {\n if (element.classList) return element.classList.contains(className);else return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n }\n }]);\n\n return StickySidebar;\n }();\n\n return StickySidebar;\n}();\n\n// Global\n// -------------------------\nwindow.StickySidebar = StickySidebar;\n\nreturn StickySidebar;\n\n})));\n\n//# sourceMappingURL=sticky-sidebar.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/sticky-sidebar/dist/sticky-sidebar.js\n// module id = 175\n// module chunks = 0","( function ( $ ) {\r\n\tvar Scroll = {};\r\n\r\n\tScroll.To = function ( target, adjHeight ) {\r\n\t\ttarget = $( target );\r\n\r\n\t\tif( typeof adjHeight === 'undefined' || adjHeight === null ) { \r\n\t\t\tadjHeight = 0; \r\n\t\t}\t\t\r\n\r\n\t\tif ( target.length === 0 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar scrollTop = target.offset().top;\r\n\r\n\t\t// Get nav height and subtract to top offset of target element\r\n\t\tvar navBar = $( 'nav' );\r\n\t\tif ( navBar.length > 0 ) {\r\n\t\t\tscrollTop -= parseInt( navBar.css( 'height' ) );\r\n\t\t}\t\r\n\r\n\t\t// Get wpadminbar height and subtract to top offset of target element\r\n\t\tvar wpAdminBar = $( '#wpadminbar' );\r\n\t\tif ( wpAdminBar.length > 0 ) {\r\n\t\t\tscrollTop -= parseInt( wpAdminBar.css( 'height' ) );\r\n\t\t}\r\n\r\n\t\tif( adjHeight > 0 ) {\r\n\t\t\tscrollTop -= parseInt( adjHeight );\r\n\t\t}\r\n\r\n\t\t// Call stop() to avoid shaking behavior in Chrome\r\n\t\t$( 'html, body' ).stop( true ).animate( {\r\n\t\t\tscrollTop: scrollTop,\r\n\t\t}, 1000 );\r\n\t};\r\n\r\n\t$( window ).on('load', function() {\r\n\r\n\t\t// Scroll to specific element id on page load\r\n\t\tif( window.location.hash !== null && window.location.hash !== '' ) {\r\n\t\t\tvar hash = window.location.hash.substring(1);\r\n\t\t\tvar target = $( '#' + hash );\r\n\r\n\t\t\tif (target.length) {\r\n\t\t\t\tScroll.To( target, 0 );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar links = $(document).find( '.js-section-link' );\r\n\t\tif (links.length) {\r\n\t\t\tlinks.off('click').on( 'click', function(e) {\r\n\t\t\t\tvar targetLink = $(this).attr('href');\r\n\r\n\t\t\t\tif (targetLink && $( targetLink )) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tScroll.To( $( targetLink ), 0 );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\r\n\t} );\r\n} )( jQuery );\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/scroll.js","// Hero banner\r\nvar BackgroundSwicher = {};\r\n\r\nBackgroundSwicher.refresh = function () {\r\n $.each( $( '.js-bg-switch' ), function () {\r\n $( this ).backgroundSwitcher( {breakpoint: 1023.98} );\r\n } );\r\n\r\n // if ( typeof window.lazyLoadInstance !== 'undefined' ) {\r\n // window.lazyLoadInstance.update();\r\n // }\r\n};\r\n\r\nBackgroundSwicher.refresh();\r\n\r\n$( window ).resize( BackgroundSwicher.refresh );\r\n\r\nwindow.BackgroundSwicher = BackgroundSwicher;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/backgroundSwitch.js","const articles = {};\r\n\r\nvar loadMoreButton = false;\r\n\r\narticles.init = () => {\r\n // Article Ajax Load More Start Here\r\n loadMoreButton = $( '.article-loadmore' );\r\n\r\n loadMoreButton.on( 'click', function () {\r\n var currentPage = $( this ).data( 'currentpage' );\r\n var nextPage = currentPage + 1;\r\n articleLoad( nextPage );\r\n $( this ).data( 'currentpage', nextPage );\r\n } );\r\n}\r\n\r\ndocument.addEventListener( 'DOMContentLoaded', function () {\r\n articles.init();\r\n} );\r\n\r\nfunction articleLoad ( nextPage ) {\r\n var ajaxUrl = loadMoreButton.data( 'ajaxurl' );\r\n var order = loadMoreButton.data( 'order' );\r\n var orderBy = loadMoreButton.data( 'orderby' );\r\n var postsPerPage = loadMoreButton.data( 'postsperpage' );\r\n var currentTermId = loadMoreButton.data( 'currentterm_id' );\r\n var lang = loadMoreButton.data( 'lang' );\r\n\r\n var params = {};\r\n\r\n if (nextPage) params.page = nextPage;\r\n if (postsPerPage) params.per_page = postsPerPage;\r\n if (currentTermId) params.categories = currentTermId;\r\n if (order) params.order = order;\r\n if (orderBy) params.orderBy = orderBy;\r\n if (lang) params.lang = lang;\r\n\r\n params.categories_exclude = 1;\r\n\r\n var queryString = Object.keys(params).map( key => {\r\n return `${key}=${params[key]}`\r\n }).join('&');\r\n\r\n if (queryString) {\r\n ajaxUrl += `?${queryString}`;\r\n }\r\n\r\n $.ajax( {\r\n url: ajaxUrl,\r\n type: 'GET',\r\n beforeSend: function () {\r\n loadMoreButton.addClass( 'is-loading' );\r\n },\r\n error: function ( data, textStatus ) {\r\n console.log( data );\r\n console.log( textStatus );\r\n },\r\n success: function ( data, textStatus, jqXHR ) {\r\n if ( data ) {\r\n loadMoreButton.removeClass( 'is-loading' );\r\n\r\n // Need to clear list if Filter is trigger\r\n if ( nextPage == 1 ) {\r\n $( '.article-list' ).html( '' );\r\n }\r\n\r\n if ( $( data ).length > 0 ) {\r\n $( data ).each( function ( key, val ) {\r\n $( '.article-list' ).append( val.article_item );\r\n } );\r\n }\r\n\r\n var totalCount = parseInt( jqXHR.getResponseHeader( 'X-WP-Total' ), 10 );\r\n // if ($('.js-total-count')) {\r\n // \t$('.js-total-count').text( totalCount );\r\n // }\r\n\r\n if ( totalCount === 0 ) {\r\n loadMoreButton.addClass( 'd-none' );\r\n }\r\n\r\n var totalPage = parseInt( jqXHR.getResponseHeader( 'X-WP-TotalPages' ), 10 );\r\n if ( loadMoreButton.data( 'currentpage' ) == totalPage || data.length == 0 )\r\n loadMoreButton.addClass( 'd-none' ); // if last page, remove the button\r\n } else {\r\n loadMoreButton.addClass( 'd-none' ); // if no data, remove the button as well\r\n }\r\n },\r\n complete: function () {\r\n if (window.lazyLoadInstance && typeof window.lazyLoadInstance.update !== 'undefined') {\r\n window.lazyLoadInstance.update();\r\n }\r\n },\r\n } );\r\n}\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/articles.js","let Forms = {};\r\n\r\nForms.init = function () {\r\n // Get all master checkboxes\r\n const masterCheckboxes = document.querySelectorAll('.master-checkbox');\r\n\r\n // Add event listener to each master checkbox\r\n masterCheckboxes.forEach(function(masterCheckbox) {\r\n // Get associated checkboxes for the current master checkbox\r\n const checkboxes = masterCheckbox.closest('.js-newsletter').querySelectorAll('.js-checkbox-sports');\r\n\r\n // Add event listener to the current master checkbox\r\n masterCheckbox.addEventListener('click', function() {\r\n // Toggle the checked state of associated checkboxes\r\n checkboxes.forEach(function(checkbox) {\r\n checkbox.checked = masterCheckbox.checked;\r\n });\r\n });\r\n\r\n // Add event listeners to individual checkboxes\r\n checkboxes.forEach(function(checkbox) {\r\n checkbox.addEventListener('click', function() {\r\n // Check if all associated checkboxes are checked\r\n const allChecked = Array.from(checkboxes).every(function(checkbox) {\r\n return checkbox.checked;\r\n });\r\n\r\n // Update the master checkbox's checked state\r\n masterCheckbox.checked = allChecked;\r\n });\r\n });\r\n });\r\n\r\n}\r\n\r\nForms.init()\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/forms.js","let tripleMedia = {};\r\n\r\ntripleMedia.setBigTitleHeight = function () {\r\n\tconst elements = document.querySelectorAll( '.js-triple-media-content-rotated-title' );\r\n\r\n\tlet maxWidth = 0;\r\n\r\n\telements.forEach( element => {\r\n\t\tconst width = element.offsetWidth;\r\n\t\tmaxWidth = Math.max( maxWidth, width );\r\n\t} );\r\n\r\n\telements.forEach( element => {\r\n\t\telement.style.width = `${maxWidth}px`;\r\n\t} );\r\n}\r\n\r\ntripleMedia.showContentInMobile = function () {\r\n\tif ( matchMedia( 'screen and (max-width: 1023.98px)' ).matches ) {\r\n\t\tconst tripleMediaSection = document.querySelectorAll( 'section.triple-media' );\r\n\r\n\t\ttripleMediaSection.forEach( tripleMediaSectionItem => {\r\n\t\t\tconst tripleMediaItems = tripleMediaSectionItem.querySelectorAll( '.js-triple-media-item' );\r\n\r\n\t\t\ttripleMediaItems.forEach( tripleMediaItem => {\r\n\t\t\t\ttripleMediaItem.addEventListener( 'click', ( e ) => {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\te.stopPropagation();\r\n\r\n\t\t\t\t\tif ( tripleMediaItem.classList.contains( 'active' ) ) {\r\n\t\t\t\t\t\tlet link = tripleMediaItem.querySelector( 'a' );\r\n\r\n\t\t\t\t\t\tif ( link ) {\r\n\t\t\t\t\t\t\tif ( link.target === '_blank' ) {\r\n\t\t\t\t\t\t\t\twindow.open( link.href );\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tdocument.location.href = link.href;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttripleMediaSectionItem.querySelectorAll( '.js-triple-media-item' ).forEach( item => {\r\n\t\t\t\t\t\t\titem.classList.remove( 'active' );\r\n\t\t\t\t\t\t} );\r\n\r\n\t\t\t\t\t\ttripleMediaItem.classList.add( 'active' );\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t} );\r\n\t\t} );\r\n\t}\r\n\r\n};\r\n\r\ntripleMedia.showContentInMobile();\r\ntripleMedia.setBigTitleHeight();\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/tripleMedia.js","import { stokpress } from '../util/helper';\r\n\r\nconst cookieName = 'FooterBannerDisplayed';\r\nlet bottomBar = {};\r\n\r\nbottomBar.init = function () {\r\n const bottomBarClose = document.querySelector('.js-bottom-bar-close');\r\n const bottomBar = document.querySelector('.js-bottom-bar');\r\n\r\n if (!bottomBar) return;\r\n \r\n // Show bottom bar if cookie is not set\r\n if( !stokpress.getCookie( cookieName ) ) {\r\n bottomBar.classList.remove('d-none');\r\n document.documentElement.style.setProperty('--bottomBarHeight', '50px');\r\n } else {\r\n document.documentElement.style.setProperty('--bottomBarHeight', '0px');\r\n }\r\n\r\n bottomBarClose.addEventListener('click', () => {\r\n bottomBar.classList.add('d-none');\r\n document.documentElement.style.setProperty('--bottomBarHeight', '0px');\r\n stokpress.setCookie( cookieName, true, 30 );\r\n });\r\n\r\n};\r\n\r\nbottomBar.init();\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/bottomBar.js","let splashScreen = {};\r\n\r\nsplashScreen.init = function () {\r\n let SplashScreen = document.getElementById('js-splash-screen');\r\n\r\n\tif (!SplashScreen) {\r\n\t\treturn;\r\n\t}\r\n\r\n let SplashScreenCloseButton = document.getElementById('js-splash-screen-close-button');\r\n const delay = SplashScreen.dataset.delay ? SplashScreen.dataset.delay * 1000 : 2500;\r\n\r\n // function openSplashScreen() {\r\n // if (SplashScreen) {\r\n // SplashScreen.style.display = 'block';\r\n // setTimeout(function () {\r\n // SplashScreen.style.opacity = '1';\r\n // }, 1000);\r\n // document.body.classList.remove('hide-splash-screen');\r\n // document.body.classList.add('show-splash-screen');\r\n // }\r\n // }\r\n\r\n function closeSplashScreen() {\r\n if (SplashScreen) {\r\n SplashScreen.style.opacity = '0';\r\n setTimeout(function () {\r\n SplashScreen.style.display = 'none';\r\n }, 1000);\r\n document.body.classList.remove('show-splash-screen');\r\n document.body.classList.add('hide-splash-screen');\r\n }\r\n }\r\n\r\n if(SplashScreenCloseButton) {\r\n SplashScreenCloseButton.addEventListener('click', closeSplashScreen);\r\n }\r\n\r\n const currentUrl = window.location.href;\r\n const targetQueryParam = 'splashScreen';\r\n const targetParamValue = 'noClose';\r\n const pattern = new RegExp(`[?&]${targetQueryParam}=${targetParamValue}(?:&|$)`);\r\n const paramExists = pattern.test(currentUrl);\r\n\r\n if (!paramExists) {\r\n setTimeout(() => {\r\n closeSplashScreen();\r\n }, delay);\r\n }\r\n};\r\n\r\nsplashScreen.init();\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/splashScreen.js","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./styles/main.scss\n// module id = 183\n// module chunks = 0"],"sourceRoot":""}