{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./utils/isVisible.js","webpack:///./utils/clickOutside.js","webpack:///./utils/getViewportHeight.js","webpack:///./utils/isIEcheck.js","webpack:///./utils/isMobile.js","webpack:///./utils/openInNewTab.js","webpack:///./utils/addActiveLinkClass.js","webpack:///./utils/isIOS.js","webpack:///./utils/fetchCheckStatus.js","webpack:///./utils/isStorageAvailable.js","webpack:///./utils/fetch.js","webpack:///../node_modules/tiny-slider/src/helpers/hideElement.js","webpack:///../node_modules/tiny-slider/src/helpers/showElement.js","webpack:///../node_modules/tiny-slider/src/helpers/checkStorageValue.js","webpack:///../node_modules/tiny-slider/src/helpers/setLocalStorage.js","webpack:///../node_modules/tiny-slider/src/helpers/raf.js","webpack:///../node_modules/tiny-slider/src/helpers/classListSupport.js","webpack:///../node_modules/tiny-slider/src/helpers/hasClass.js","webpack:///../node_modules/tiny-slider/src/helpers/getCssRulesLength.js","webpack:///../node_modules/console-browserify/index.js","webpack:///../node_modules/tiny-slider/src/helpers/addCSSRule.js","webpack:///../node_modules/util/util.js","webpack:///../node_modules/tiny-slider/src/helpers/addEvents.js","webpack:///../node_modules/tiny-slider/src/helpers/forEach.js","webpack:///../node_modules/tiny-slider/src/helpers/removeAttrs.js","webpack:///../node_modules/custom-event/index.js","webpack:///../node_modules/tiny-slider/src/helpers/getBody.js","webpack:///../node_modules/tiny-slider/src/helpers/setFakeBody.js","webpack:///../node_modules/tiny-slider/src/helpers/resetFakeBody.js","webpack:///../node_modules/smooth-scroll/dist/smooth-scroll.polyfills.min.js","webpack:///../node_modules/tiny-slider/src/helpers/docElement.js","webpack:///../node_modules/body-scroll-lock/lib/bodyScrollLock.min.js","webpack:///../node_modules/process/browser.js","webpack:///../node_modules/tiny-slider/src/helpers/hasAttr.js","webpack:///../node_modules/tiny-slider/src/helpers/whichProperty.js","webpack:///../node_modules/util/support/isBufferBrowser.js","webpack:///../node_modules/util/node_modules/inherits/inherits_browser.js","webpack:///../node_modules/assert/assert.js","webpack:///../node_modules/object-assign/index.js","webpack:///../node_modules/scrollingelement/scrollingelement.js","webpack:///../node_modules/tiny-slider/src/helpers/addClass.js","webpack:///./components/PseudoLinks/index.js","webpack:///../node_modules/disable-scroll/es/index.js","webpack:///./components/Header/index.js","webpack:///./components/UI/loader/index.js","webpack:///../node_modules/tiny-slider/src/helpers/getAttr.js","webpack:///./components/LinkAnchors/index.js","webpack:///../node_modules/tiny-slider/src/helpers/isNodeList.js","webpack:///./components/TestimonialsAlt/config.js","webpack:///./components/TestimonialsAlt/Slider.js","webpack:///../node_modules/@splidejs/splide/dist/js/splide.esm.js","webpack:///./components/Slider/index.js","webpack:///./components/VideoLazyLoading/index.js","webpack:///./pages/buy-dissertations/index.js","webpack:///./pages/buy-dissertations/next-step.js","webpack:///../node_modules/tiny-slider/src/helpers/removeEvents.js","webpack:///../node_modules/tiny-slider/src/helpers/passiveOption.js","webpack:///../node_modules/tiny-slider/src/helpers/caf.js","webpack:///../node_modules/tiny-slider/src/helpers/extend.js","webpack:///../node_modules/tiny-slider/src/helpers/arrayFromNodeList.js","webpack:///../node_modules/tiny-slider/src/helpers/isVisible.js","webpack:///../node_modules/tiny-slider/src/helpers/getEndProperty.js","webpack:///../node_modules/webpack/buildin/global.js","webpack:///../node_modules/tiny-slider/src/tiny-slider.js","webpack:///../node_modules/tiny-slider/src/helpers/getSlideId.js","webpack:///../node_modules/tiny-slider/src/helpers/calc.js","webpack:///../node_modules/tiny-slider/src/helpers/percentageLayout.js","webpack:///../node_modules/tiny-slider/src/helpers/mediaquerySupport.js","webpack:///../node_modules/tiny-slider/src/helpers/createStyleSheet.js","webpack:///../node_modules/tiny-slider/src/helpers/removeCSSRule.js","webpack:///../node_modules/tiny-slider/src/helpers/toDegree.js","webpack:///../node_modules/tiny-slider/src/helpers/removeClass.js","webpack:///../node_modules/tiny-slider/src/helpers/getTouchDirection.js","webpack:///../node_modules/tiny-slider/src/helpers/has3DTransforms.js","webpack:///../node_modules/tiny-slider/src/helpers/events.js","webpack:///../node_modules/tiny-slider/src/helpers/jsTransform.js","webpack:///../node_modules/@uvocore-front/utils/dist/index.js","webpack:///./components/Accordion/Accordion.js","webpack:///./components/Accordion/index.js","webpack:///../node_modules/tiny-slider/src/helpers/setAttrs.js","webpack:///../node_modules/tiny-slider/src/helpers/Object.keys.js","webpack:///../node_modules/tiny-slider/src/helpers/childNode.remove.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","isVisible","elem","offsetWidth","offsetHeight","getClientRects","length","clickOutside","element","callback","outsideClickListener","event","contains","target","removeClickListener","document","removeEventListener","addEventListener","getViewportHeight","Math","max","documentElement","clientHeight","window","innerHeight","isIEcheck","ua","navigator","userAgent","indexOf","isMobile","innerWidth","openInNewTab","url","open","focus","addActiveLinkClass","anchorSelector","activeClass","anchors","querySelectorAll","current","location","pathname","getAttribute","classList","add","isiOS","platform","test","checkFetchStatus","response","ok","status","json","type","setItem","removeItem","e","options","method","headers","body","credentials","fetch","Error","text","message","hideElement","el","forceHide","style","display","showElement","checkStorageValue","JSON","parse","setLocalStorage","storage","access","win","raf","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","cb","setTimeout","classListSupport","createElement","hasClass","str","className","getCssRulesLength","sheet","cssRules","rules","util","assert","now","Date","getTime","console","slice","Array","times","global","functions","log","apply","arguments","warn","label","time","duration","err","format","error","stack","inspect","expression","arr","tuple","f","addCSSRule","selector","index","insertRule","addRule","getOwnPropertyDescriptors","obj","keys","descriptors","getOwnPropertyDescriptor","formatRegExp","isString","objects","push","join","args","len","String","replace","x","Number","stringify","_","isNull","isObject","deprecate","fn","msg","process","noDeprecation","this","warned","throwDeprecation","traceDeprecation","trace","debugEnviron","debugs","opts","ctx","seen","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","_extend","isUndefined","customInspect","stylizeWithColor","formatValue","styleType","styles","recurseTimes","isFunction","constructor","ret","primitive","simple","isNumber","formatPrimitive","visibleKeys","array","hash","forEach","val","idx","arrayToHash","getOwnPropertyNames","isError","formatError","isRegExp","RegExp","toString","isDate","output","base","braces","isArray","toUTCString","formatProperty","match","formatArray","map","pop","reduce","prev","cur","numLinesEst","reduceToSingleString","desc","set","split","line","substr","ar","arg","re","objectToString","pad","debuglog","env","NODE_DEBUG","toUpperCase","pid","isNullOrUndefined","isSymbol","isPrimitive","isBuffer","months","timestamp","getHours","getMinutes","getSeconds","getDate","getMonth","prop","inherits","origin","kCustomPromisifiedSymbol","undefined","callbackifyOnRejected","reason","newReason","promisify","original","TypeError","writable","configurable","promiseResolve","promiseReject","promise","Promise","resolve","reject","setPrototypeOf","getPrototypeOf","defineProperties","custom","callbackify","callbackified","maybeCb","self","then","nextTick","rej","addEvents","preventScrolling","option","scope","removeAttrs","els","attrs","attrLength","j","removeAttribute","NativeCustomEvent","CustomEvent","detail","foo","useNative","createEvent","params","initCustomEvent","bubbles","cancelable","createEventObject","Boolean","getBody","doc","fake","setFakeBody","docOverflow","overflow","background","appendChild","resetFakeBody","remove","Element","closest","ownerDocument","item","parentElement","Event","cancelAnimationFrame","a","clearTimeout","M","q","ignore","header","topOnEmptyHash","speed","speedAsDuration","durationMax","durationMin","clip","offset","easing","customEasing","updateURL","popstate","emitEvents","I","charAt","charCodeAt","InvalidCharacterError","F","scrollHeight","activeElement","setAttribute","outline","scrollTo","H","anchor","toggle","dispatchEvent","b","A","O","C","cancelScroll","tagName","pageYOffset","querySelector","u","h","parseInt","getComputedStyle","height","offsetTop","L","g","offsetParent","min","y","v","w","S","abs","E","floor","history","pushState","smoothScroll","id","title","matchMedia","matches","defaultPrevented","button","metaKey","ctrlKey","shiftKey","toLowerCase","hostname","href","decodeURIComponent","preventDefault","replaceState","state","animateScroll","destroy","docElement","from","some","allowTouchMove","touches","paddingRight","maxTouchPoints","disableBodyScroll","targetElement","concat","ontouchstart","targetTouches","clientY","ontouchmove","scrollTop","stopPropagation","passive","reserveScrollBarGap","clientWidth","clearAllBodyScrollLocks","enableBodyScroll","filter","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","browser","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","hasAttr","attr","hasAttribute","whichProperty","props","Props","prefix","copy","fill","readUInt8","ctor","superCtor","super_","TempCtor","objectAssign","compare","Buffer","_isBuffer","hasOwn","pSlice","functionsHaveNames","pToString","isView","arrbuf","ArrayBuffer","DataView","buffer","regex","getName","func","truncate","something","rawname","fail","actual","expected","operator","stackStartFunction","AssertionError","_deepEqual","strict","memos","source","multiline","lastIndex","ignoreCase","Float32Array","Float64Array","Uint8Array","actualIndex","actualVisitedObjects","aIsArgs","isArguments","bIsArgs","ka","objectKeys","kb","sort","objEquiv","expectedException","isPrototypeOf","_throws","shouldThrow","block","_tryBlock","userProvidedMessage","isUnexpectedException","generatedMessage","captureStackTrace","out","fn_name","next_line","substring","equal","notEqual","deepEqual","deepStrictEqual","notDeepEqual","notDeepStrictEqual","strictEqual","notStrictEqual","throws","doesNotThrow","ifError","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","toObject","assign","test1","test2","fromCharCode","test3","letter","shouldUseNative","symbols","to","computeStyle","currentStyle","isCompliantCached","isRendered","visibility","scrollingElement","compatMode","iframe","contentWindow","write","close","parentNode","removeChild","isCompliant","frameset","nextSibling","nodeType","HTMLBodyElement","getNextBodyElement","bodyStyle","htmlStyle","isScrollable","__defineGetter__","attachEvent","propertyName","addClass","pseudoLinks","link","which","ownKeys","enumerableOnly","sym","_toConsumableArray","arr2","_arrayWithoutHoles","iter","iterator","_iterableToArray","_nonIterableSpread","_defineProperties","descriptor","_defineProperty","canUseDOM","DisableScroll","_this","instance","Constructor","_classCallCheck","_window","lockToScrollPos","keyboardKeys","authorizedInInputs","keyCode","disableWheel","disableScroll","disableKeys","protoProps","staticProps","_objectSpread","_this$options","handleWheel","scrollLeft","scrollX","scrollY","handleScroll","handleKeydown","ToggleNav","nav","navScrollSpace","isOpen","sel","showEvent","setNavScrollSpaceHeight","show","hide","ToggleSubNav","navItems","subnavMenuItem","navSimpleItems","subnavButton","subnavBody","subnavScrollSpace","scrollEventsPrevented","subnavHeight","getBoundingClientRect","top","onkeydown","toggleNav","toggleSubNav","scrollHandler","stickyHeader","addLoader","insertTo","position","innerHTML","getAttr","SmoothScroll","isNodeList","config","moreEl","containerEl","siteId","limit","template","customerId","orderTopic","loader","callbackData","TestimonialsInit","testimonials","sliderContainer","slidesCount","nextButton","initSlider","slider","tns","container","items","loop","controls","autoWidth","mouseDrag","useLocalStorage","responsive","1024","edgePadding","onInit","getInfo","displayIndex","slideCount","goTo","rebuild","observeElement","marginValue","children","getWidget","widgetLink","customLoader","Loader","insertLoaderTo","tmWidget","callbackLoaded","STATES","CREATED","MOUNTED","IDLE","MOVING","SCROLLING","DRAGGING","DESTROYED","empty","arrayLike","start","end","typeOf","subject","isHTMLElement","defaultView","HTMLElement","toArray","values","iteratee","includes","toggleClass","elm","classes","append","parent","before","nodes","ref","node","insertBefore","children2","child","firstElementChild","forOwn","right","reverse","merge","omit","elms","value2","tag","display2","preventScroll","rect","parseHtml","html","DOMParser","parseFromString","prevent","stopImmediatePropagation","query","queryAll","removeClass","timeOf","timeStamp","unit","condition","ceil","approximatelyEqual","epsilon","between","number","exclusive","minimum","maximum","clamp","sign","string","replacements","replacement","ids","uniqueId","EventBinder","forEachEvent","targets","events","events2","eventNS","fragment","namespace","isEventTarget","remover","unbind","listener","dispatch","data","EventInterface","Splide2","bus","createDocumentFragment","binder","RequestInterval","interval","onInterval","onUpdate","startTime","rate","paused","count","update","pause","cancel","resume","rewind","isPaused","ORIENTATION_MAP","width","left","X","Y","ArrowLeft","ARROW","ArrowRight","Direction","Components2","axisOnly","direction","orient","ROLE","ALL_ATTRIBUTES","ARIA_PREFIX","CLASS_ROOT","CLASS_ACTIVE","STATUS_CLASS_PREFIX","STATUS_CLASSES","CLASSES","slide","CLASS_PREFIX","clone","CLASS_SLIDE","arrows","arrow","CLASS_ARROW","next","pagination","page","CLASS_PAGINATION","spinner","POINTER_UP_EVENTS","LOOP","Slide$1","slideIndex","destroyed","Components","root","isNavigation","updateOnMove","i18n","slideFocus","isClone","initNavigation","splides","Slide2","splide","Slides","getAt","slideX","onMove","curr","active","isActive","visible","is","trackRect","Elements","track","slideRect","hidden","focusableNodes","updateVisibility","cloneStatus","mount","slideLabel","useContainer","isWithin","distance","diff","PATH","SCROLL_LISTENER_OPTIONS","capture","NORMALIZATION_MAP","Spacebar","Right","Left","Up","Down","normalizeKey","TRIGGER_KEYS","ComponentConstructors","freeze","__proto__","Media","breakpoints","reducedMotion","queries","completely","register","options2","queryList","merged","merged2","entry","refresh","notify","setup","isMin","mediaQuery","enable","list","isUsingKey","_EventInterface","elements","slides","rootClasses","trackClasses","find","bar","CLASS_PROGRESS","role","carousel","init","getClasses","labelledby","drag","POINTER_DOWN_EVENTS","_EventInterface2","_Components2$Elements","Slides2","forEach$1","Slide1","excludeClones","matcher","getIn","Controller","toIndex","hasFocus","perPage","images","img","getLength","isEnough","Layout","vertical","rootRect","_EventInterface3","_Components2$Elements2","styleSlides","cssPadding","resize","force","newRect","cssHeight","cssTrackHeight","gap","fixedWidth","cssSlideSize","fixedHeight","autoHeight","isOverflow","padding","heightRatio","listSize","slideSize","withoutGap","Slide","getGap","totalSize","sliderSize","parseFloat","getPadding","Clones","cloneCount","clones","remount","observe","computeCloneCount","isHead","cloneNode","cloneDeep","generate","clones2","fixedSize","Move","Transition","_EventInterface4","_Components2$Layout","_Components2$Directio","_Components2$Elements3","reposition","isBusy","Scroll","jump","translate","toPosition","preventLoop","destination","exceededMax","getEnd","shift","backwards","excess","getLimit","size","getPosition","minDistance","Infinity","trimming","trimSpace","trim","move","dest","shifted","exceededLimit","exceededMin","endIndex","perMove","_EventInterface5","_Components2$Slides","omitEnd","isLoop","isSlide","getNext","getAdjacent","getPrev","currIndex","prevIndex","onResized","computeDestIndex","snapPage","computeMovableDestIndex","toPage","setIndex","waitForTransition","go","control","allowSameIndex","_ref","indicator","scroll","snap","getIndex","toDest","Arrows","created","wrapperClasses","placeholder","wrapper","enabled","createArrow","CLASS_ARROWS","prev2","arrowPath","nextIndex","prevLabel","last","nextLabel","first","disabled","Autoplay","hovered","focused","_EventInterface6","_Components2$Elements4","autoplay","stopped","play","resetProgress","stop","autoToggle","DATA_ATTRIBUTE","pauseOnHover","pauseOnFocus","listen","Cover","cover","cover2","src","_EventInterface8","friction","onScrolled","noConstrain","clear","noDistance","onEnd","easingFunc","pow","Drag","basePosition","baseEvent","prevBaseEvent","isFree","dragging","clickPrevented","_EventInterface9","_Components2$Directio2","exceeded","disable","onPointerDown","isTouch","isTouchEvent","target2","noDrag","onPointerMove","onPointerUp","save","diffCoord","expired","diffTime","hasExceeded","isSliderDirection","thresholds","dragMinThreshold","isObj","mouse","touch","shouldStart","velocity","computeVelocity","flickPower","flickMaxPages","computeDestination","rewindByDrag","onClick","orthogonal","coordOf","getBaseEvent","changedTouches","TouchEvent","isDragging","Keyboard","_EventInterface10","keyboard","onKeydown","_disabled","LazyLoad","_EventInterface11","isSequential","lazyLoad","entries","srcset","SRC_DATA_ATTRIBUTE","loadNext","check","preloadPages","load","onLoad","Pagination","paginationClasses","getDirection","nextPage","paginationDirection","_button","select","li","class","pageX","paginationKeyboard","createPagination","Sync","isParent","sync","Wheel","lastTime","onWheel","deltaY","_min","wheelMinThreshold","sleep","wheelSleep","releaseWheel","shouldPrevent","wheel","Live","live","sr","textContent","DEFAULTS","rewindSpeed","Fade","done","endCallback","transition","getSpeed","useScroll","Splide","_Splide","states","_o","_E","defaults","_proto","Extensions","_C","_T","Component","component","_this$event","Slider","sliderName","video","poster","videoSource","Accordion","itemsSelector","activeHeading","allHeadings","getElementsByClassName","buttonOrder","getElementById","buttonNextStep","changeText","heading","clearInterval","setInterval","onclick","nextStep","768","removeEvents","supportsPassive","passiveOption","caf","mozCancelAnimationFrame","extend","arrayFromNodeList","nl","getEndProperty","propIn","propOut","endProp","Function","axis","gutter","viewportMax","slideBy","center","controlsPosition","controlsText","controlsContainer","prevButton","navPosition","navContainer","navAsThumbnails","arrowKeys","autoplayPosition","autoplayTimeout","autoplayDirection","autoplayText","autoplayHoverPause","autoplayButton","autoplayButtonOutput","autoplayResetOnVisibility","animateIn","animateOut","animateNormal","animateDelay","lazyload","lazyloadSelector","swipeAngle","nested","preventActionWhenRunning","preventScrollOnTouch","freezable","KEYS","ENTER","SPACE","LEFT","RIGHT","tnsStorage","localStorageAccess","browserInfo","uid","localStorage","getItem","CALC","PERCENTAGELAYOUT","CSSMQ","TRANSFORM","HAS3DTRANSFORMS","TRANSITIONDURATION","TRANSITIONDELAY","ANIMATIONDURATION","ANIMATIONDELAY","TRANSITIONEND","ANIMATIONEND","supportConsoleWarn","tnsList","optionsElements","nodeName","responsiveTem","updateOptions","middleWrapper","breakpointZone","horizontal","outerWrapper","innerWrapper","containerParent","containerHTML","outerHTML","slideItems","windowWidth","getWindowWidth","isOn","setBreakpointZone","slidePositions","imgsComplete","liveregionCurrent","itemsMax","result","getOption","viewport","getViewportWidth","fixedWidthViewportWidth","slideItemsOut","bp","tem","getItemsMax","hasOption","slideCountNew","hasRightDeadZone","rightBoundary","getRightBoundary","updateIndexBeforeTransform","transformAttr","transformPrefix","transformPostfix","getIndexMax","getStartIndex","indexCached","indexMin","getCurrentSlide","indexMax","moveDirectionExpected","running","newContainerClasses","slideId","getFreeze","frozen","controlsEvents","onControlsClick","getEvent","keyIndex","navEvents","onTransitionEnd","getTarget","navIndex","navClicked","targetIndexBase","pages","navCurrentIndex","animating","stopAutoplay","curElement","setFocus","hoverEvents","stopAutoplayTimer","autoplayHoverPaused","setAutoplayTimer","visibilityEvent","autoplayVisibilityPaused","docmentKeydownEvent","touchEvents","onPanStart","onPanMove","onPanEnd","dragEvents","hasControls","hasNav","hasAutoplay","hasTouch","hasMouseDrag","slideActiveClass","imgCompleteClass","imgEvents","imgLoaded","imgCompleted","prevIsButton","nextIsButton","controlsContainerHTML","prevButtonHTML","nextButtonHTML","navContainerHTML","getPages","pagesCached","getCurrentNavIndex","navCurrentIndexCached","navActiveClass","navStr","navStrCurrent","autoplayTimer","autoplayUserPaused","autoplayButtonHTML","autoplayHtmlStrings","translateInit","rafIndex","initPosition","lastPosition","panStart","getDist","resetVariblesWhenDisable","fragmentBefore","fragmentAfter","num","cloneFirst","firstChild","cloneLast","initStructure","fontSize","marginLeft","getSlideMarginLeft","getTransitionDurationStyle","getInnerWrapperStyles","getContainerWidth","getSlideWidthStyle","getSlideGutterStyle","getAnimationDurationStyle","update_carousel_transition_duration","cssText","middleWrapperStr","innerWrapperStr","containerStr","slideStr","itemsBP","fixedWidthBP","speedBP","edgePaddingBP","autoHeightBP","gutterBP","initSheet","initSliderTransform","updateIndex","leftEdge","rightEdge","transformCore","resetDuration","doContainerTransform","getContainerTransformValue","updateContentWrapperHeight","eve","animateSlide","info","startAutoplay","updateSliderHeight","updateInnerWrapperHeight","ownerNode","onResize","toggleAutoplay","htmlList","prevEl","previousElementSibling","parentEl","nextElementSibling","ind","getAbsIndex","absIndex","getInsertPosition","pos","getClientWidth","div","ww","edgePaddingTem","gutterTem","fixedWidthTem","speedTem","gutterTemUnit","itemsTem","dividend","getCSSPrefix","imgs","imgsLoadedCheck","getImageArray","initSliderTransformStyleCheck","doContainerTransformSilent","initTools","initEvents","stylesApplicationCheck","toFixed","initSliderTransformCore","setSlidePositions","updateSlideStatus","insertAdjacentHTML","getLiveRegionStr","txt","navHtml","hiddenStr","updateNavVisibility","isButton","updateControlsStatus","disableUI","resizeTasks","doAutoHeight","doLazyLoad","disableSlider","freezeSlider","additionalUpdates","bpChanged","breakpointZoneTem","needContainerTransform","indChanged","itemsChanged","disableTem","freezeTem","arrowKeysTem","controlsTem","navTem","touchTem","mouseDragTem","autoplayTem","autoplayHoverPauseTem","autoplayResetOnVisibilityTem","indexTem","autoHeightTem","controlsTextTem","centerTem","autoplayTextTem","classN","enableUI","enableSlider","margin","unfreezeSlider","updateLiveRegion","updateGallerySlidePositions","autoheightTem","vp","getVisibleSlideRange","rangestart","rangeend","point","cell","splice","navPrev","navCurrent","updateNavStatus","getMaxSlideHeight","slideStart","slideRange","heights","maxHeight","wp","attr2","range","getLowerCaseNodeName","isAriaDisabled","disEnableElement","prevDisabled","nextDisabled","disablePrev","disableNext","getCenterGap","denominator","classOut","classIn","isOut","render","sliderMoved","strTrans","targetIndex","indexGap","isNaN","factor","passEventObject","targetIn","updateAutoplayButton","action","srcElement","preventDefaultBehavior","returnValue","getMoveDirectionExpected","$","clientX","panUpdate","dist","preventClick","indexMoved","moved","rough","getSlideId","tnsId","calc","vals","percentageLayout","supported","outer","mediaquerySupport","rule","styleSheet","createTextNode","createStyleSheet","media","removeCSSRule","deleteRule","removeRule","toDegree","atan2","PI","getTouchDirection","angle","has3DTransforms","tf","has3d","cssTF","getPropertyValue","Events","topics","eventName","jsTransform","postfix","tick","positionTick","moveElement","default","deployHash","getElementsByTagName","async","defer","readyState","onload","onreadystatechange","thresholdValue","rootMargin","threshold","IntersectionObserver","isIntersecting","unobserve","loaderPosition","catch","__WMS__","utils","loadScripts","headingSelector","contentWrapperSelector","contentSelector","ToggleAccordion","heightContent","setAttrs"],"mappings":"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","file":"js/buy-dissertations.min.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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 442);\n","/**\n *\n * @param elem\n * @returns {boolean}\n */\nconst isVisible = elem =>\n !!elem && !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\n\nexport default isVisible;\n","import isVisible from './isVisible';\n\n/**\n *\n * @param element\n * @param callback\n */\nconst clickOutside = (element, callback) => {\n const outsideClickListener = event => {\n if (!element.contains(event.target) && isVisible(element)) {\n callback();\n // eslint-disable-next-line no-use-before-define\n removeClickListener();\n }\n };\n\n const removeClickListener = () => {\n document.removeEventListener('click', outsideClickListener);\n };\n\n document.addEventListener('click', outsideClickListener);\n};\n\nexport default clickOutside;\n","/**\n *\n * @returns {number}\n */\nconst getViewportHeight = () =>\n Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n\nexport default getViewportHeight;\n","/**\n *\n * @returns {boolean}\n */\nconst isIEcheck = () => {\n const ua = navigator.userAgent;\n /* MSIE used to detect old browsers and Trident used to newer ones */\n const isEI = ua.indexOf('MSIE ') > -1 || ua.indexOf('Trident/') > -1;\n\n return isEI;\n};\n\nexport default isIEcheck;\n","/**\n *\n * @returns {boolean}\n */\nconst isMobile = () => window.innerWidth < 1024;\n\nexport default isMobile;\n","/**\n *\n * @param url\n */\nconst openInNewTab = url => {\n const win = window.open(url, '_blank');\n win.focus();\n};\n\nexport default openInNewTab;\n","/**\n *\n * @param anchorSelector\n * @param activeClass\n */\nconst addActiveLinkClass = ({ anchorSelector = 'a', activeClass = 'active' }) => {\n const anchors = document.querySelectorAll(anchorSelector);\n if (!anchors) return;\n\n const current = window.location.pathname;\n\n for (let i = 0; i < anchors.length; i += 1) {\n if (\n anchors[i].getAttribute('href') === current ||\n anchors[i].getAttribute('data-href') === current\n ) {\n anchors[i].classList.add(activeClass);\n }\n }\n};\n\nexport default addActiveLinkClass;\n","const isiOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n\nexport default isiOS;\n","const checkFetchStatus = response => {\n if (!response.ok) {\n throw response.status;\n }\n return response.json();\n};\n\nexport default checkFetchStatus;\n","export default type => {\n const test = '__storageTest__';\n try {\n window[type].setItem(test, test);\n window[type].removeItem(test);\n return true;\n } catch (e) {\n return false;\n }\n};\n","export default async (url, options = {}) => {\n const { method = 'GET', headers, body = null, credentials = 'omit' } = options;\n\n try {\n const response = await fetch(url, {\n method,\n headers,\n body,\n credentials: credentials !== 'omit' ? 'include' : 'omit',\n });\n\n if (!response.ok) {\n throw new Error('Bad request');\n }\n\n return {\n json: () => response.json(),\n text: () => response.text(),\n };\n } catch (error) {\n throw new Error(`Request failed: ${error.message}`);\n }\n};\n","export function hideElement(el, forceHide) {\n if (el.style.display !== 'none') { el.style.display = 'none'; }\n}","export function showElement(el, forceHide) {\n if (el.style.display === 'none') { el.style.display = ''; }\n}","export function checkStorageValue (value) {\n return ['true', 'false'].indexOf(value) >= 0 ? JSON.parse(value) : value;\n}","export function setLocalStorage(storage, key, value, access) {\n if (access) {\n try { storage.setItem(key, value); } catch (e) {}\n }\n return value;\n}","var win = window;\n\nexport var raf = win.requestAnimationFrame\n || win.webkitRequestAnimationFrame\n || win.mozRequestAnimationFrame\n || win.msRequestAnimationFrame\n || function(cb) { return setTimeout(cb, 16); };\n","export var classListSupport = 'classList' in document.createElement('_');","import { classListSupport } from './classListSupport.js';\n\nvar hasClass = classListSupport ?\n function (el, str) { return el.classList.contains(str); } :\n function (el, str) { return el.className.indexOf(str) >= 0; };\n\nexport { classListSupport, hasClass };","export function getCssRulesLength(sheet) {\n var rule = ('insertRule' in sheet) ? sheet.cssRules : sheet.rules;\n return rule.length;\n}","/*global window, global*/\nvar util = require(\"util\")\nvar assert = require(\"assert\")\nfunction now() { return new Date().getTime() }\n\nvar slice = Array.prototype.slice\nvar console\nvar times = {}\n\nif (typeof global !== \"undefined\" && global.console) {\n console = global.console\n} else if (typeof window !== \"undefined\" && window.console) {\n console = window.console\n} else {\n console = {}\n}\n\nvar functions = [\n [log, \"log\"],\n [info, \"info\"],\n [warn, \"warn\"],\n [error, \"error\"],\n [time, \"time\"],\n [timeEnd, \"timeEnd\"],\n [trace, \"trace\"],\n [dir, \"dir\"],\n [consoleAssert, \"assert\"]\n]\n\nfor (var i = 0; i < functions.length; i++) {\n var tuple = functions[i]\n var f = tuple[0]\n var name = tuple[1]\n\n if (!console[name]) {\n console[name] = f\n }\n}\n\nmodule.exports = console\n\nfunction log() {}\n\nfunction info() {\n console.log.apply(console, arguments)\n}\n\nfunction warn() {\n console.log.apply(console, arguments)\n}\n\nfunction error() {\n console.warn.apply(console, arguments)\n}\n\nfunction time(label) {\n times[label] = now()\n}\n\nfunction timeEnd(label) {\n var time = times[label]\n if (!time) {\n throw new Error(\"No such label: \" + label)\n }\n\n delete times[label]\n var duration = now() - time\n console.log(label + \": \" + duration + \"ms\")\n}\n\nfunction trace() {\n var err = new Error()\n err.name = \"Trace\"\n err.message = util.format.apply(null, arguments)\n console.error(err.stack)\n}\n\nfunction dir(object) {\n console.log(util.inspect(object) + \"\\n\")\n}\n\nfunction consoleAssert(expression) {\n if (!expression) {\n var arr = slice.call(arguments, 1)\n assert.ok(false, util.format.apply(null, arr))\n }\n}\n","// cross browsers addRule method\nimport { raf } from './raf.js';\nexport function addCSSRule(sheet, selector, rules, index) {\n // return raf(function() {\n 'insertRule' in sheet ?\n sheet.insertRule(selector + '{' + rules + '}', index) :\n sheet.addRule(selector, rules, index);\n // });\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","import { passiveOption } from './passiveOption.js';\n\nexport function addEvents(el, obj, preventScrolling) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 && !preventScrolling ? passiveOption : false;\n el.addEventListener(prop, obj[prop], option);\n }\n}","// https://toddmotto.com/ditch-the-array-foreach-call-nodelist-hack/\nexport function forEach (arr, callback, scope) {\n for (var i = 0, l = arr.length; i < l; i++) {\n callback.call(scope, arr[i], i);\n }\n}","import { isNodeList } from \"./isNodeList.js\";\n\nexport function removeAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n attrs = (attrs instanceof Array) ? attrs : [attrs];\n\n var attrLength = attrs.length;\n for (var i = els.length; i--;) {\n for (var j = attrLength; j--;) {\n els[i].removeAttribute(attrs[j]);\n }\n }\n}","\nvar NativeCustomEvent = global.CustomEvent;\n\nfunction useNative () {\n try {\n var p = new NativeCustomEvent('cat', { detail: { foo: 'bar' } });\n return 'cat' === p.type && 'bar' === p.detail.foo;\n } catch (e) {\n }\n return false;\n}\n\n/**\n * Cross-browser `CustomEvent` constructor.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent\n *\n * @public\n */\n\nmodule.exports = useNative() ? NativeCustomEvent :\n\n// IE >= 9\n'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent (type, params) {\n var e = document.createEvent('CustomEvent');\n if (params) {\n e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);\n } else {\n e.initCustomEvent(type, false, false, void 0);\n }\n return e;\n} :\n\n// IE <= 8\nfunction CustomEvent (type, params) {\n var e = document.createEventObject();\n e.type = type;\n if (params) {\n e.bubbles = Boolean(params.bubbles);\n e.cancelable = Boolean(params.cancelable);\n e.detail = params.detail;\n } else {\n e.bubbles = false;\n e.cancelable = false;\n e.detail = void 0;\n }\n return e;\n}\n","export function getBody () {\n var doc = document,\n body = doc.body;\n\n if (!body) {\n body = doc.createElement('body');\n body.fake = true;\n }\n\n return body;\n}","import { docElement } from './docElement.js';\n\nexport function setFakeBody (body) {\n var docOverflow = '';\n if (body.fake) {\n docOverflow = docElement.style.overflow;\n //avoid crashing IE8, if background image is used\n body.style.background = '';\n //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\n body.style.overflow = docElement.style.overflow = 'hidden';\n docElement.appendChild(body);\n }\n\n return docOverflow;\n}","import { docElement } from './docElement.js';\n\nexport function resetFakeBody (body, docOverflow) {\n if (body.fake) {\n body.remove();\n docElement.style.overflow = docOverflow;\n // Trigger layout so kinetic scrolling isn't disabled in iOS6+\n // eslint-disable-next-line\n docElement.offsetHeight;\n }\n}","/*! smooth-scroll v16.1.3 | (c) 2020 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/smooth-scroll */\nwindow.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t,n=(this.document||this.ownerDocument).querySelectorAll(e),o=this;do{for(t=n.length;0<=--t&&n.item(t)!==o;);}while(t<0&&(o=o.parentElement));return o}),(function(){if(\"function\"==typeof window.CustomEvent)return;function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent(\"CustomEvent\");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e})(),(function(){for(var r=0,e=[\"ms\",\"moz\",\"webkit\",\"o\"],t=0;to.durationMax?o.durationMax:o.durationMin&&u=v)return C.cancelScroll(!0),x(a,t,c),H(\"scrollStop\",i,a,r),!(O=l=null)})(d,g)||(O=M.requestAnimationFrame(E),l=e)};0===M.pageYOffset&&M.scrollTo(0,0),f=a,h=i,c||history.pushState&&h.updateURL&&history.pushState({smoothScroll:JSON.stringify(h),anchor:f.id},document.title,f===document.documentElement?\"#top\":\"#\"+f.id),\"matchMedia\"in M&&M.matchMedia(\"(prefers-reduced-motion)\").matches?x(a,Math.floor(g),!1):(H(\"scrollStart\",i,a,r),C.cancelScroll(!0),M.requestAnimationFrame(E))}};var t=function(e){if(!e.defaultPrevented&&!(0!==e.button||e.metaKey||e.ctrlKey||e.shiftKey)&&\"closest\"in e.target&&(a=e.target.closest(o))&&\"a\"===a.tagName.toLowerCase()&&!e.target.closest(b.ignore)&&a.hostname===M.location.hostname&&a.pathname===M.location.pathname&&/#/.test(a.href)){var t,n;try{t=r(decodeURIComponent(a.hash))}catch(e){t=r(a.hash)}if(\"#\"===t){if(!b.topOnEmptyHash)return;n=document.documentElement}else n=document.querySelector(t);(n=n||\"#top\"!==t?n:document.documentElement)&&(e.preventDefault(),(function(e){if(history.replaceState&&e.updateURL&&!history.state){var t=M.location.hash;t=t||\"\",history.replaceState({smoothScroll:JSON.stringify(e),anchor:t||M.pageYOffset},document.title,t||M.location.href)}})(b),C.animateScroll(n,a))}},n=function(e){if(null!==history.state&&history.state.smoothScroll&&history.state.smoothScroll===JSON.stringify(b)){var t=history.state.anchor;\"string\"==typeof t&&t&&!(t=document.querySelector(r(history.state.anchor)))||C.animateScroll(t,null,{updateURL:!1})}};C.destroy=function(){b&&(document.removeEventListener(\"click\",t,!1),M.removeEventListener(\"popstate\",n,!1),C.cancelScroll(),O=A=a=b=null)};return (function(){if(!(\"querySelector\"in document&&\"addEventListener\"in M&&\"requestAnimationFrame\"in M&&\"closest\"in M.Element.prototype))throw\"Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.\";C.destroy(),b=I(q,e||{}),A=b.header?document.querySelector(b.header):null,document.addEventListener(\"click\",t,!1),b.updateURL&&b.popstate&&M.addEventListener(\"popstate\",n,!1)})(),C}}));","export var docElement = document.documentElement;","!function(e,t){if(\"function\"==typeof define&&define.amd)define([\"exports\"],t);else if(\"undefined\"!=typeof exports)t(exports);else{var o={};t(o),e.bodyScrollLock=o}}(this,function(exports){\"use strict\";function i(e){if(Array.isArray(e)){for(var t=0,o=Array(e.length);t 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","export function hasAttr(el, attr) {\n return el.hasAttribute(attr);\n}","export function whichProperty(props){\n if (typeof props === 'string') {\n var arr = [props],\n Props = props.charAt(0).toUpperCase() + props.substr(1),\n prefixes = ['Webkit', 'Moz', 'ms', 'O'];\n \n prefixes.forEach(function(prefix) {\n if (prefix !== 'ms' || props === 'transform') {\n arr.push(prefix + Props);\n }\n });\n\n props = arr;\n }\n\n var el = document.createElement('fakeelement'),\n len = props.length;\n for(var i = 0; i < props.length; i++){\n var prop = props[i];\n if( el.style[prop] !== undefined ){ return prop; }\n }\n\n return false; // explicit for ie9-\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","'use strict';\n\nvar objectAssign = require('object-assign');\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n// NB: The URL to the CommonJS spec is kept just for tradition.\n// node-assert has evolved a lot since then, both in API and behavior.\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\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\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell 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\n// all 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 BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = require('util/');\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (util.isPrimitive(a) || util.isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\n// Expose a strict only variant of assert\nfunction strict(value, message) {\n if (!value) fail(value, true, message, '==', strict);\n}\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/*! https://mths.be/scrollingelement v1.5.2 by @diegoperini & @mathias | MIT license */\nif (!('scrollingElement' in document)) (function() {\n\n\tfunction computeStyle(element) {\n\t\tif (window.getComputedStyle) {\n\t\t\t// Support Firefox < 4 which throws on a single parameter.\n\t\t\treturn getComputedStyle(element, null);\n\t\t}\n\t\t// Support Internet Explorer < 9.\n\t\treturn element.currentStyle;\n\t}\n\n\tfunction isBodyElement(element) {\n\t\t// The `instanceof` check gives the correct result for e.g. `body` in a\n\t\t// non-HTML namespace.\n\t\tif (window.HTMLBodyElement) {\n\t\t\treturn element instanceof HTMLBodyElement;\n\t\t}\n\t\t// Fall back to a `tagName` check for old browsers.\n\t\treturn /body/i.test(element.tagName);\n\t}\n\n\tfunction getNextBodyElement(frameset) {\n\t\t// We use this function to be correct per spec in case `document.body` is\n\t\t// a `frameset` but there exists a later `body`. Since `document.body` is\n\t\t// a `frameset`, we know the root is an `html`, and there was no `body`\n\t\t// before the `frameset`, so we just need to look at siblings after the\n\t\t// `frameset`.\n\t\tvar current = frameset;\n\t\twhile (current = current.nextSibling) {\n\t\t\tif (current.nodeType == 1 && isBodyElement(current)) {\n\t\t\t\treturn current;\n\t\t\t}\n\t\t}\n\t\t// No `body` found.\n\t\treturn null;\n\t}\n\n\t// Note: standards mode / quirks mode can be toggled at runtime via\n\t// `document.write`.\n\tvar isCompliantCached;\n\tvar isCompliant = function() {\n\t\tvar isStandardsMode = /^CSS1/.test(document.compatMode);\n\t\tif (!isStandardsMode) {\n\t\t\t// In quirks mode, the result is equivalent to the non-compliant\n\t\t\t// standards mode behavior.\n\t\t\treturn false;\n\t\t}\n\t\tif (isCompliantCached === void 0) {\n\t\t\t// When called for the first time, check whether the browser is\n\t\t\t// standard-compliant, and cache the result.\n\t\t\tvar iframe = document.createElement('iframe');\n\t\t\tiframe.style.height = '1px';\n\t\t\t(document.body || document.documentElement || document).appendChild(iframe);\n\t\t\tvar doc = iframe.contentWindow.document;\n\t\t\tdoc.write('
x
');\n\t\t\tdoc.close();\n\t\t\tisCompliantCached = doc.documentElement.scrollHeight > doc.body.scrollHeight;\n\t\t\tiframe.parentNode.removeChild(iframe);\n\t\t}\n\t\treturn isCompliantCached;\n\t};\n\n\tfunction isRendered(style) {\n\t\treturn style.display != 'none' && !(style.visibility == 'collapse' &&\n\t\t\t/^table-(.+-group|row|column)$/.test(style.display));\n\t}\n\n\tfunction isScrollable(body) {\n\t\t// A `body` element is scrollable if `body` and `html` both have\n\t\t// non-`visible` overflow and are both being rendered.\n\t\tvar bodyStyle = computeStyle(body);\n\t\tvar htmlStyle = computeStyle(document.documentElement);\n\t\treturn bodyStyle.overflow != 'visible' && htmlStyle.overflow != 'visible' &&\n\t\t\tisRendered(bodyStyle) && isRendered(htmlStyle);\n\t}\n\n\tvar scrollingElement = function() {\n\t\tif (isCompliant()) {\n\t\t\treturn document.documentElement;\n\t\t}\n\t\tvar body = document.body;\n\t\t// Note: `document.body` could be a `frameset` element, or `null`.\n\t\t// `tagName` is uppercase in HTML, but lowercase in XML.\n\t\tvar isFrameset = body && !/body/i.test(body.tagName);\n\t\tbody = isFrameset ? getNextBodyElement(body) : body;\n\t\t// If `body` is itself scrollable, it is not the `scrollingElement`.\n\t\treturn body && isScrollable(body) ? null : body;\n\t};\n\n\tif (Object.defineProperty) {\n\t\t// Support modern browsers that lack a native implementation.\n\t\tObject.defineProperty(document, 'scrollingElement', {\n\t\t\t'get': scrollingElement\n\t\t});\n\t} else if (document.__defineGetter__) {\n\t\t// Support Firefox ≤ 3.6.9, Safari ≤ 4.1.3.\n\t\tdocument.__defineGetter__('scrollingElement', scrollingElement);\n\t} else {\n\t\t// IE ≤ 4 lacks `attachEvent`, so it only gets this one assignment. IE ≤ 7\n\t\t// gets it too, but the value is updated later (see `propertychange`).\n\t\tdocument.scrollingElement = scrollingElement();\n\t\tdocument.attachEvent && document.attachEvent('onpropertychange', function() {\n\t\t\t// This is for IE ≤ 7 only.\n\t\t\t// A `propertychange` event fires when `` is parsed because\n\t\t\t// `document.activeElement` then changes.\n\t\t\tif (window.event.propertyName == 'activeElement') {\n\t\t\t\tdocument.scrollingElement = scrollingElement();\n\t\t\t}\n\t\t});\n\t}\n}());\n","import { classListSupport, hasClass } from './hasClass.js';\nvar addClass = classListSupport ?\n function (el, str) {\n if (!hasClass(el, str)) { el.classList.add(str); }\n } :\n function (el, str) {\n if (!hasClass(el, str)) { el.className += ' ' + str; }\n };\n\nexport { addClass };","import { openInNewTab } from '../../utils';\n\nfunction pseudoLinksInit() {\n const pseudoLinks = document.querySelectorAll('[data-href]');\n\n Array.from(pseudoLinks).forEach(link => {\n link.addEventListener('click', e => {\n e.preventDefault();\n window.location = link.getAttribute('data-href');\n });\n\n link.addEventListener('mousedown', e => {\n if (e.which === 2) openInNewTab(link.getAttribute('data-href'));\n });\n });\n}\n\nwindow.addEventListener('DOMContentLoaded', () => {\n pseudoLinksInit();\n});\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nvar DisableScroll =\n/*#__PURE__*/\nfunction () {\n function DisableScroll() {\n var _this = this;\n\n _classCallCheck(this, DisableScroll);\n\n _defineProperty(this, \"handleWheel\", function (e) {\n e.preventDefault();\n });\n\n _defineProperty(this, \"handleScroll\", function () {\n var _window;\n\n (_window = window).scrollTo.apply(_window, _toConsumableArray(_this.lockToScrollPos));\n });\n\n _defineProperty(this, \"handleKeydown\", function (e) {\n var keys = _this.options.keyboardKeys;\n /* istanbul ignore else */\n\n if (['INPUT', 'TEXTAREA'].indexOf(e.target.tagName) !== -1) {\n keys = _this.options.authorizedInInputs;\n }\n /* istanbul ignore else */\n\n\n if (keys.indexOf(e.keyCode) !== -1) {\n e.preventDefault();\n }\n });\n\n this.element = null;\n this.lockToScrollPos = [0, 0];\n this.options = {\n disableWheel: true,\n disableScroll: true,\n disableKeys: true,\n keyboardKeys: [32, 33, 34, 35, 36, 37, 38, 39, 40],\n authorizedInInputs: [32, 37, 38, 39, 40] // space: 32, page up: 33, page down: 34, end: 35, home: 36\n // left: 37, up: 38, right: 39, down: 40\n\n };\n /* istanbul ignore else */\n\n if (canUseDOM) {\n require('scrollingelement');\n\n this.element = document.scrollingElement;\n }\n }\n /**\n * Disable Page Scroll\n * @external Node\n *\n * @param {HTMLElement} [element] - DOM Element, usually document.body\n * @param {object} [options] - Change the initial options\n */\n\n\n _createClass(DisableScroll, [{\n key: \"on\",\n value: function on(element, options) {\n if (!canUseDOM) return;\n this.element = element || this.element;\n this.options = _objectSpread({}, this.options, {}, options);\n var _this$options = this.options,\n disableKeys = _this$options.disableKeys,\n disableScroll = _this$options.disableScroll,\n disableWheel = _this$options.disableWheel;\n /* istanbul ignore else */\n\n if (disableWheel) {\n document.addEventListener('wheel', this.handleWheel, {\n passive: false\n });\n document.addEventListener('touchmove', this.handleWheel, {\n passive: false\n });\n }\n /* istanbul ignore else */\n\n\n if (disableScroll) {\n this.lockToScrollPos = [this.element.scrollLeft || this.element.scrollX, this.element.scrollTop || this.element.scrollY];\n document.addEventListener('scroll', this.handleScroll, {\n passive: false\n });\n }\n /* istanbul ignore else */\n\n\n if (disableKeys) {\n document.addEventListener('keydown', this.handleKeydown, {\n passive: false\n });\n }\n }\n /**\n * Re-enable page scrolls\n */\n\n }, {\n key: \"off\",\n value: function off() {\n if (!canUseDOM) return;\n document.removeEventListener('wheel', this.handleWheel, {\n passive: false\n });\n document.removeEventListener('touchmove', this.handleWheel, {\n passive: false\n });\n document.removeEventListener('scroll', this.handleScroll, {\n passive: false\n });\n document.removeEventListener('keydown', this.handleKeydown, {\n passive: false\n });\n }\n }]);\n\n return DisableScroll;\n}();\n\nexport default new DisableScroll();","import { disableBodyScroll, enableBodyScroll, clearAllBodyScrollLocks } from 'body-scroll-lock';\nimport disableScroll from 'disable-scroll';\nimport CustomEvent from 'custom-event';\nimport { isMobile, getViewportHeight, isIEcheck, clickOutside } from '../../utils';\nimport './header-default.scss';\n\n/**\n * Sticky header\n */\nconst stickyHeader = () => {\n const header = document.querySelector('.header');\n\n if (!header) return;\n\n const scrollHandler = () => {\n const topPosition = header.getBoundingClientRect().top;\n\n if (topPosition < 0) {\n if (!header.classList.contains('sticky')) {\n header.classList.add('sticky');\n }\n } else if (header.classList.contains('sticky')) {\n header.classList.remove('sticky');\n }\n };\n\n scrollHandler();\n window.addEventListener('scroll', scrollHandler);\n};\n\n/**\n * Toggle Navigation\n */\n\nfunction ToggleNav() {\n const header = document.querySelector('.header');\n const button = header.querySelector('.header__nav-toggle');\n const nav = header.querySelector('.header__nav');\n const navScrollSpace = header.querySelector('.header__nav-inner');\n\n if (!header || !button || !nav) return;\n\n this.state = {\n isOpen: false,\n };\n this.sel = nav;\n const showEvent = new CustomEvent('show');\n\n const setNavScrollSpaceHeight = () => {\n nav.style.height = `${getViewportHeight() - header.offsetHeight}px`;\n };\n\n this.show = () => {\n if (this.state.isOpen) return;\n\n this.state.isOpen = true;\n\n disableBodyScroll(navScrollSpace);\n\n header.classList.add('nav-is-open');\n setNavScrollSpaceHeight();\n\n window.addEventListener('resize', setNavScrollSpaceHeight);\n\n this.sel.dispatchEvent(showEvent);\n };\n\n this.hide = () => {\n if (!this.state.isOpen) return;\n\n this.state.isOpen = false;\n\n enableBodyScroll(navScrollSpace);\n clearAllBodyScrollLocks();\n\n header.classList.remove('nav-is-open');\n nav.style.height = '';\n\n window.removeEventListener('resize', setNavScrollSpaceHeight);\n };\n\n button.addEventListener(\n 'click',\n () => {\n if (this.state.isOpen) {\n this.hide();\n } else {\n this.show();\n }\n },\n false,\n );\n\n window.addEventListener('orientationchange', this.hide);\n}\n\n/**\n * Toggle SubNavigation\n */\n\nfunction ToggleSubNav() {\n const header = document.querySelector('.header');\n const navScrollSpace = header.querySelector('.header__nav-inner');\n const navItems = header.querySelectorAll('.header__nav-item');\n const subnavMenuItem = header.querySelector('.header__nav-item--subnav');\n const navSimpleItems = Array.prototype.slice\n .call(navItems)\n .filter(item => item !== subnavMenuItem);\n const subnavButton = subnavMenuItem.querySelector('.header__nav-link');\n const subnavBody = subnavMenuItem.querySelector('.header__subnav');\n const subnavScrollSpace = subnavBody.querySelector('.subnav__inner');\n\n if (!subnavMenuItem || !subnavButton || !subnavBody) return;\n\n this.state = {\n isOpen: false,\n scrollEventsPrevented: false,\n };\n\n this.show = () => {\n if (this.state.isOpen) return;\n\n this.state.isOpen = true;\n\n subnavMenuItem.classList.add('is-open');\n\n if (!isMobile()) {\n if (!isIEcheck()) {\n disableScroll.on();\n }\n\n this.scrollEventsPrevented = true;\n clickOutside(subnavBody, this.hide);\n } else {\n disableBodyScroll(subnavScrollSpace);\n navScrollSpace.style.overflow = 'hidden';\n\n const subnavHeight = Math.floor(\n getViewportHeight() - subnavScrollSpace.getBoundingClientRect().top,\n );\n\n subnavBody.style.height = `${subnavHeight}px`;\n }\n\n navSimpleItems.forEach(item => {\n item.classList.add('header__nav-item--hidden');\n });\n };\n\n this.hide = () => {\n if (!this.state.isOpen) return;\n\n this.state.isOpen = false;\n\n enableBodyScroll(subnavScrollSpace);\n\n navSimpleItems.forEach(item => {\n item.classList.remove('header__nav-item--hidden');\n });\n subnavMenuItem.classList.remove('is-open');\n\n if (this.scrollEventsPrevented) {\n disableScroll.off();\n }\n\n navScrollSpace.style.overflow = '';\n subnavBody.style.height = '';\n };\n\n subnavButton.addEventListener(\n 'click',\n e => {\n e.stopPropagation();\n if (this.state.isOpen) {\n this.hide();\n } else {\n this.show();\n }\n },\n false,\n );\n\n window.addEventListener('orientationchange', this.hide);\n\n document.onkeydown = e => {\n let isEscape = false;\n if ('key' in e) {\n isEscape = e.key === 'Escape' || e.key === 'Esc';\n } else {\n isEscape = e.keyCode === 27;\n }\n if (isEscape) {\n this.hide();\n }\n };\n}\n\nwindow.addEventListener('DOMContentLoaded', () => {\n const toggleNav = new ToggleNav();\n const toggleSubNav = new ToggleSubNav();\n stickyHeader();\n\n toggleNav.sel.addEventListener('show', () => {\n toggleSubNav.hide();\n });\n});\n","import './style.scss';\n\n/**\n *\n * @param insertTo - selector\n * @param position - center or top\n */\nconst addLoader = (insertTo, position = 'center') => {\n if (insertTo && typeof insertTo === 'string') {\n const el = document.querySelector(`${insertTo}`);\n\n el.innerHTML += `\n
\n
\n
\n
\n
\n
\n `;\n }\n};\n\nexport default addLoader;\n","export function getAttr(el, attr) {\n return el.getAttribute(attr);\n}","/* eslint-disable no-new */\nimport SmoothScroll from 'smooth-scroll';\n\nwindow.addEventListener('DOMContentLoaded', () => {\n new SmoothScroll('a[href*=\"#\"]', {\n header: '.header__inner',\n offset: 50,\n });\n});\n","export function isNodeList(el) {\n // Only NodeList has the \"item()\" function\n return typeof el.item !== \"undefined\"; \n}","const config = {\n type: 'html',\n moreEl: '[data-testimonials-load-more-button]',\n containerEl: '[data-testimonials-container]',\n params: {\n siteId: 113,\n limit: 6,\n },\n template: i => `
\n
\n
Order #${i.customerId}
\n
\"${i.body}\"
\n
Customer ID ${i.customerId}
\n
said about ${i.orderTopic}
\n
\n
`,\n loader: true,\n callbackData: () => {\n const loader = document.querySelector('[data-testimonials-container] [data-loader]');\n\n if (loader) {\n loader.remove();\n }\n },\n};\n\nexport default config;\n","import { observeElement, getWidget } from '@uvocore-front/utils';\nimport { tns } from 'tiny-slider/src/tiny-slider';\nimport 'tiny-slider/src/tiny-slider.scss';\nimport Loader from '../UI/loader';\nimport './styles.scss';\nimport config from './config';\n\nconst TestimonialsInit = () => {\n const testimonials = document.querySelector('[data-testimonials]');\n const sliderContainer = testimonials.querySelector('[data-testimonials-container]');\n const slidesCount = testimonials.getAttribute('data-slides-count')\n ? testimonials.getAttribute('data-slides-count')\n : 2;\n const nextButton = testimonials.querySelector('.testimonials__btn-next');\n\n const initSlider = () => {\n if (sliderContainer) {\n const slider = tns({\n container: sliderContainer,\n items: slidesCount,\n loop: false,\n nav: false,\n controls: false,\n autoWidth: true,\n mouseDrag: true,\n useLocalStorage: false,\n responsive: {\n 1024: {\n autoWidth: true,\n edgePadding: 2,\n },\n },\n onInit: () => {\n if (!nextButton) return;\n\n nextButton.classList.add('testimonials__btn-next--visible');\n nextButton.addEventListener('click', () => {\n const state = slider.getInfo();\n\n if (state.displayIndex + 1 >= state.slideCount) {\n slider.goTo('first');\n } else {\n slider.goTo('next');\n }\n });\n },\n });\n\n window.addEventListener('resize', () => {\n slider.rebuild();\n });\n }\n };\n\n observeElement({\n element: '[data-testimonials]',\n marginValue: 300,\n callback: () => {\n if (!sliderContainer.children.length) {\n getWidget({\n widgetLink: '/assets/js/testimonialsWidget.min.js',\n customLoader: Loader,\n insertLoaderTo: '[data-testimonials-container]',\n fn: () => {\n window.tmWidget({ ...config, callbackLoaded: initSlider });\n },\n });\n } else {\n initSlider();\n }\n },\n });\n};\n\n// if (document.querySelector('[data-testimonials]')) {\n// TestimonialsInit();\n// }\n\nexport default TestimonialsInit;\n","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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*!\n * Splide.js\n * Version : 4.1.4\n * License : MIT\n * Copyright: 2022 Naotoshi Fujita\n */\nvar MEDIA_PREFERS_REDUCED_MOTION = \"(prefers-reduced-motion: reduce)\";\nvar CREATED = 1;\nvar MOUNTED = 2;\nvar IDLE = 3;\nvar MOVING = 4;\nvar SCROLLING = 5;\nvar DRAGGING = 6;\nvar DESTROYED = 7;\nvar STATES = {\n CREATED: CREATED,\n MOUNTED: MOUNTED,\n IDLE: IDLE,\n MOVING: MOVING,\n SCROLLING: SCROLLING,\n DRAGGING: DRAGGING,\n DESTROYED: DESTROYED\n};\n\nfunction empty(array) {\n array.length = 0;\n}\n\nfunction slice(arrayLike, start, end) {\n return Array.prototype.slice.call(arrayLike, start, end);\n}\n\nfunction apply(func) {\n return func.bind.apply(func, [null].concat(slice(arguments, 1)));\n}\n\nvar nextTick = setTimeout;\n\nvar noop = function noop() {};\n\nfunction raf(func) {\n return requestAnimationFrame(func);\n}\n\nfunction typeOf(type, subject) {\n return typeof subject === type;\n}\n\nfunction isObject(subject) {\n return !isNull(subject) && typeOf(\"object\", subject);\n}\n\nvar isArray = Array.isArray;\nvar isFunction = apply(typeOf, \"function\");\nvar isString = apply(typeOf, \"string\");\nvar isUndefined = apply(typeOf, \"undefined\");\n\nfunction isNull(subject) {\n return subject === null;\n}\n\nfunction isHTMLElement(subject) {\n try {\n return subject instanceof (subject.ownerDocument.defaultView || window).HTMLElement;\n } catch (e) {\n return false;\n }\n}\n\nfunction toArray(value) {\n return isArray(value) ? value : [value];\n}\n\nfunction forEach(values, iteratee) {\n toArray(values).forEach(iteratee);\n}\n\nfunction includes(array, value) {\n return array.indexOf(value) > -1;\n}\n\nfunction push(array, items) {\n array.push.apply(array, toArray(items));\n return array;\n}\n\nfunction toggleClass(elm, classes, add) {\n if (elm) {\n forEach(classes, function (name) {\n if (name) {\n elm.classList[add ? \"add\" : \"remove\"](name);\n }\n });\n }\n}\n\nfunction addClass(elm, classes) {\n toggleClass(elm, isString(classes) ? classes.split(\" \") : classes, true);\n}\n\nfunction append(parent, children) {\n forEach(children, parent.appendChild.bind(parent));\n}\n\nfunction before(nodes, ref) {\n forEach(nodes, function (node) {\n var parent = (ref || node).parentNode;\n\n if (parent) {\n parent.insertBefore(node, ref);\n }\n });\n}\n\nfunction matches(elm, selector) {\n return isHTMLElement(elm) && (elm[\"msMatchesSelector\"] || elm.matches).call(elm, selector);\n}\n\nfunction children(parent, selector) {\n var children2 = parent ? slice(parent.children) : [];\n return selector ? children2.filter(function (child) {\n return matches(child, selector);\n }) : children2;\n}\n\nfunction child(parent, selector) {\n return selector ? children(parent, selector)[0] : parent.firstElementChild;\n}\n\nvar ownKeys = Object.keys;\n\nfunction forOwn(object, iteratee, right) {\n if (object) {\n (right ? ownKeys(object).reverse() : ownKeys(object)).forEach(function (key) {\n key !== \"__proto__\" && iteratee(object[key], key);\n });\n }\n\n return object;\n}\n\nfunction assign(object) {\n slice(arguments, 1).forEach(function (source) {\n forOwn(source, function (value, key) {\n object[key] = source[key];\n });\n });\n return object;\n}\n\nfunction merge(object) {\n slice(arguments, 1).forEach(function (source) {\n forOwn(source, function (value, key) {\n if (isArray(value)) {\n object[key] = value.slice();\n } else if (isObject(value)) {\n object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value);\n } else {\n object[key] = value;\n }\n });\n });\n return object;\n}\n\nfunction omit(object, keys) {\n forEach(keys || ownKeys(object), function (key) {\n delete object[key];\n });\n}\n\nfunction removeAttribute(elms, attrs) {\n forEach(elms, function (elm) {\n forEach(attrs, function (attr) {\n elm && elm.removeAttribute(attr);\n });\n });\n}\n\nfunction setAttribute(elms, attrs, value) {\n if (isObject(attrs)) {\n forOwn(attrs, function (value2, name) {\n setAttribute(elms, name, value2);\n });\n } else {\n forEach(elms, function (elm) {\n isNull(value) || value === \"\" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value));\n });\n }\n}\n\nfunction create(tag, attrs, parent) {\n var elm = document.createElement(tag);\n\n if (attrs) {\n isString(attrs) ? addClass(elm, attrs) : setAttribute(elm, attrs);\n }\n\n parent && append(parent, elm);\n return elm;\n}\n\nfunction style(elm, prop, value) {\n if (isUndefined(value)) {\n return getComputedStyle(elm)[prop];\n }\n\n if (!isNull(value)) {\n elm.style[prop] = \"\" + value;\n }\n}\n\nfunction display(elm, display2) {\n style(elm, \"display\", display2);\n}\n\nfunction focus(elm) {\n elm[\"setActive\"] && elm[\"setActive\"]() || elm.focus({\n preventScroll: true\n });\n}\n\nfunction getAttribute(elm, attr) {\n return elm.getAttribute(attr);\n}\n\nfunction hasClass(elm, className) {\n return elm && elm.classList.contains(className);\n}\n\nfunction rect(target) {\n return target.getBoundingClientRect();\n}\n\nfunction remove(nodes) {\n forEach(nodes, function (node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n });\n}\n\nfunction parseHtml(html) {\n return child(new DOMParser().parseFromString(html, \"text/html\").body);\n}\n\nfunction prevent(e, stopPropagation) {\n e.preventDefault();\n\n if (stopPropagation) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n}\n\nfunction query(parent, selector) {\n return parent && parent.querySelector(selector);\n}\n\nfunction queryAll(parent, selector) {\n return selector ? slice(parent.querySelectorAll(selector)) : [];\n}\n\nfunction removeClass(elm, classes) {\n toggleClass(elm, classes, false);\n}\n\nfunction timeOf(e) {\n return e.timeStamp;\n}\n\nfunction unit(value) {\n return isString(value) ? value : value ? value + \"px\" : \"\";\n}\n\nvar PROJECT_CODE = \"splide\";\nvar DATA_ATTRIBUTE = \"data-\" + PROJECT_CODE;\n\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(\"[\" + PROJECT_CODE + \"] \" + (message || \"\"));\n }\n}\n\nvar min = Math.min,\n max = Math.max,\n floor = Math.floor,\n ceil = Math.ceil,\n abs = Math.abs;\n\nfunction approximatelyEqual(x, y, epsilon) {\n return abs(x - y) < epsilon;\n}\n\nfunction between(number, x, y, exclusive) {\n var minimum = min(x, y);\n var maximum = max(x, y);\n return exclusive ? minimum < number && number < maximum : minimum <= number && number <= maximum;\n}\n\nfunction clamp(number, x, y) {\n var minimum = min(x, y);\n var maximum = max(x, y);\n return min(max(minimum, number), maximum);\n}\n\nfunction sign(x) {\n return +(x > 0) - +(x < 0);\n}\n\nfunction camelToKebab(string) {\n return string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\n\nfunction format(string, replacements) {\n forEach(replacements, function (replacement) {\n string = string.replace(\"%s\", \"\" + replacement);\n });\n return string;\n}\n\nfunction pad(number) {\n return number < 10 ? \"0\" + number : \"\" + number;\n}\n\nvar ids = {};\n\nfunction uniqueId(prefix) {\n return \"\" + prefix + pad(ids[prefix] = (ids[prefix] || 0) + 1);\n}\n\nfunction EventBinder() {\n var listeners = [];\n\n function bind(targets, events, callback, options) {\n forEachEvent(targets, events, function (target, event, namespace) {\n var isEventTarget = (\"addEventListener\" in target);\n var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target[\"removeListener\"].bind(target, callback);\n isEventTarget ? target.addEventListener(event, callback, options) : target[\"addListener\"](callback);\n listeners.push([target, event, namespace, callback, remover]);\n });\n }\n\n function unbind(targets, events, callback) {\n forEachEvent(targets, events, function (target, event, namespace) {\n listeners = listeners.filter(function (listener) {\n if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) {\n listener[4]();\n return false;\n }\n\n return true;\n });\n });\n }\n\n function dispatch(target, type, detail) {\n var e;\n var bubbles = true;\n\n if (typeof CustomEvent === \"function\") {\n e = new CustomEvent(type, {\n bubbles: bubbles,\n detail: detail\n });\n } else {\n e = document.createEvent(\"CustomEvent\");\n e.initCustomEvent(type, bubbles, false, detail);\n }\n\n target.dispatchEvent(e);\n return e;\n }\n\n function forEachEvent(targets, events, iteratee) {\n forEach(targets, function (target) {\n target && forEach(events, function (events2) {\n events2.split(\" \").forEach(function (eventNS) {\n var fragment = eventNS.split(\".\");\n iteratee(target, fragment[0], fragment[1]);\n });\n });\n });\n }\n\n function destroy() {\n listeners.forEach(function (data) {\n data[4]();\n });\n empty(listeners);\n }\n\n return {\n bind: bind,\n unbind: unbind,\n dispatch: dispatch,\n destroy: destroy\n };\n}\n\nvar EVENT_MOUNTED = \"mounted\";\nvar EVENT_READY = \"ready\";\nvar EVENT_MOVE = \"move\";\nvar EVENT_MOVED = \"moved\";\nvar EVENT_CLICK = \"click\";\nvar EVENT_ACTIVE = \"active\";\nvar EVENT_INACTIVE = \"inactive\";\nvar EVENT_VISIBLE = \"visible\";\nvar EVENT_HIDDEN = \"hidden\";\nvar EVENT_REFRESH = \"refresh\";\nvar EVENT_UPDATED = \"updated\";\nvar EVENT_RESIZE = \"resize\";\nvar EVENT_RESIZED = \"resized\";\nvar EVENT_DRAG = \"drag\";\nvar EVENT_DRAGGING = \"dragging\";\nvar EVENT_DRAGGED = \"dragged\";\nvar EVENT_SCROLL = \"scroll\";\nvar EVENT_SCROLLED = \"scrolled\";\nvar EVENT_OVERFLOW = \"overflow\";\nvar EVENT_DESTROY = \"destroy\";\nvar EVENT_ARROWS_MOUNTED = \"arrows:mounted\";\nvar EVENT_ARROWS_UPDATED = \"arrows:updated\";\nvar EVENT_PAGINATION_MOUNTED = \"pagination:mounted\";\nvar EVENT_PAGINATION_UPDATED = \"pagination:updated\";\nvar EVENT_NAVIGATION_MOUNTED = \"navigation:mounted\";\nvar EVENT_AUTOPLAY_PLAY = \"autoplay:play\";\nvar EVENT_AUTOPLAY_PLAYING = \"autoplay:playing\";\nvar EVENT_AUTOPLAY_PAUSE = \"autoplay:pause\";\nvar EVENT_LAZYLOAD_LOADED = \"lazyload:loaded\";\nvar EVENT_SLIDE_KEYDOWN = \"sk\";\nvar EVENT_SHIFTED = \"sh\";\nvar EVENT_END_INDEX_CHANGED = \"ei\";\n\nfunction EventInterface(Splide2) {\n var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment();\n var binder = EventBinder();\n\n function on(events, callback) {\n binder.bind(bus, toArray(events).join(\" \"), function (e) {\n callback.apply(callback, isArray(e.detail) ? e.detail : []);\n });\n }\n\n function emit(event) {\n binder.dispatch(bus, event, slice(arguments, 1));\n }\n\n if (Splide2) {\n Splide2.event.on(EVENT_DESTROY, binder.destroy);\n }\n\n return assign(binder, {\n bus: bus,\n on: on,\n off: apply(binder.unbind, bus),\n emit: emit\n });\n}\n\nfunction RequestInterval(interval, onInterval, onUpdate, limit) {\n var now = Date.now;\n var startTime;\n var rate = 0;\n var id;\n var paused = true;\n var count = 0;\n\n function update() {\n if (!paused) {\n rate = interval ? min((now() - startTime) / interval, 1) : 1;\n onUpdate && onUpdate(rate);\n\n if (rate >= 1) {\n onInterval();\n startTime = now();\n\n if (limit && ++count >= limit) {\n return pause();\n }\n }\n\n id = raf(update);\n }\n }\n\n function start(resume) {\n resume || cancel();\n startTime = now() - (resume ? rate * interval : 0);\n paused = false;\n id = raf(update);\n }\n\n function pause() {\n paused = true;\n }\n\n function rewind() {\n startTime = now();\n rate = 0;\n\n if (onUpdate) {\n onUpdate(rate);\n }\n }\n\n function cancel() {\n id && cancelAnimationFrame(id);\n rate = 0;\n id = 0;\n paused = true;\n }\n\n function set(time) {\n interval = time;\n }\n\n function isPaused() {\n return paused;\n }\n\n return {\n start: start,\n rewind: rewind,\n pause: pause,\n cancel: cancel,\n set: set,\n isPaused: isPaused\n };\n}\n\nfunction State(initialState) {\n var state = initialState;\n\n function set(value) {\n state = value;\n }\n\n function is(states) {\n return includes(toArray(states), state);\n }\n\n return {\n set: set,\n is: is\n };\n}\n\nfunction Throttle(func, duration) {\n var interval = RequestInterval(duration || 0, func, null, 1);\n return function () {\n interval.isPaused() && interval.start();\n };\n}\n\nfunction Media(Splide2, Components2, options) {\n var state = Splide2.state;\n var breakpoints = options.breakpoints || {};\n var reducedMotion = options.reducedMotion || {};\n var binder = EventBinder();\n var queries = [];\n\n function setup() {\n var isMin = options.mediaQuery === \"min\";\n ownKeys(breakpoints).sort(function (n, m) {\n return isMin ? +n - +m : +m - +n;\n }).forEach(function (key) {\n register(breakpoints[key], \"(\" + (isMin ? \"min\" : \"max\") + \"-width:\" + key + \"px)\");\n });\n register(reducedMotion, MEDIA_PREFERS_REDUCED_MOTION);\n update();\n }\n\n function destroy(completely) {\n if (completely) {\n binder.destroy();\n }\n }\n\n function register(options2, query) {\n var queryList = matchMedia(query);\n binder.bind(queryList, \"change\", update);\n queries.push([options2, queryList]);\n }\n\n function update() {\n var destroyed = state.is(DESTROYED);\n var direction = options.direction;\n var merged = queries.reduce(function (merged2, entry) {\n return merge(merged2, entry[1].matches ? entry[0] : {});\n }, {});\n omit(options);\n set(merged);\n\n if (options.destroy) {\n Splide2.destroy(options.destroy === \"completely\");\n } else if (destroyed) {\n destroy(true);\n Splide2.mount();\n } else {\n direction !== options.direction && Splide2.refresh();\n }\n }\n\n function reduce(enable) {\n if (matchMedia(MEDIA_PREFERS_REDUCED_MOTION).matches) {\n enable ? merge(options, reducedMotion) : omit(options, ownKeys(reducedMotion));\n }\n }\n\n function set(opts, base, notify) {\n merge(options, opts);\n base && merge(Object.getPrototypeOf(options), opts);\n\n if (notify || !state.is(CREATED)) {\n Splide2.emit(EVENT_UPDATED, options);\n }\n }\n\n return {\n setup: setup,\n destroy: destroy,\n reduce: reduce,\n set: set\n };\n}\n\nvar ARROW = \"Arrow\";\nvar ARROW_LEFT = ARROW + \"Left\";\nvar ARROW_RIGHT = ARROW + \"Right\";\nvar ARROW_UP = ARROW + \"Up\";\nvar ARROW_DOWN = ARROW + \"Down\";\nvar LTR = \"ltr\";\nvar RTL = \"rtl\";\nvar TTB = \"ttb\";\nvar ORIENTATION_MAP = {\n width: [\"height\"],\n left: [\"top\", \"right\"],\n right: [\"bottom\", \"left\"],\n x: [\"y\"],\n X: [\"Y\"],\n Y: [\"X\"],\n ArrowLeft: [ARROW_UP, ARROW_RIGHT],\n ArrowRight: [ARROW_DOWN, ARROW_LEFT]\n};\n\nfunction Direction(Splide2, Components2, options) {\n function resolve(prop, axisOnly, direction) {\n direction = direction || options.direction;\n var index = direction === RTL && !axisOnly ? 1 : direction === TTB ? 0 : -1;\n return ORIENTATION_MAP[prop] && ORIENTATION_MAP[prop][index] || prop.replace(/width|left|right/i, function (match, offset) {\n var replacement = ORIENTATION_MAP[match.toLowerCase()][index] || match;\n return offset > 0 ? replacement.charAt(0).toUpperCase() + replacement.slice(1) : replacement;\n });\n }\n\n function orient(value) {\n return value * (options.direction === RTL ? 1 : -1);\n }\n\n return {\n resolve: resolve,\n orient: orient\n };\n}\n\nvar ROLE = \"role\";\nvar TAB_INDEX = \"tabindex\";\nvar DISABLED = \"disabled\";\nvar ARIA_PREFIX = \"aria-\";\nvar ARIA_CONTROLS = ARIA_PREFIX + \"controls\";\nvar ARIA_CURRENT = ARIA_PREFIX + \"current\";\nvar ARIA_SELECTED = ARIA_PREFIX + \"selected\";\nvar ARIA_LABEL = ARIA_PREFIX + \"label\";\nvar ARIA_LABELLEDBY = ARIA_PREFIX + \"labelledby\";\nvar ARIA_HIDDEN = ARIA_PREFIX + \"hidden\";\nvar ARIA_ORIENTATION = ARIA_PREFIX + \"orientation\";\nvar ARIA_ROLEDESCRIPTION = ARIA_PREFIX + \"roledescription\";\nvar ARIA_LIVE = ARIA_PREFIX + \"live\";\nvar ARIA_BUSY = ARIA_PREFIX + \"busy\";\nvar ARIA_ATOMIC = ARIA_PREFIX + \"atomic\";\nvar ALL_ATTRIBUTES = [ROLE, TAB_INDEX, DISABLED, ARIA_CONTROLS, ARIA_CURRENT, ARIA_LABEL, ARIA_LABELLEDBY, ARIA_HIDDEN, ARIA_ORIENTATION, ARIA_ROLEDESCRIPTION];\nvar CLASS_PREFIX = PROJECT_CODE + \"__\";\nvar STATUS_CLASS_PREFIX = \"is-\";\nvar CLASS_ROOT = PROJECT_CODE;\nvar CLASS_TRACK = CLASS_PREFIX + \"track\";\nvar CLASS_LIST = CLASS_PREFIX + \"list\";\nvar CLASS_SLIDE = CLASS_PREFIX + \"slide\";\nvar CLASS_CLONE = CLASS_SLIDE + \"--clone\";\nvar CLASS_CONTAINER = CLASS_SLIDE + \"__container\";\nvar CLASS_ARROWS = CLASS_PREFIX + \"arrows\";\nvar CLASS_ARROW = CLASS_PREFIX + \"arrow\";\nvar CLASS_ARROW_PREV = CLASS_ARROW + \"--prev\";\nvar CLASS_ARROW_NEXT = CLASS_ARROW + \"--next\";\nvar CLASS_PAGINATION = CLASS_PREFIX + \"pagination\";\nvar CLASS_PAGINATION_PAGE = CLASS_PAGINATION + \"__page\";\nvar CLASS_PROGRESS = CLASS_PREFIX + \"progress\";\nvar CLASS_PROGRESS_BAR = CLASS_PROGRESS + \"__bar\";\nvar CLASS_TOGGLE = CLASS_PREFIX + \"toggle\";\nvar CLASS_TOGGLE_PLAY = CLASS_TOGGLE + \"__play\";\nvar CLASS_TOGGLE_PAUSE = CLASS_TOGGLE + \"__pause\";\nvar CLASS_SPINNER = CLASS_PREFIX + \"spinner\";\nvar CLASS_SR = CLASS_PREFIX + \"sr\";\nvar CLASS_INITIALIZED = STATUS_CLASS_PREFIX + \"initialized\";\nvar CLASS_ACTIVE = STATUS_CLASS_PREFIX + \"active\";\nvar CLASS_PREV = STATUS_CLASS_PREFIX + \"prev\";\nvar CLASS_NEXT = STATUS_CLASS_PREFIX + \"next\";\nvar CLASS_VISIBLE = STATUS_CLASS_PREFIX + \"visible\";\nvar CLASS_LOADING = STATUS_CLASS_PREFIX + \"loading\";\nvar CLASS_FOCUS_IN = STATUS_CLASS_PREFIX + \"focus-in\";\nvar CLASS_OVERFLOW = STATUS_CLASS_PREFIX + \"overflow\";\nvar STATUS_CLASSES = [CLASS_ACTIVE, CLASS_VISIBLE, CLASS_PREV, CLASS_NEXT, CLASS_LOADING, CLASS_FOCUS_IN, CLASS_OVERFLOW];\nvar CLASSES = {\n slide: CLASS_SLIDE,\n clone: CLASS_CLONE,\n arrows: CLASS_ARROWS,\n arrow: CLASS_ARROW,\n prev: CLASS_ARROW_PREV,\n next: CLASS_ARROW_NEXT,\n pagination: CLASS_PAGINATION,\n page: CLASS_PAGINATION_PAGE,\n spinner: CLASS_SPINNER\n};\n\nfunction closest(from, selector) {\n if (isFunction(from.closest)) {\n return from.closest(selector);\n }\n\n var elm = from;\n\n while (elm && elm.nodeType === 1) {\n if (matches(elm, selector)) {\n break;\n }\n\n elm = elm.parentElement;\n }\n\n return elm;\n}\n\nvar FRICTION = 5;\nvar LOG_INTERVAL = 200;\nvar POINTER_DOWN_EVENTS = \"touchstart mousedown\";\nvar POINTER_MOVE_EVENTS = \"touchmove mousemove\";\nvar POINTER_UP_EVENTS = \"touchend touchcancel mouseup click\";\n\nfunction Elements(Splide2, Components2, options) {\n var _EventInterface = EventInterface(Splide2),\n on = _EventInterface.on,\n bind = _EventInterface.bind;\n\n var root = Splide2.root;\n var i18n = options.i18n;\n var elements = {};\n var slides = [];\n var rootClasses = [];\n var trackClasses = [];\n var track;\n var list;\n var isUsingKey;\n\n function setup() {\n collect();\n init();\n update();\n }\n\n function mount() {\n on(EVENT_REFRESH, destroy);\n on(EVENT_REFRESH, setup);\n on(EVENT_UPDATED, update);\n bind(document, POINTER_DOWN_EVENTS + \" keydown\", function (e) {\n isUsingKey = e.type === \"keydown\";\n }, {\n capture: true\n });\n bind(root, \"focusin\", function () {\n toggleClass(root, CLASS_FOCUS_IN, !!isUsingKey);\n });\n }\n\n function destroy(completely) {\n var attrs = ALL_ATTRIBUTES.concat(\"style\");\n empty(slides);\n removeClass(root, rootClasses);\n removeClass(track, trackClasses);\n removeAttribute([track, list], attrs);\n removeAttribute(root, completely ? attrs : [\"style\", ARIA_ROLEDESCRIPTION]);\n }\n\n function update() {\n removeClass(root, rootClasses);\n removeClass(track, trackClasses);\n rootClasses = getClasses(CLASS_ROOT);\n trackClasses = getClasses(CLASS_TRACK);\n addClass(root, rootClasses);\n addClass(track, trackClasses);\n setAttribute(root, ARIA_LABEL, options.label);\n setAttribute(root, ARIA_LABELLEDBY, options.labelledby);\n }\n\n function collect() {\n track = find(\".\" + CLASS_TRACK);\n list = child(track, \".\" + CLASS_LIST);\n assert(track && list, \"A track/list element is missing.\");\n push(slides, children(list, \".\" + CLASS_SLIDE + \":not(.\" + CLASS_CLONE + \")\"));\n forOwn({\n arrows: CLASS_ARROWS,\n pagination: CLASS_PAGINATION,\n prev: CLASS_ARROW_PREV,\n next: CLASS_ARROW_NEXT,\n bar: CLASS_PROGRESS_BAR,\n toggle: CLASS_TOGGLE\n }, function (className, key) {\n elements[key] = find(\".\" + className);\n });\n assign(elements, {\n root: root,\n track: track,\n list: list,\n slides: slides\n });\n }\n\n function init() {\n var id = root.id || uniqueId(PROJECT_CODE);\n var role = options.role;\n root.id = id;\n track.id = track.id || id + \"-track\";\n list.id = list.id || id + \"-list\";\n\n if (!getAttribute(root, ROLE) && root.tagName !== \"SECTION\" && role) {\n setAttribute(root, ROLE, role);\n }\n\n setAttribute(root, ARIA_ROLEDESCRIPTION, i18n.carousel);\n setAttribute(list, ROLE, \"presentation\");\n }\n\n function find(selector) {\n var elm = query(root, selector);\n return elm && closest(elm, \".\" + CLASS_ROOT) === root ? elm : void 0;\n }\n\n function getClasses(base) {\n return [base + \"--\" + options.type, base + \"--\" + options.direction, options.drag && base + \"--draggable\", options.isNavigation && base + \"--nav\", base === CLASS_ROOT && CLASS_ACTIVE];\n }\n\n return assign(elements, {\n setup: setup,\n mount: mount,\n destroy: destroy\n });\n}\n\nvar SLIDE = \"slide\";\nvar LOOP = \"loop\";\nvar FADE = \"fade\";\n\nfunction Slide$1(Splide2, index, slideIndex, slide) {\n var event = EventInterface(Splide2);\n var on = event.on,\n emit = event.emit,\n bind = event.bind;\n var Components = Splide2.Components,\n root = Splide2.root,\n options = Splide2.options;\n var isNavigation = options.isNavigation,\n updateOnMove = options.updateOnMove,\n i18n = options.i18n,\n pagination = options.pagination,\n slideFocus = options.slideFocus;\n var resolve = Components.Direction.resolve;\n var styles = getAttribute(slide, \"style\");\n var label = getAttribute(slide, ARIA_LABEL);\n var isClone = slideIndex > -1;\n var container = child(slide, \".\" + CLASS_CONTAINER);\n var destroyed;\n\n function mount() {\n if (!isClone) {\n slide.id = root.id + \"-slide\" + pad(index + 1);\n setAttribute(slide, ROLE, pagination ? \"tabpanel\" : \"group\");\n setAttribute(slide, ARIA_ROLEDESCRIPTION, i18n.slide);\n setAttribute(slide, ARIA_LABEL, label || format(i18n.slideLabel, [index + 1, Splide2.length]));\n }\n\n listen();\n }\n\n function listen() {\n bind(slide, \"click\", apply(emit, EVENT_CLICK, self));\n bind(slide, \"keydown\", apply(emit, EVENT_SLIDE_KEYDOWN, self));\n on([EVENT_MOVED, EVENT_SHIFTED, EVENT_SCROLLED], update);\n on(EVENT_NAVIGATION_MOUNTED, initNavigation);\n\n if (updateOnMove) {\n on(EVENT_MOVE, onMove);\n }\n }\n\n function destroy() {\n destroyed = true;\n event.destroy();\n removeClass(slide, STATUS_CLASSES);\n removeAttribute(slide, ALL_ATTRIBUTES);\n setAttribute(slide, \"style\", styles);\n setAttribute(slide, ARIA_LABEL, label || \"\");\n }\n\n function initNavigation() {\n var controls = Splide2.splides.map(function (target) {\n var Slide2 = target.splide.Components.Slides.getAt(index);\n return Slide2 ? Slide2.slide.id : \"\";\n }).join(\" \");\n setAttribute(slide, ARIA_LABEL, format(i18n.slideX, (isClone ? slideIndex : index) + 1));\n setAttribute(slide, ARIA_CONTROLS, controls);\n setAttribute(slide, ROLE, slideFocus ? \"button\" : \"\");\n slideFocus && removeAttribute(slide, ARIA_ROLEDESCRIPTION);\n }\n\n function onMove() {\n if (!destroyed) {\n update();\n }\n }\n\n function update() {\n if (!destroyed) {\n var curr = Splide2.index;\n updateActivity();\n updateVisibility();\n toggleClass(slide, CLASS_PREV, index === curr - 1);\n toggleClass(slide, CLASS_NEXT, index === curr + 1);\n }\n }\n\n function updateActivity() {\n var active = isActive();\n\n if (active !== hasClass(slide, CLASS_ACTIVE)) {\n toggleClass(slide, CLASS_ACTIVE, active);\n setAttribute(slide, ARIA_CURRENT, isNavigation && active || \"\");\n emit(active ? EVENT_ACTIVE : EVENT_INACTIVE, self);\n }\n }\n\n function updateVisibility() {\n var visible = isVisible();\n var hidden = !visible && (!isActive() || isClone);\n\n if (!Splide2.state.is([MOVING, SCROLLING])) {\n setAttribute(slide, ARIA_HIDDEN, hidden || \"\");\n }\n\n setAttribute(queryAll(slide, options.focusableNodes || \"\"), TAB_INDEX, hidden ? -1 : \"\");\n\n if (slideFocus) {\n setAttribute(slide, TAB_INDEX, hidden ? -1 : 0);\n }\n\n if (visible !== hasClass(slide, CLASS_VISIBLE)) {\n toggleClass(slide, CLASS_VISIBLE, visible);\n emit(visible ? EVENT_VISIBLE : EVENT_HIDDEN, self);\n }\n\n if (!visible && document.activeElement === slide) {\n var Slide2 = Components.Slides.getAt(Splide2.index);\n Slide2 && focus(Slide2.slide);\n }\n }\n\n function style$1(prop, value, useContainer) {\n style(useContainer && container || slide, prop, value);\n }\n\n function isActive() {\n var curr = Splide2.index;\n return curr === index || options.cloneStatus && curr === slideIndex;\n }\n\n function isVisible() {\n if (Splide2.is(FADE)) {\n return isActive();\n }\n\n var trackRect = rect(Components.Elements.track);\n var slideRect = rect(slide);\n var left = resolve(\"left\", true);\n var right = resolve(\"right\", true);\n return floor(trackRect[left]) <= ceil(slideRect[left]) && floor(slideRect[right]) <= ceil(trackRect[right]);\n }\n\n function isWithin(from, distance) {\n var diff = abs(from - index);\n\n if (!isClone && (options.rewind || Splide2.is(LOOP))) {\n diff = min(diff, Splide2.length - diff);\n }\n\n return diff <= distance;\n }\n\n var self = {\n index: index,\n slideIndex: slideIndex,\n slide: slide,\n container: container,\n isClone: isClone,\n mount: mount,\n destroy: destroy,\n update: update,\n style: style$1,\n isWithin: isWithin\n };\n return self;\n}\n\nfunction Slides(Splide2, Components2, options) {\n var _EventInterface2 = EventInterface(Splide2),\n on = _EventInterface2.on,\n emit = _EventInterface2.emit,\n bind = _EventInterface2.bind;\n\n var _Components2$Elements = Components2.Elements,\n slides = _Components2$Elements.slides,\n list = _Components2$Elements.list;\n var Slides2 = [];\n\n function mount() {\n init();\n on(EVENT_REFRESH, destroy);\n on(EVENT_REFRESH, init);\n }\n\n function init() {\n slides.forEach(function (slide, index) {\n register(slide, index, -1);\n });\n }\n\n function destroy() {\n forEach$1(function (Slide2) {\n Slide2.destroy();\n });\n empty(Slides2);\n }\n\n function update() {\n forEach$1(function (Slide2) {\n Slide2.update();\n });\n }\n\n function register(slide, index, slideIndex) {\n var object = Slide$1(Splide2, index, slideIndex, slide);\n object.mount();\n Slides2.push(object);\n Slides2.sort(function (Slide1, Slide2) {\n return Slide1.index - Slide2.index;\n });\n }\n\n function get(excludeClones) {\n return excludeClones ? filter(function (Slide2) {\n return !Slide2.isClone;\n }) : Slides2;\n }\n\n function getIn(page) {\n var Controller = Components2.Controller;\n var index = Controller.toIndex(page);\n var max = Controller.hasFocus() ? 1 : options.perPage;\n return filter(function (Slide2) {\n return between(Slide2.index, index, index + max - 1);\n });\n }\n\n function getAt(index) {\n return filter(index)[0];\n }\n\n function add(items, index) {\n forEach(items, function (slide) {\n if (isString(slide)) {\n slide = parseHtml(slide);\n }\n\n if (isHTMLElement(slide)) {\n var ref = slides[index];\n ref ? before(slide, ref) : append(list, slide);\n addClass(slide, options.classes.slide);\n observeImages(slide, apply(emit, EVENT_RESIZE));\n }\n });\n emit(EVENT_REFRESH);\n }\n\n function remove$1(matcher) {\n remove(filter(matcher).map(function (Slide2) {\n return Slide2.slide;\n }));\n emit(EVENT_REFRESH);\n }\n\n function forEach$1(iteratee, excludeClones) {\n get(excludeClones).forEach(iteratee);\n }\n\n function filter(matcher) {\n return Slides2.filter(isFunction(matcher) ? matcher : function (Slide2) {\n return isString(matcher) ? matches(Slide2.slide, matcher) : includes(toArray(matcher), Slide2.index);\n });\n }\n\n function style(prop, value, useContainer) {\n forEach$1(function (Slide2) {\n Slide2.style(prop, value, useContainer);\n });\n }\n\n function observeImages(elm, callback) {\n var images = queryAll(elm, \"img\");\n var length = images.length;\n\n if (length) {\n images.forEach(function (img) {\n bind(img, \"load error\", function () {\n if (! --length) {\n callback();\n }\n });\n });\n } else {\n callback();\n }\n }\n\n function getLength(excludeClones) {\n return excludeClones ? slides.length : Slides2.length;\n }\n\n function isEnough() {\n return Slides2.length > options.perPage;\n }\n\n return {\n mount: mount,\n destroy: destroy,\n update: update,\n register: register,\n get: get,\n getIn: getIn,\n getAt: getAt,\n add: add,\n remove: remove$1,\n forEach: forEach$1,\n filter: filter,\n style: style,\n getLength: getLength,\n isEnough: isEnough\n };\n}\n\nfunction Layout(Splide2, Components2, options) {\n var _EventInterface3 = EventInterface(Splide2),\n on = _EventInterface3.on,\n bind = _EventInterface3.bind,\n emit = _EventInterface3.emit;\n\n var Slides = Components2.Slides;\n var resolve = Components2.Direction.resolve;\n var _Components2$Elements2 = Components2.Elements,\n root = _Components2$Elements2.root,\n track = _Components2$Elements2.track,\n list = _Components2$Elements2.list;\n var getAt = Slides.getAt,\n styleSlides = Slides.style;\n var vertical;\n var rootRect;\n var overflow;\n\n function mount() {\n init();\n bind(window, \"resize load\", Throttle(apply(emit, EVENT_RESIZE)));\n on([EVENT_UPDATED, EVENT_REFRESH], init);\n on(EVENT_RESIZE, resize);\n }\n\n function init() {\n vertical = options.direction === TTB;\n style(root, \"maxWidth\", unit(options.width));\n style(track, resolve(\"paddingLeft\"), cssPadding(false));\n style(track, resolve(\"paddingRight\"), cssPadding(true));\n resize(true);\n }\n\n function resize(force) {\n var newRect = rect(root);\n\n if (force || rootRect.width !== newRect.width || rootRect.height !== newRect.height) {\n style(track, \"height\", cssTrackHeight());\n styleSlides(resolve(\"marginRight\"), unit(options.gap));\n styleSlides(\"width\", cssSlideWidth());\n styleSlides(\"height\", cssSlideHeight(), true);\n rootRect = newRect;\n emit(EVENT_RESIZED);\n\n if (overflow !== (overflow = isOverflow())) {\n toggleClass(root, CLASS_OVERFLOW, overflow);\n emit(EVENT_OVERFLOW, overflow);\n }\n }\n }\n\n function cssPadding(right) {\n var padding = options.padding;\n var prop = resolve(right ? \"right\" : \"left\");\n return padding && unit(padding[prop] || (isObject(padding) ? 0 : padding)) || \"0px\";\n }\n\n function cssTrackHeight() {\n var height = \"\";\n\n if (vertical) {\n height = cssHeight();\n assert(height, \"height or heightRatio is missing.\");\n height = \"calc(\" + height + \" - \" + cssPadding(false) + \" - \" + cssPadding(true) + \")\";\n }\n\n return height;\n }\n\n function cssHeight() {\n return unit(options.height || rect(list).width * options.heightRatio);\n }\n\n function cssSlideWidth() {\n return options.autoWidth ? null : unit(options.fixedWidth) || (vertical ? \"\" : cssSlideSize());\n }\n\n function cssSlideHeight() {\n return unit(options.fixedHeight) || (vertical ? options.autoHeight ? null : cssSlideSize() : cssHeight());\n }\n\n function cssSlideSize() {\n var gap = unit(options.gap);\n return \"calc((100%\" + (gap && \" + \" + gap) + \")/\" + (options.perPage || 1) + (gap && \" - \" + gap) + \")\";\n }\n\n function listSize() {\n return rect(list)[resolve(\"width\")];\n }\n\n function slideSize(index, withoutGap) {\n var Slide = getAt(index || 0);\n return Slide ? rect(Slide.slide)[resolve(\"width\")] + (withoutGap ? 0 : getGap()) : 0;\n }\n\n function totalSize(index, withoutGap) {\n var Slide = getAt(index);\n\n if (Slide) {\n var right = rect(Slide.slide)[resolve(\"right\")];\n var left = rect(list)[resolve(\"left\")];\n return abs(right - left) + (withoutGap ? 0 : getGap());\n }\n\n return 0;\n }\n\n function sliderSize(withoutGap) {\n return totalSize(Splide2.length - 1) - totalSize(0) + slideSize(0, withoutGap);\n }\n\n function getGap() {\n var Slide = getAt(0);\n return Slide && parseFloat(style(Slide.slide, resolve(\"marginRight\"))) || 0;\n }\n\n function getPadding(right) {\n return parseFloat(style(track, resolve(\"padding\" + (right ? \"Right\" : \"Left\")))) || 0;\n }\n\n function isOverflow() {\n return Splide2.is(FADE) || sliderSize(true) > listSize();\n }\n\n return {\n mount: mount,\n resize: resize,\n listSize: listSize,\n slideSize: slideSize,\n sliderSize: sliderSize,\n totalSize: totalSize,\n getPadding: getPadding,\n isOverflow: isOverflow\n };\n}\n\nvar MULTIPLIER = 2;\n\nfunction Clones(Splide2, Components2, options) {\n var event = EventInterface(Splide2);\n var on = event.on;\n var Elements = Components2.Elements,\n Slides = Components2.Slides;\n var resolve = Components2.Direction.resolve;\n var clones = [];\n var cloneCount;\n\n function mount() {\n on(EVENT_REFRESH, remount);\n on([EVENT_UPDATED, EVENT_RESIZE], observe);\n\n if (cloneCount = computeCloneCount()) {\n generate(cloneCount);\n Components2.Layout.resize(true);\n }\n }\n\n function remount() {\n destroy();\n mount();\n }\n\n function destroy() {\n remove(clones);\n empty(clones);\n event.destroy();\n }\n\n function observe() {\n var count = computeCloneCount();\n\n if (cloneCount !== count) {\n if (cloneCount < count || !count) {\n event.emit(EVENT_REFRESH);\n }\n }\n }\n\n function generate(count) {\n var slides = Slides.get().slice();\n var length = slides.length;\n\n if (length) {\n while (slides.length < count) {\n push(slides, slides);\n }\n\n push(slides.slice(-count), slides.slice(0, count)).forEach(function (Slide, index) {\n var isHead = index < count;\n var clone = cloneDeep(Slide.slide, index);\n isHead ? before(clone, slides[0].slide) : append(Elements.list, clone);\n push(clones, clone);\n Slides.register(clone, index - count + (isHead ? 0 : length), Slide.index);\n });\n }\n }\n\n function cloneDeep(elm, index) {\n var clone = elm.cloneNode(true);\n addClass(clone, options.classes.clone);\n clone.id = Splide2.root.id + \"-clone\" + pad(index + 1);\n return clone;\n }\n\n function computeCloneCount() {\n var clones2 = options.clones;\n\n if (!Splide2.is(LOOP)) {\n clones2 = 0;\n } else if (isUndefined(clones2)) {\n var fixedSize = options[resolve(\"fixedWidth\")] && Components2.Layout.slideSize(0);\n var fixedCount = fixedSize && ceil(rect(Elements.track)[resolve(\"width\")] / fixedSize);\n clones2 = fixedCount || options[resolve(\"autoWidth\")] && Splide2.length || options.perPage * MULTIPLIER;\n }\n\n return clones2;\n }\n\n return {\n mount: mount,\n destroy: destroy\n };\n}\n\nfunction Move(Splide2, Components2, options) {\n var _EventInterface4 = EventInterface(Splide2),\n on = _EventInterface4.on,\n emit = _EventInterface4.emit;\n\n var set = Splide2.state.set;\n var _Components2$Layout = Components2.Layout,\n slideSize = _Components2$Layout.slideSize,\n getPadding = _Components2$Layout.getPadding,\n totalSize = _Components2$Layout.totalSize,\n listSize = _Components2$Layout.listSize,\n sliderSize = _Components2$Layout.sliderSize;\n var _Components2$Directio = Components2.Direction,\n resolve = _Components2$Directio.resolve,\n orient = _Components2$Directio.orient;\n var _Components2$Elements3 = Components2.Elements,\n list = _Components2$Elements3.list,\n track = _Components2$Elements3.track;\n var Transition;\n\n function mount() {\n Transition = Components2.Transition;\n on([EVENT_MOUNTED, EVENT_RESIZED, EVENT_UPDATED, EVENT_REFRESH], reposition);\n }\n\n function reposition() {\n if (!Components2.Controller.isBusy()) {\n Components2.Scroll.cancel();\n jump(Splide2.index);\n Components2.Slides.update();\n }\n }\n\n function move(dest, index, prev, callback) {\n if (dest !== index && canShift(dest > prev)) {\n cancel();\n translate(shift(getPosition(), dest > prev), true);\n }\n\n set(MOVING);\n emit(EVENT_MOVE, index, prev, dest);\n Transition.start(index, function () {\n set(IDLE);\n emit(EVENT_MOVED, index, prev, dest);\n callback && callback();\n });\n }\n\n function jump(index) {\n translate(toPosition(index, true));\n }\n\n function translate(position, preventLoop) {\n if (!Splide2.is(FADE)) {\n var destination = preventLoop ? position : loop(position);\n style(list, \"transform\", \"translate\" + resolve(\"X\") + \"(\" + destination + \"px)\");\n position !== destination && emit(EVENT_SHIFTED);\n }\n }\n\n function loop(position) {\n if (Splide2.is(LOOP)) {\n var index = toIndex(position);\n var exceededMax = index > Components2.Controller.getEnd();\n var exceededMin = index < 0;\n\n if (exceededMin || exceededMax) {\n position = shift(position, exceededMax);\n }\n }\n\n return position;\n }\n\n function shift(position, backwards) {\n var excess = position - getLimit(backwards);\n var size = sliderSize();\n position -= orient(size * (ceil(abs(excess) / size) || 1)) * (backwards ? 1 : -1);\n return position;\n }\n\n function cancel() {\n translate(getPosition(), true);\n Transition.cancel();\n }\n\n function toIndex(position) {\n var Slides = Components2.Slides.get();\n var index = 0;\n var minDistance = Infinity;\n\n for (var i = 0; i < Slides.length; i++) {\n var slideIndex = Slides[i].index;\n var distance = abs(toPosition(slideIndex, true) - position);\n\n if (distance <= minDistance) {\n minDistance = distance;\n index = slideIndex;\n } else {\n break;\n }\n }\n\n return index;\n }\n\n function toPosition(index, trimming) {\n var position = orient(totalSize(index - 1) - offset(index));\n return trimming ? trim(position) : position;\n }\n\n function getPosition() {\n var left = resolve(\"left\");\n return rect(list)[left] - rect(track)[left] + orient(getPadding(false));\n }\n\n function trim(position) {\n if (options.trimSpace && Splide2.is(SLIDE)) {\n position = clamp(position, 0, orient(sliderSize(true) - listSize()));\n }\n\n return position;\n }\n\n function offset(index) {\n var focus = options.focus;\n return focus === \"center\" ? (listSize() - slideSize(index, true)) / 2 : +focus * slideSize(index) || 0;\n }\n\n function getLimit(max) {\n return toPosition(max ? Components2.Controller.getEnd() : 0, !!options.trimSpace);\n }\n\n function canShift(backwards) {\n var shifted = orient(shift(getPosition(), backwards));\n return backwards ? shifted >= 0 : shifted <= list[resolve(\"scrollWidth\")] - rect(track)[resolve(\"width\")];\n }\n\n function exceededLimit(max, position) {\n position = isUndefined(position) ? getPosition() : position;\n var exceededMin = max !== true && orient(position) < orient(getLimit(false));\n var exceededMax = max !== false && orient(position) > orient(getLimit(true));\n return exceededMin || exceededMax;\n }\n\n return {\n mount: mount,\n move: move,\n jump: jump,\n translate: translate,\n shift: shift,\n cancel: cancel,\n toIndex: toIndex,\n toPosition: toPosition,\n getPosition: getPosition,\n getLimit: getLimit,\n exceededLimit: exceededLimit,\n reposition: reposition\n };\n}\n\nfunction Controller(Splide2, Components2, options) {\n var _EventInterface5 = EventInterface(Splide2),\n on = _EventInterface5.on,\n emit = _EventInterface5.emit;\n\n var Move = Components2.Move;\n var getPosition = Move.getPosition,\n getLimit = Move.getLimit,\n toPosition = Move.toPosition;\n var _Components2$Slides = Components2.Slides,\n isEnough = _Components2$Slides.isEnough,\n getLength = _Components2$Slides.getLength;\n var omitEnd = options.omitEnd;\n var isLoop = Splide2.is(LOOP);\n var isSlide = Splide2.is(SLIDE);\n var getNext = apply(getAdjacent, false);\n var getPrev = apply(getAdjacent, true);\n var currIndex = options.start || 0;\n var endIndex;\n var prevIndex = currIndex;\n var slideCount;\n var perMove;\n var perPage;\n\n function mount() {\n init();\n on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], init);\n on(EVENT_RESIZED, onResized);\n }\n\n function init() {\n slideCount = getLength(true);\n perMove = options.perMove;\n perPage = options.perPage;\n endIndex = getEnd();\n var index = clamp(currIndex, 0, omitEnd ? endIndex : slideCount - 1);\n\n if (index !== currIndex) {\n currIndex = index;\n Move.reposition();\n }\n }\n\n function onResized() {\n if (endIndex !== getEnd()) {\n emit(EVENT_END_INDEX_CHANGED);\n }\n }\n\n function go(control, allowSameIndex, callback) {\n if (!isBusy()) {\n var dest = parse(control);\n var index = loop(dest);\n\n if (index > -1 && (allowSameIndex || index !== currIndex)) {\n setIndex(index);\n Move.move(dest, index, prevIndex, callback);\n }\n }\n }\n\n function scroll(destination, duration, snap, callback) {\n Components2.Scroll.scroll(destination, duration, snap, function () {\n var index = loop(Move.toIndex(getPosition()));\n setIndex(omitEnd ? min(index, endIndex) : index);\n callback && callback();\n });\n }\n\n function parse(control) {\n var index = currIndex;\n\n if (isString(control)) {\n var _ref = control.match(/([+\\-<>])(\\d+)?/) || [],\n indicator = _ref[1],\n number = _ref[2];\n\n if (indicator === \"+\" || indicator === \"-\") {\n index = computeDestIndex(currIndex + +(\"\" + indicator + (+number || 1)), currIndex);\n } else if (indicator === \">\") {\n index = number ? toIndex(+number) : getNext(true);\n } else if (indicator === \"<\") {\n index = getPrev(true);\n }\n } else {\n index = isLoop ? control : clamp(control, 0, endIndex);\n }\n\n return index;\n }\n\n function getAdjacent(prev, destination) {\n var number = perMove || (hasFocus() ? 1 : perPage);\n var dest = computeDestIndex(currIndex + number * (prev ? -1 : 1), currIndex, !(perMove || hasFocus()));\n\n if (dest === -1 && isSlide) {\n if (!approximatelyEqual(getPosition(), getLimit(!prev), 1)) {\n return prev ? 0 : endIndex;\n }\n }\n\n return destination ? dest : loop(dest);\n }\n\n function computeDestIndex(dest, from, snapPage) {\n if (isEnough() || hasFocus()) {\n var index = computeMovableDestIndex(dest);\n\n if (index !== dest) {\n from = dest;\n dest = index;\n snapPage = false;\n }\n\n if (dest < 0 || dest > endIndex) {\n if (!perMove && (between(0, dest, from, true) || between(endIndex, from, dest, true))) {\n dest = toIndex(toPage(dest));\n } else {\n if (isLoop) {\n dest = snapPage ? dest < 0 ? -(slideCount % perPage || perPage) : slideCount : dest;\n } else if (options.rewind) {\n dest = dest < 0 ? endIndex : 0;\n } else {\n dest = -1;\n }\n }\n } else {\n if (snapPage && dest !== from) {\n dest = toIndex(toPage(from) + (dest < from ? -1 : 1));\n }\n }\n } else {\n dest = -1;\n }\n\n return dest;\n }\n\n function computeMovableDestIndex(dest) {\n if (isSlide && options.trimSpace === \"move\" && dest !== currIndex) {\n var position = getPosition();\n\n while (position === toPosition(dest, true) && between(dest, 0, Splide2.length - 1, !options.rewind)) {\n dest < currIndex ? --dest : ++dest;\n }\n }\n\n return dest;\n }\n\n function loop(index) {\n return isLoop ? (index + slideCount) % slideCount || 0 : index;\n }\n\n function getEnd() {\n var end = slideCount - (hasFocus() || isLoop && perMove ? 1 : perPage);\n\n while (omitEnd && end-- > 0) {\n if (toPosition(slideCount - 1, true) !== toPosition(end, true)) {\n end++;\n break;\n }\n }\n\n return clamp(end, 0, slideCount - 1);\n }\n\n function toIndex(page) {\n return clamp(hasFocus() ? page : perPage * page, 0, endIndex);\n }\n\n function toPage(index) {\n return hasFocus() ? min(index, endIndex) : floor((index >= endIndex ? slideCount - 1 : index) / perPage);\n }\n\n function toDest(destination) {\n var closest = Move.toIndex(destination);\n return isSlide ? clamp(closest, 0, endIndex) : closest;\n }\n\n function setIndex(index) {\n if (index !== currIndex) {\n prevIndex = currIndex;\n currIndex = index;\n }\n }\n\n function getIndex(prev) {\n return prev ? prevIndex : currIndex;\n }\n\n function hasFocus() {\n return !isUndefined(options.focus) || options.isNavigation;\n }\n\n function isBusy() {\n return Splide2.state.is([MOVING, SCROLLING]) && !!options.waitForTransition;\n }\n\n return {\n mount: mount,\n go: go,\n scroll: scroll,\n getNext: getNext,\n getPrev: getPrev,\n getAdjacent: getAdjacent,\n getEnd: getEnd,\n setIndex: setIndex,\n getIndex: getIndex,\n toIndex: toIndex,\n toPage: toPage,\n toDest: toDest,\n hasFocus: hasFocus,\n isBusy: isBusy\n };\n}\n\nvar XML_NAME_SPACE = \"http://www.w3.org/2000/svg\";\nvar PATH = \"m15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z\";\nvar SIZE = 40;\n\nfunction Arrows(Splide2, Components2, options) {\n var event = EventInterface(Splide2);\n var on = event.on,\n bind = event.bind,\n emit = event.emit;\n var classes = options.classes,\n i18n = options.i18n;\n var Elements = Components2.Elements,\n Controller = Components2.Controller;\n var placeholder = Elements.arrows,\n track = Elements.track;\n var wrapper = placeholder;\n var prev = Elements.prev;\n var next = Elements.next;\n var created;\n var wrapperClasses;\n var arrows = {};\n\n function mount() {\n init();\n on(EVENT_UPDATED, remount);\n }\n\n function remount() {\n destroy();\n mount();\n }\n\n function init() {\n var enabled = options.arrows;\n\n if (enabled && !(prev && next)) {\n createArrows();\n }\n\n if (prev && next) {\n assign(arrows, {\n prev: prev,\n next: next\n });\n display(wrapper, enabled ? \"\" : \"none\");\n addClass(wrapper, wrapperClasses = CLASS_ARROWS + \"--\" + options.direction);\n\n if (enabled) {\n listen();\n update();\n setAttribute([prev, next], ARIA_CONTROLS, track.id);\n emit(EVENT_ARROWS_MOUNTED, prev, next);\n }\n }\n }\n\n function destroy() {\n event.destroy();\n removeClass(wrapper, wrapperClasses);\n\n if (created) {\n remove(placeholder ? [prev, next] : wrapper);\n prev = next = null;\n } else {\n removeAttribute([prev, next], ALL_ATTRIBUTES);\n }\n }\n\n function listen() {\n on([EVENT_MOUNTED, EVENT_MOVED, EVENT_REFRESH, EVENT_SCROLLED, EVENT_END_INDEX_CHANGED], update);\n bind(next, \"click\", apply(go, \">\"));\n bind(prev, \"click\", apply(go, \"<\"));\n }\n\n function go(control) {\n Controller.go(control, true);\n }\n\n function createArrows() {\n wrapper = placeholder || create(\"div\", classes.arrows);\n prev = createArrow(true);\n next = createArrow(false);\n created = true;\n append(wrapper, [prev, next]);\n !placeholder && before(wrapper, track);\n }\n\n function createArrow(prev2) {\n var arrow = \"\";\n };\n\n _proto3.html = function html() {\n var _this$config = this.config,\n rootClass = _this$config.rootClass,\n listTag = _this$config.listTag,\n arrows = _this$config.arrows,\n beforeTrack = _this$config.beforeTrack,\n afterTrack = _this$config.afterTrack,\n slider = _this$config.slider,\n beforeSlider = _this$config.beforeSlider,\n afterSlider = _this$config.afterSlider;\n var html = \"\";\n html += \"
\";\n html += \"\";\n\n if (slider) {\n html += beforeSlider || \"\";\n html += \"
\";\n }\n\n html += beforeTrack || \"\";\n\n if (arrows) {\n html += this.renderArrows();\n }\n\n html += \"
\";\n html += \"<\" + listTag + \" class=\\\"splide__list\\\">\";\n html += this.renderSlides();\n html += \"\";\n html += \"
\";\n html += afterTrack || \"\";\n\n if (slider) {\n html += \"
\";\n html += afterSlider || \"\";\n }\n\n html += \"
\";\n return html;\n };\n\n return SplideRenderer;\n}();\n\nexport { CLASSES, CLASS_ACTIVE, CLASS_ARROW, CLASS_ARROWS, CLASS_ARROW_NEXT, CLASS_ARROW_PREV, CLASS_CLONE, CLASS_CONTAINER, CLASS_FOCUS_IN, CLASS_INITIALIZED, CLASS_LIST, CLASS_LOADING, CLASS_NEXT, CLASS_OVERFLOW, CLASS_PAGINATION, CLASS_PAGINATION_PAGE, CLASS_PREV, CLASS_PROGRESS, CLASS_PROGRESS_BAR, CLASS_ROOT, CLASS_SLIDE, CLASS_SPINNER, CLASS_SR, CLASS_TOGGLE, CLASS_TOGGLE_PAUSE, CLASS_TOGGLE_PLAY, CLASS_TRACK, CLASS_VISIBLE, DEFAULTS, EVENT_ACTIVE, EVENT_ARROWS_MOUNTED, EVENT_ARROWS_UPDATED, EVENT_AUTOPLAY_PAUSE, EVENT_AUTOPLAY_PLAY, EVENT_AUTOPLAY_PLAYING, EVENT_CLICK, EVENT_DESTROY, EVENT_DRAG, EVENT_DRAGGED, EVENT_DRAGGING, EVENT_END_INDEX_CHANGED, EVENT_HIDDEN, EVENT_INACTIVE, EVENT_LAZYLOAD_LOADED, EVENT_MOUNTED, EVENT_MOVE, EVENT_MOVED, EVENT_NAVIGATION_MOUNTED, EVENT_OVERFLOW, EVENT_PAGINATION_MOUNTED, EVENT_PAGINATION_UPDATED, EVENT_READY, EVENT_REFRESH, EVENT_RESIZE, EVENT_RESIZED, EVENT_SCROLL, EVENT_SCROLLED, EVENT_SHIFTED, EVENT_SLIDE_KEYDOWN, EVENT_UPDATED, EVENT_VISIBLE, EventBinder, EventInterface, FADE, LOOP, LTR, RTL, RequestInterval, SLIDE, STATUS_CLASSES, Splide, SplideRenderer, State, TTB, Throttle, Splide as default };\n","import Splide from '@splidejs/splide';\nimport './index.scss';\n\nconst Slider = (sliderName, options = {}) => new Splide(sliderName, options);\n\nexport default Slider;\n","/* eslint-disable */\n/**\n * Video Observer\n */\nimport { observeElement } from '@uvocore-front/utils';\n\n// Videos Observer\nobserveElement({\n element: '[data-observed-video]',\n marginValue: 150,\n callback: (video) => {\n const poster = video.getAttribute('data-poster');\n poster && (video.poster = poster);\n\n for (const source in video.children) {\n const videoSource = video.children[source];\n\n if (typeof videoSource.tagName === 'string' && videoSource.tagName === 'SOURCE') {\n const src = videoSource.getAttribute('data-src');\n src && (videoSource.src = src);\n }\n }\n\n video.load();\n },\n});\n","import { observeElement } from '@uvocore-front/utils';\nimport '../../components/Header';\nimport TestimonialsInit from '../../components/TestimonialsAlt/Slider';\nimport '../../components/PseudoLinks';\nimport '../../components/LinkAnchors';\nimport Accordion from '../../components/Accordion';\nimport nextStep from './next-step';\nimport Slider from '../../components/Slider';\nimport '../../components/VideoLazyLoading';\n\n// run accordion\nobserveElement({\n element: '.Accordion',\n marginValue: 400,\n callback: () => {\n const acc = new Accordion({ // eslint-disable-line\n itemsSelector: '.Accordion__item',\n });\n },\n});\n\nobserveElement({\n element: '.how-it-works',\n marginValue: 100,\n callback: () => {\n nextStep();\n },\n});\n\nobserveElement({\n element: '[data-writers-slider]',\n marginValue: 300,\n callback: () => {\n Slider('[data-writers-slider]', {\n mediaQuery: 'min',\n arrows: false,\n breakpoints: {\n 1024: {\n destroy: true,\n pagination: false,\n },\n 768: {\n loop: false,\n pagination: true,\n type: 'slider',\n gap: '24px',\n perPage: 1,\n },\n },\n }).mount();\n },\n});\n\nif (document.querySelector('[data-testimonials]')) {\n TestimonialsInit();\n}\n","// eslint-disable-next-line func-names\nexport default function nextStep() {\n let activeHeading = 1;\n const allHeadings = document.getElementsByClassName('how-it-works__item--header');\n const list = document.getElementsByClassName('how-it-works__item--list');\n const text = document.getElementsByClassName('how-it-works__item--text');\n const buttonOrder = document.getElementById('place_order');\n const buttonNextStep = document.getElementById('next_step');\n // eslint-disable-next-line func-names\n\n function changeText() {\n Array.from(allHeadings).forEach((heading, index) => {\n if (index !== activeHeading) {\n heading.classList.add('hidden');\n } else {\n heading.classList.remove('hidden');\n }\n });\n activeHeading += 1;\n\n if (activeHeading === allHeadings.length) {\n list[0].classList.add('hidden');\n text[0].classList.remove('hidden');\n buttonOrder.classList.remove('hidden');\n buttonNextStep.classList.add('invisible');\n\n // eslint-disable-next-line no-use-before-define\n clearInterval(interval);\n }\n }\n\n const interval = setInterval(changeText, 5000);\n\n // eslint-disable-next-line func-names\n buttonNextStep.onclick = function() {\n changeText();\n };\n}\n","import { passiveOption } from './passiveOption.js';\n\nexport function removeEvents(el, obj) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 ? passiveOption : false;\n el.removeEventListener(prop, obj[prop], option);\n }\n}","// Test via a getter in the options object to see if the passive property is accessed\nvar supportsPassive = false;\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"test\", null, opts);\n} catch (e) {}\nexport var passiveOption = supportsPassive ? { passive: true } : false;","var win = window;\n\nexport var caf = win.cancelAnimationFrame\n || win.mozCancelAnimationFrame\n || function(id){ clearTimeout(id); };\n","export function extend() {\n var obj, name, copy,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length;\n\n for (; i < length; i++) {\n if ((obj = arguments[i]) !== null) {\n for (name in obj) {\n copy = obj[name];\n\n if (target === copy) {\n continue;\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n return target;\n}","export function arrayFromNodeList (nl) {\n var arr = [];\n for (var i = 0, l = nl.length; i < l; i++) {\n arr.push(nl[i]);\n }\n return arr;\n}","export function isVisible(el) {\n return window.getComputedStyle(el).display !== 'none';\n}","// get transitionend, animationend based on transitionDuration\n// @propin: string\n// @propOut: string, first-letter uppercase\n// Usage: getEndProperty('WebkitTransitionDuration', 'Transition') => webkitTransitionEnd\nexport function getEndProperty(propIn, propOut) {\n var endProp = false;\n if (/^Webkit/.test(propIn)) {\n endProp = 'webkit' + propOut + 'End';\n } else if (/^O/.test(propIn)) {\n endProp = 'o' + propOut + 'End';\n } else if (propIn) {\n endProp = propOut.toLowerCase() + 'end';\n }\n return endProp;\n}","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import './helpers/Object.keys';\nimport './helpers/childNode.remove';\nimport { raf } from './helpers/raf.js';\nimport { caf } from './helpers/caf.js';\nimport { extend } from './helpers/extend.js';\nimport { checkStorageValue } from './helpers/checkStorageValue.js';\nimport { setLocalStorage } from './helpers/setLocalStorage.js';\nimport { getSlideId } from './helpers/getSlideId.js';\nimport { calc } from './helpers/calc.js';\nimport { percentageLayout } from './helpers/percentageLayout.js';\nimport { mediaquerySupport } from './helpers/mediaquerySupport.js';\nimport { createStyleSheet } from './helpers/createStyleSheet.js';\nimport { addCSSRule } from './helpers/addCSSRule.js';\nimport { removeCSSRule } from './helpers/removeCSSRule.js';\nimport { getCssRulesLength } from './helpers/getCssRulesLength.js';\nimport { toDegree } from './helpers/toDegree.js';\nimport { getTouchDirection } from './helpers/getTouchDirection.js';\nimport { forEach } from './helpers/forEach.js';\nimport { hasClass } from './helpers/hasClass.js';\nimport { addClass } from './helpers/addClass.js';\nimport { removeClass } from './helpers/removeClass.js';\nimport { hasAttr } from './helpers/hasAttr.js';\nimport { getAttr } from './helpers/getAttr.js';\nimport { setAttrs } from './helpers/setAttrs.js';\nimport { removeAttrs } from './helpers/removeAttrs.js';\nimport { arrayFromNodeList } from './helpers/arrayFromNodeList.js';\nimport { hideElement } from './helpers/hideElement.js';\nimport { showElement } from './helpers/showElement.js';\nimport { isVisible } from './helpers/isVisible.js';\nimport { whichProperty } from './helpers/whichProperty.js';\nimport { has3DTransforms } from './helpers/has3DTransforms.js';\nimport { getEndProperty } from './helpers/getEndProperty.js';\nimport { addEvents } from './helpers/addEvents.js';\nimport { removeEvents } from './helpers/removeEvents.js';\nimport { Events } from './helpers/events.js';\nimport { jsTransform } from './helpers/jsTransform.js';\n\nexport var tns = function(options) {\n options = extend({\n container: '.slider',\n mode: 'carousel',\n axis: 'horizontal',\n items: 1,\n gutter: 0,\n edgePadding: 0,\n fixedWidth: false,\n autoWidth: false,\n viewportMax: false,\n slideBy: 1,\n center: false,\n controls: true,\n controlsPosition: 'top',\n controlsText: ['prev', 'next'],\n controlsContainer: false,\n prevButton: false,\n nextButton: false,\n nav: true,\n navPosition: 'top',\n navContainer: false,\n navAsThumbnails: false,\n arrowKeys: false,\n speed: 300,\n autoplay: false,\n autoplayPosition: 'top',\n autoplayTimeout: 5000,\n autoplayDirection: 'forward',\n autoplayText: ['start', 'stop'],\n autoplayHoverPause: false,\n autoplayButton: false,\n autoplayButtonOutput: true,\n autoplayResetOnVisibility: true,\n animateIn: 'tns-fadeIn',\n animateOut: 'tns-fadeOut',\n animateNormal: 'tns-normal',\n animateDelay: false,\n loop: true,\n rewind: false,\n autoHeight: false,\n responsive: false,\n lazyload: false,\n lazyloadSelector: '.tns-lazy-img',\n touch: true,\n mouseDrag: false,\n swipeAngle: 15,\n nested: false,\n preventActionWhenRunning: false,\n preventScrollOnTouch: false,\n freezable: true,\n onInit: false,\n useLocalStorage: true\n }, options || {});\n \n var doc = document,\n win = window,\n KEYS = {\n ENTER: 13,\n SPACE: 32,\n LEFT: 37,\n RIGHT: 39\n },\n tnsStorage = {},\n localStorageAccess = options.useLocalStorage;\n\n if (localStorageAccess) {\n // check browser version and local storage access\n var browserInfo = navigator.userAgent;\n var uid = new Date;\n\n try {\n tnsStorage = win.localStorage;\n if (tnsStorage) {\n tnsStorage.setItem(uid, uid);\n localStorageAccess = tnsStorage.getItem(uid) == uid;\n tnsStorage.removeItem(uid);\n } else {\n localStorageAccess = false;\n }\n if (!localStorageAccess) { tnsStorage = {}; }\n } catch(e) {\n localStorageAccess = false;\n }\n\n if (localStorageAccess) {\n // remove storage when browser version changes\n if (tnsStorage['tnsApp'] && tnsStorage['tnsApp'] !== browserInfo) {\n ['tC', 'tPL', 'tMQ', 'tTf', 't3D', 'tTDu', 'tTDe', 'tADu', 'tADe', 'tTE', 'tAE'].forEach(function(item) { tnsStorage.removeItem(item); });\n }\n // update browserInfo\n localStorage['tnsApp'] = browserInfo;\n }\n }\n\n var CALC = tnsStorage['tC'] ? checkStorageValue(tnsStorage['tC']) : setLocalStorage(tnsStorage, 'tC', calc(), localStorageAccess),\n PERCENTAGELAYOUT = tnsStorage['tPL'] ? checkStorageValue(tnsStorage['tPL']) : setLocalStorage(tnsStorage, 'tPL', percentageLayout(), localStorageAccess),\n CSSMQ = tnsStorage['tMQ'] ? checkStorageValue(tnsStorage['tMQ']) : setLocalStorage(tnsStorage, 'tMQ', mediaquerySupport(), localStorageAccess),\n TRANSFORM = tnsStorage['tTf'] ? checkStorageValue(tnsStorage['tTf']) : setLocalStorage(tnsStorage, 'tTf', whichProperty('transform'), localStorageAccess),\n HAS3DTRANSFORMS = tnsStorage['t3D'] ? checkStorageValue(tnsStorage['t3D']) : setLocalStorage(tnsStorage, 't3D', has3DTransforms(TRANSFORM), localStorageAccess),\n TRANSITIONDURATION = tnsStorage['tTDu'] ? checkStorageValue(tnsStorage['tTDu']) : setLocalStorage(tnsStorage, 'tTDu', whichProperty('transitionDuration'), localStorageAccess),\n TRANSITIONDELAY = tnsStorage['tTDe'] ? checkStorageValue(tnsStorage['tTDe']) : setLocalStorage(tnsStorage, 'tTDe', whichProperty('transitionDelay'), localStorageAccess),\n ANIMATIONDURATION = tnsStorage['tADu'] ? checkStorageValue(tnsStorage['tADu']) : setLocalStorage(tnsStorage, 'tADu', whichProperty('animationDuration'), localStorageAccess),\n ANIMATIONDELAY = tnsStorage['tADe'] ? checkStorageValue(tnsStorage['tADe']) : setLocalStorage(tnsStorage, 'tADe', whichProperty('animationDelay'), localStorageAccess),\n TRANSITIONEND = tnsStorage['tTE'] ? checkStorageValue(tnsStorage['tTE']) : setLocalStorage(tnsStorage, 'tTE', getEndProperty(TRANSITIONDURATION, 'Transition'), localStorageAccess),\n ANIMATIONEND = tnsStorage['tAE'] ? checkStorageValue(tnsStorage['tAE']) : setLocalStorage(tnsStorage, 'tAE', getEndProperty(ANIMATIONDURATION, 'Animation'), localStorageAccess);\n\n // get element nodes from selectors\n var supportConsoleWarn = win.console && typeof win.console.warn === \"function\",\n tnsList = ['container', 'controlsContainer', 'prevButton', 'nextButton', 'navContainer', 'autoplayButton'], \n optionsElements = {};\n \n tnsList.forEach(function(item) {\n if (typeof options[item] === 'string') {\n var str = options[item],\n el = doc.querySelector(str);\n optionsElements[item] = str;\n\n if (el && el.nodeName) {\n options[item] = el;\n } else {\n if (supportConsoleWarn) { console.warn('Can\\'t find', options[item]); }\n return;\n }\n }\n });\n\n // make sure at least 1 slide\n if (options.container.children.length < 1) {\n if (supportConsoleWarn) { console.warn('No slides found in', options.container); }\n return;\n }\n\n // update options\n var responsive = options.responsive,\n nested = options.nested,\n carousel = options.mode === 'carousel' ? true : false;\n\n if (responsive) {\n // apply responsive[0] to options and remove it\n if (0 in responsive) {\n options = extend(options, responsive[0]);\n delete responsive[0];\n }\n\n var responsiveTem = {};\n for (var key in responsive) {\n var val = responsive[key];\n // update responsive\n // from: 300: 2\n // to: \n // 300: { \n // items: 2 \n // } \n val = typeof val === 'number' ? {items: val} : val;\n responsiveTem[key] = val;\n }\n responsive = responsiveTem;\n responsiveTem = null;\n }\n\n // update options\n function updateOptions (obj) {\n for (var key in obj) {\n if (!carousel) {\n if (key === 'slideBy') { obj[key] = 'page'; }\n if (key === 'edgePadding') { obj[key] = false; }\n if (key === 'autoHeight') { obj[key] = false; }\n }\n\n // update responsive options\n if (key === 'responsive') { updateOptions(obj[key]); }\n }\n }\n if (!carousel) { updateOptions(options); }\n\n\n // === define and set variables ===\n if (!carousel) {\n options.axis = 'horizontal';\n options.slideBy = 'page';\n options.edgePadding = false;\n\n var animateIn = options.animateIn,\n animateOut = options.animateOut,\n animateDelay = options.animateDelay,\n animateNormal = options.animateNormal;\n }\n\n var horizontal = options.axis === 'horizontal' ? true : false,\n outerWrapper = doc.createElement('div'),\n innerWrapper = doc.createElement('div'),\n middleWrapper,\n container = options.container,\n containerParent = container.parentNode,\n containerHTML = container.outerHTML,\n slideItems = container.children,\n slideCount = slideItems.length,\n breakpointZone,\n windowWidth = getWindowWidth(),\n isOn = false;\n if (responsive) { setBreakpointZone(); }\n if (carousel) { container.className += ' tns-vpfix'; }\n\n // fixedWidth: viewport > rightBoundary > indexMax\n var autoWidth = options.autoWidth,\n fixedWidth = getOption('fixedWidth'),\n edgePadding = getOption('edgePadding'),\n gutter = getOption('gutter'),\n viewport = getViewportWidth(),\n center = getOption('center'),\n items = !autoWidth ? Math.floor(getOption('items')) : 1,\n slideBy = getOption('slideBy'),\n viewportMax = options.viewportMax || options.fixedWidthViewportWidth,\n arrowKeys = getOption('arrowKeys'),\n speed = getOption('speed'),\n rewind = options.rewind,\n loop = rewind ? false : options.loop,\n autoHeight = getOption('autoHeight'),\n controls = getOption('controls'),\n controlsText = getOption('controlsText'),\n nav = getOption('nav'),\n touch = getOption('touch'),\n mouseDrag = getOption('mouseDrag'),\n autoplay = getOption('autoplay'),\n autoplayTimeout = getOption('autoplayTimeout'),\n autoplayText = getOption('autoplayText'),\n autoplayHoverPause = getOption('autoplayHoverPause'),\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility'),\n sheet = createStyleSheet(),\n lazyload = options.lazyload,\n lazyloadSelector = options.lazyloadSelector,\n slidePositions, // collection of slide positions\n slideItemsOut = [],\n cloneCount = loop ? getCloneCountForLoop() : 0,\n slideCountNew = !carousel ? slideCount + cloneCount : slideCount + cloneCount * 2,\n hasRightDeadZone = (fixedWidth || autoWidth) && !loop ? true : false,\n rightBoundary = fixedWidth ? getRightBoundary() : null,\n updateIndexBeforeTransform = (!carousel || !loop) ? true : false,\n // transform\n transformAttr = horizontal ? 'left' : 'top',\n transformPrefix = '',\n transformPostfix = '',\n // index\n getIndexMax = (function () {\n if (fixedWidth) {\n return function() { return center && !loop ? slideCount - 1 : Math.ceil(- rightBoundary / (fixedWidth + gutter)); };\n } else if (autoWidth) {\n return function() {\n for (var i = slideCountNew; i--;) {\n if (slidePositions[i] >= - rightBoundary) { return i; }\n }\n };\n } else {\n return function() {\n if (center && carousel && !loop) {\n return slideCount - 1;\n } else {\n return loop || carousel ? Math.max(0, slideCountNew - Math.ceil(items)) : slideCountNew - 1;\n }\n };\n }\n })(),\n index = getStartIndex(getOption('startIndex')),\n indexCached = index,\n displayIndex = getCurrentSlide(),\n indexMin = 0,\n indexMax = !autoWidth ? getIndexMax() : null,\n // resize\n resizeTimer,\n preventActionWhenRunning = options.preventActionWhenRunning,\n swipeAngle = options.swipeAngle,\n moveDirectionExpected = swipeAngle ? '?' : true,\n running = false,\n onInit = options.onInit,\n events = new Events(),\n // id, class\n newContainerClasses = ' tns-slider tns-' + options.mode,\n slideId = container.id || getSlideId(),\n disable = getOption('disable'),\n disabled = false,\n freezable = options.freezable,\n freeze = freezable && !autoWidth ? getFreeze() : false,\n frozen = false,\n controlsEvents = {\n 'click': onControlsClick,\n 'keydown': onControlsKeydown\n },\n navEvents = {\n 'click': onNavClick,\n 'keydown': onNavKeydown\n },\n hoverEvents = {\n 'mouseover': mouseoverPause,\n 'mouseout': mouseoutRestart\n },\n visibilityEvent = {'visibilitychange': onVisibilityChange},\n docmentKeydownEvent = {'keydown': onDocumentKeydown},\n touchEvents = {\n 'touchstart': onPanStart,\n 'touchmove': onPanMove,\n 'touchend': onPanEnd,\n 'touchcancel': onPanEnd\n }, dragEvents = {\n 'mousedown': onPanStart,\n 'mousemove': onPanMove,\n 'mouseup': onPanEnd,\n 'mouseleave': onPanEnd\n },\n hasControls = hasOption('controls'),\n hasNav = hasOption('nav'),\n navAsThumbnails = autoWidth ? true : options.navAsThumbnails,\n hasAutoplay = hasOption('autoplay'),\n hasTouch = hasOption('touch'),\n hasMouseDrag = hasOption('mouseDrag'),\n slideActiveClass = 'tns-slide-active',\n imgCompleteClass = 'tns-complete',\n imgEvents = {\n 'load': onImgLoaded,\n 'error': onImgFailed\n },\n imgsComplete,\n liveregionCurrent,\n preventScroll = options.preventScrollOnTouch === 'force' ? true : false;\n\n // controls\n if (hasControls) {\n var controlsContainer = options.controlsContainer,\n controlsContainerHTML = options.controlsContainer ? options.controlsContainer.outerHTML : '',\n prevButton = options.prevButton,\n nextButton = options.nextButton,\n prevButtonHTML = options.prevButton ? options.prevButton.outerHTML : '',\n nextButtonHTML = options.nextButton ? options.nextButton.outerHTML : '',\n prevIsButton,\n nextIsButton;\n }\n\n // nav\n if (hasNav) {\n var navContainer = options.navContainer,\n navContainerHTML = options.navContainer ? options.navContainer.outerHTML : '',\n navItems,\n pages = autoWidth ? slideCount : getPages(),\n pagesCached = 0,\n navClicked = -1,\n navCurrentIndex = getCurrentNavIndex(),\n navCurrentIndexCached = navCurrentIndex,\n navActiveClass = 'tns-nav-active',\n navStr = 'Carousel Page ',\n navStrCurrent = ' (Current Slide)';\n }\n\n // autoplay\n if (hasAutoplay) {\n var autoplayDirection = options.autoplayDirection === 'forward' ? 1 : -1,\n autoplayButton = options.autoplayButton,\n autoplayButtonHTML = options.autoplayButton ? options.autoplayButton.outerHTML : '',\n autoplayHtmlStrings = ['', ' animation'],\n autoplayTimer,\n animating,\n autoplayHoverPaused,\n autoplayUserPaused,\n autoplayVisibilityPaused;\n }\n\n if (hasTouch || hasMouseDrag) {\n var initPosition = {},\n lastPosition = {},\n translateInit,\n disX,\n disY,\n panStart = false,\n rafIndex,\n getDist = horizontal ? \n function(a, b) { return a.x - b.x; } :\n function(a, b) { return a.y - b.y; };\n }\n \n // disable slider when slidecount <= items\n if (!autoWidth) { resetVariblesWhenDisable(disable || freeze); }\n\n if (TRANSFORM) {\n transformAttr = TRANSFORM;\n transformPrefix = 'translate';\n\n if (HAS3DTRANSFORMS) {\n transformPrefix += horizontal ? '3d(' : '3d(0px, ';\n transformPostfix = horizontal ? ', 0px, 0px)' : ', 0px)';\n } else {\n transformPrefix += horizontal ? 'X(' : 'Y(';\n transformPostfix = ')';\n }\n\n }\n\n if (carousel) { container.className = container.className.replace('tns-vpfix', ''); }\n initStructure();\n initSheet();\n initSliderTransform();\n\n // === COMMON FUNCTIONS === //\n function resetVariblesWhenDisable (condition) {\n if (condition) {\n controls = nav = touch = mouseDrag = arrowKeys = autoplay = autoplayHoverPause = autoplayResetOnVisibility = false;\n }\n }\n\n function getCurrentSlide () {\n var tem = carousel ? index - cloneCount : index;\n while (tem < 0) { tem += slideCount; }\n return tem%slideCount + 1;\n }\n\n function getStartIndex (ind) {\n ind = ind ? Math.max(0, Math.min(loop ? slideCount - 1 : slideCount - items, ind)) : 0;\n return carousel ? ind + cloneCount : ind;\n }\n\n function getAbsIndex (i) {\n if (i == null) { i = index; }\n\n if (carousel) { i -= cloneCount; }\n while (i < 0) { i += slideCount; }\n\n return Math.floor(i%slideCount);\n }\n\n function getCurrentNavIndex () {\n var absIndex = getAbsIndex(),\n result;\n\n result = navAsThumbnails ? absIndex : \n fixedWidth || autoWidth ? Math.ceil((absIndex + 1) * pages / slideCount - 1) : \n Math.floor(absIndex / items);\n\n // set active nav to the last one when reaches the right edge\n if (!loop && carousel && index === indexMax) { result = pages - 1; }\n\n return result;\n }\n\n function getItemsMax () {\n // fixedWidth or autoWidth while viewportMax is not available\n if (autoWidth || (fixedWidth && !viewportMax)) {\n return slideCount - 1;\n // most cases\n } else {\n var str = fixedWidth ? 'fixedWidth' : 'items',\n arr = [];\n\n if (fixedWidth || options[str] < slideCount) { arr.push(options[str]); }\n\n if (responsive) {\n for (var bp in responsive) {\n var tem = responsive[bp][str];\n if (tem && (fixedWidth || tem < slideCount)) { arr.push(tem); }\n }\n }\n\n if (!arr.length) { arr.push(0); }\n\n return Math.ceil(fixedWidth ? viewportMax / Math.min.apply(null, arr) : Math.max.apply(null, arr));\n }\n }\n\n function getCloneCountForLoop () {\n var itemsMax = getItemsMax(),\n result = carousel ? Math.ceil((itemsMax * 5 - slideCount)/2) : (itemsMax * 4 - slideCount);\n result = Math.max(itemsMax, result);\n\n return hasOption('edgePadding') ? result + 1 : result;\n }\n\n function getWindowWidth () {\n return win.innerWidth || doc.documentElement.clientWidth || doc.body.clientWidth;\n }\n\n function getInsertPosition (pos) {\n return pos === 'top' ? 'afterbegin' : 'beforeend';\n }\n\n function getClientWidth (el) {\n var div = doc.createElement('div'), rect, width;\n el.appendChild(div);\n rect = div.getBoundingClientRect();\n width = rect.right - rect.left;\n div.remove();\n return width || getClientWidth(el.parentNode);\n }\n\n function getViewportWidth () {\n var gap = edgePadding ? edgePadding * 2 - gutter : 0;\n return getClientWidth(containerParent) - gap;\n }\n\n function hasOption (item) {\n if (options[item]) {\n return true;\n } else {\n if (responsive) {\n for (var bp in responsive) {\n if (responsive[bp][item]) { return true; }\n }\n }\n return false;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n function getOption (item, ww) {\n if (ww == null) { ww = windowWidth; }\n\n if (item === 'items' && fixedWidth) {\n return Math.floor((viewport + gutter) / (fixedWidth + gutter)) || 1;\n\n } else {\n var result = options[item];\n\n if (responsive) {\n for (var bp in responsive) {\n // bp: convert string to number\n if (ww >= parseInt(bp)) {\n if (item in responsive[bp]) { result = responsive[bp][item]; }\n }\n }\n }\n\n if (item === 'slideBy' && result === 'page') { result = getOption('items'); }\n if (!carousel && (item === 'slideBy' || item === 'items')) { result = Math.floor(result); }\n\n return result;\n }\n }\n\n function getSlideMarginLeft (i) {\n return CALC ? \n CALC + '(' + i * 100 + '% / ' + slideCountNew + ')' : \n i * 100 / slideCountNew + '%';\n }\n\n function getInnerWrapperStyles (edgePaddingTem, gutterTem, fixedWidthTem, speedTem, autoHeightBP) {\n var str = '';\n\n if (edgePaddingTem !== undefined) {\n var gap = edgePaddingTem;\n if (gutterTem) { gap -= gutterTem; }\n str = horizontal ?\n 'margin: 0 ' + gap + 'px 0 ' + edgePaddingTem + 'px;' :\n 'margin: ' + edgePaddingTem + 'px 0 ' + gap + 'px 0;';\n } else if (gutterTem && !fixedWidthTem) {\n var gutterTemUnit = '-' + gutterTem + 'px',\n dir = horizontal ? gutterTemUnit + ' 0 0' : '0 ' + gutterTemUnit + ' 0';\n str = 'margin: 0 ' + dir + ';'\n }\n\n if (!carousel && autoHeightBP && TRANSITIONDURATION && speedTem) { str += getTransitionDurationStyle(speedTem); }\n return str;\n }\n\n function getContainerWidth (fixedWidthTem, gutterTem, itemsTem) {\n if (fixedWidthTem) {\n return (fixedWidthTem + gutterTem) * slideCountNew + 'px';\n } else {\n return CALC ?\n CALC + '(' + slideCountNew * 100 + '% / ' + itemsTem + ')' :\n slideCountNew * 100 / itemsTem + '%';\n }\n }\n\n function getSlideWidthStyle (fixedWidthTem, gutterTem, itemsTem) {\n var width;\n\n if (fixedWidthTem) {\n width = (fixedWidthTem + gutterTem) + 'px';\n } else {\n if (!carousel) { itemsTem = Math.floor(itemsTem); }\n var dividend = carousel ? slideCountNew : itemsTem;\n width = CALC ? \n CALC + '(100% / ' + dividend + ')' : \n 100 / dividend + '%';\n }\n\n width = 'width:' + width;\n\n // inner slider: overwrite outer slider styles\n return nested !== 'inner' ? width + ';' : width + ' !important;';\n }\n\n function getSlideGutterStyle (gutterTem) {\n var str = '';\n\n // gutter maybe interger || 0\n // so can't use 'if (gutter)'\n if (gutterTem !== false) {\n var prop = horizontal ? 'padding-' : 'margin-',\n dir = horizontal ? 'right' : 'bottom';\n str = prop + dir + ': ' + gutterTem + 'px;';\n }\n\n return str;\n }\n\n function getCSSPrefix (name, num) {\n var prefix = name.substring(0, name.length - num).toLowerCase();\n if (prefix) { prefix = '-' + prefix + '-'; }\n\n return prefix;\n }\n\n function getTransitionDurationStyle (speed) {\n return getCSSPrefix(TRANSITIONDURATION, 18) + 'transition-duration:' + speed / 1000 + 's;';\n }\n\n function getAnimationDurationStyle (speed) {\n return getCSSPrefix(ANIMATIONDURATION, 17) + 'animation-duration:' + speed / 1000 + 's;';\n }\n\n function initStructure () {\n var classOuter = 'tns-outer',\n classInner = 'tns-inner',\n hasGutter = hasOption('gutter');\n\n outerWrapper.className = classOuter;\n innerWrapper.className = classInner;\n outerWrapper.id = slideId + '-ow';\n innerWrapper.id = slideId + '-iw';\n\n // set container properties\n if (container.id === '') { container.id = slideId; }\n newContainerClasses += PERCENTAGELAYOUT || autoWidth ? ' tns-subpixel' : ' tns-no-subpixel';\n newContainerClasses += CALC ? ' tns-calc' : ' tns-no-calc';\n if (autoWidth) { newContainerClasses += ' tns-autowidth'; }\n newContainerClasses += ' tns-' + options.axis;\n container.className += newContainerClasses;\n\n // add constrain layer for carousel\n if (carousel) {\n middleWrapper = doc.createElement('div');\n middleWrapper.id = slideId + '-mw';\n middleWrapper.className = 'tns-ovh';\n\n outerWrapper.appendChild(middleWrapper);\n middleWrapper.appendChild(innerWrapper);\n } else {\n outerWrapper.appendChild(innerWrapper);\n }\n\n if (autoHeight) {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.className += ' tns-ah';\n }\n\n containerParent.insertBefore(outerWrapper, container);\n innerWrapper.appendChild(container);\n\n // add id, class, aria attributes \n // before clone slides\n forEach(slideItems, function(item, i) {\n addClass(item, 'tns-item');\n if (!item.id) { item.id = slideId + '-item' + i; }\n if (!carousel && animateNormal) { addClass(item, animateNormal); }\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n });\n\n // ## clone slides\n // carousel: n + slides + n\n // gallery: slides + n\n if (cloneCount) {\n var fragmentBefore = doc.createDocumentFragment(), \n fragmentAfter = doc.createDocumentFragment();\n\n for (var j = cloneCount; j--;) {\n var num = j%slideCount,\n cloneFirst = slideItems[num].cloneNode(true);\n removeAttrs(cloneFirst, 'id');\n fragmentAfter.insertBefore(cloneFirst, fragmentAfter.firstChild);\n\n if (carousel) {\n var cloneLast = slideItems[slideCount - 1 - num].cloneNode(true);\n removeAttrs(cloneLast, 'id');\n fragmentBefore.appendChild(cloneLast);\n }\n }\n\n container.insertBefore(fragmentBefore, container.firstChild);\n container.appendChild(fragmentAfter);\n slideItems = container.children;\n }\n\n }\n\n function initSliderTransform () {\n // ## images loaded/failed\n if (hasOption('autoHeight') || autoWidth || !horizontal) {\n var imgs = container.querySelectorAll('img');\n\n // add complete class if all images are loaded/failed\n forEach(imgs, function(img) {\n var src = img.src;\n \n if (src && src.indexOf('data:image') < 0) {\n addEvents(img, imgEvents);\n img.src = '';\n img.src = src;\n addClass(img, 'loading');\n } else if (!lazyload) {\n imgLoaded(img);\n }\n });\n\n // All imgs are completed\n raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), function() { imgsComplete = true; }); });\n\n // Check imgs in window only for auto height\n if (!autoWidth && horizontal) { imgs = getImageArray(index, Math.min(index + items - 1, slideCountNew - 1)); }\n\n lazyload ? initSliderTransformStyleCheck() : raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), initSliderTransformStyleCheck); });\n\n } else {\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n }\n\n function initSliderTransformStyleCheck () {\n if (autoWidth) {\n // check styles application\n var num = loop ? index : slideCount - 1;\n (function stylesApplicationCheck() {\n slideItems[num - 1].getBoundingClientRect().right.toFixed(2) === slideItems[num].getBoundingClientRect().left.toFixed(2) ?\n initSliderTransformCore() :\n setTimeout(function(){ stylesApplicationCheck() }, 16);\n })();\n } else {\n initSliderTransformCore();\n }\n }\n\n\n function initSliderTransformCore () {\n // run Fn()s which are rely on image loading\n if (!horizontal || autoWidth) {\n setSlidePositions();\n\n if (autoWidth) {\n rightBoundary = getRightBoundary();\n if (freezable) { freeze = getFreeze(); }\n indexMax = getIndexMax(); // <= slidePositions, rightBoundary <=\n resetVariblesWhenDisable(disable || freeze);\n } else {\n updateContentWrapperHeight();\n }\n }\n\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n\n function initSheet () {\n // gallery:\n // set animation classes and left value for gallery slider\n if (!carousel) { \n for (var i = index, l = index + Math.min(slideCount, items); i < l; i++) {\n var item = slideItems[i];\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // #### LAYOUT\n\n // ## INLINE-BLOCK VS FLOAT\n\n // ## PercentageLayout:\n // slides: inline-block\n // remove blank space between slides by set font-size: 0\n\n // ## Non PercentageLayout:\n // slides: float\n // margin-right: -100%\n // margin-left: ~\n\n // Resource: https://docs.google.com/spreadsheets/d/147up245wwTXeQYve3BRSAD4oVcvQmuGsFteJOeA5xNQ/edit?usp=sharing\n if (horizontal) {\n if (PERCENTAGELAYOUT || autoWidth) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', 'font-size:' + win.getComputedStyle(slideItems[0]).fontSize + ';', getCssRulesLength(sheet));\n addCSSRule(sheet, '#' + slideId, 'font-size:0;', getCssRulesLength(sheet));\n } else if (carousel) {\n forEach(slideItems, function (slide, i) {\n slide.style.marginLeft = getSlideMarginLeft(i);\n });\n }\n }\n\n\n // ## BASIC STYLES\n if (CSSMQ) {\n // middle wrapper style\n if (TRANSITIONDURATION) {\n var str = middleWrapper && options.autoHeight ? getTransitionDurationStyle(options.speed) : '';\n addCSSRule(sheet, '#' + slideId + '-mw', str, getCssRulesLength(sheet));\n }\n\n // inner wrapper styles\n str = getInnerWrapperStyles(options.edgePadding, options.gutter, options.fixedWidth, options.speed, options.autoHeight);\n addCSSRule(sheet, '#' + slideId + '-iw', str, getCssRulesLength(sheet));\n\n // container styles\n if (carousel) {\n str = horizontal && !autoWidth ? 'width:' + getContainerWidth(options.fixedWidth, options.gutter, options.items) + ';' : '';\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n addCSSRule(sheet, '#' + slideId, str, getCssRulesLength(sheet));\n }\n\n // slide styles\n str = horizontal && !autoWidth ? getSlideWidthStyle(options.fixedWidth, options.gutter, options.items) : '';\n if (options.gutter) { str += getSlideGutterStyle(options.gutter); }\n // set gallery items transition-duration\n if (!carousel) {\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n if (ANIMATIONDURATION) { str += getAnimationDurationStyle(speed); }\n }\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n\n // non CSS mediaqueries: IE8\n // ## update inner wrapper, container, slides if needed\n // set inline styles for inner wrapper & container\n // insert stylesheet (one line) for slides only (since slides are many)\n } else {\n // middle wrapper styles\n update_carousel_transition_duration();\n\n // inner wrapper styles\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, autoHeight);\n\n // container styles\n if (carousel && horizontal && !autoWidth) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = horizontal && !autoWidth ? getSlideWidthStyle(fixedWidth, gutter, items) : '';\n if (gutter) { str += getSlideGutterStyle(gutter); }\n\n // append to the last line\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n }\n\n // ## MEDIAQUERIES\n if (responsive && CSSMQ) {\n for (var bp in responsive) {\n // bp: convert string to number\n bp = parseInt(bp);\n\n var opts = responsive[bp],\n str = '',\n middleWrapperStr = '',\n innerWrapperStr = '',\n containerStr = '',\n slideStr = '',\n itemsBP = !autoWidth ? getOption('items', bp) : null,\n fixedWidthBP = getOption('fixedWidth', bp),\n speedBP = getOption('speed', bp),\n edgePaddingBP = getOption('edgePadding', bp),\n autoHeightBP = getOption('autoHeight', bp),\n gutterBP = getOption('gutter', bp);\n\n // middle wrapper string\n if (TRANSITIONDURATION && middleWrapper && getOption('autoHeight', bp) && 'speed' in opts) {\n middleWrapperStr = '#' + slideId + '-mw{' + getTransitionDurationStyle(speedBP) + '}';\n }\n\n // inner wrapper string\n if ('edgePadding' in opts || 'gutter' in opts) {\n innerWrapperStr = '#' + slideId + '-iw{' + getInnerWrapperStyles(edgePaddingBP, gutterBP, fixedWidthBP, speedBP, autoHeightBP) + '}';\n }\n\n // container string\n if (carousel && horizontal && !autoWidth && ('fixedWidth' in opts || 'items' in opts || (fixedWidth && 'gutter' in opts))) {\n containerStr = 'width:' + getContainerWidth(fixedWidthBP, gutterBP, itemsBP) + ';';\n }\n if (TRANSITIONDURATION && 'speed' in opts) {\n containerStr += getTransitionDurationStyle(speedBP);\n }\n if (containerStr) {\n containerStr = '#' + slideId + '{' + containerStr + '}';\n }\n\n // slide string\n if ('fixedWidth' in opts || (fixedWidth && 'gutter' in opts) || !carousel && 'items' in opts) {\n slideStr += getSlideWidthStyle(fixedWidthBP, gutterBP, itemsBP);\n }\n if ('gutter' in opts) {\n slideStr += getSlideGutterStyle(gutterBP);\n }\n // set gallery items transition-duration\n if (!carousel && 'speed' in opts) {\n if (TRANSITIONDURATION) { slideStr += getTransitionDurationStyle(speedBP); }\n if (ANIMATIONDURATION) { slideStr += getAnimationDurationStyle(speedBP); }\n }\n if (slideStr) { slideStr = '#' + slideId + ' > .tns-item{' + slideStr + '}'; }\n\n // add up\n str = middleWrapperStr + innerWrapperStr + containerStr + slideStr;\n\n if (str) {\n sheet.insertRule('@media (min-width: ' + bp / 16 + 'em) {' + str + '}', sheet.cssRules.length);\n }\n }\n }\n }\n\n function initTools () {\n // == slides ==\n updateSlideStatus();\n\n // == live region ==\n outerWrapper.insertAdjacentHTML('afterbegin', '
slide ' + getLiveRegionStr() + ' of ' + slideCount + '
');\n liveregionCurrent = outerWrapper.querySelector('.tns-liveregion .current');\n\n // == autoplayInit ==\n if (hasAutoplay) {\n var txt = autoplay ? 'stop' : 'start';\n if (autoplayButton) {\n setAttrs(autoplayButton, {'data-action': txt});\n } else if (options.autoplayButtonOutput) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.autoplayPosition), '');\n autoplayButton = outerWrapper.querySelector('[data-action]');\n }\n\n // add event\n if (autoplayButton) {\n addEvents(autoplayButton, {'click': toggleAutoplay});\n }\n\n if (autoplay) {\n startAutoplay();\n if (autoplayHoverPause) { addEvents(container, hoverEvents); }\n if (autoplayResetOnVisibility) { addEvents(container, visibilityEvent); }\n }\n }\n \n // == navInit ==\n if (hasNav) {\n var initIndex = !carousel ? 0 : cloneCount;\n // customized nav\n // will not hide the navs in case they're thumbnails\n if (navContainer) {\n setAttrs(navContainer, {'aria-label': 'Carousel Pagination'});\n navItems = navContainer.children;\n forEach(navItems, function(item, i) {\n setAttrs(item, {\n 'data-nav': i,\n 'tabindex': '-1',\n 'aria-label': navStr + (i + 1),\n 'aria-controls': slideId,\n });\n });\n\n // generated nav \n } else {\n var navHtml = '',\n hiddenStr = navAsThumbnails ? '' : 'style=\"display:none\"';\n for (var i = 0; i < slideCount; i++) {\n // hide nav items by default\n navHtml += '';\n }\n navHtml = '
' + navHtml + '
';\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.navPosition), navHtml);\n\n navContainer = outerWrapper.querySelector('.tns-nav');\n navItems = navContainer.children;\n }\n\n updateNavVisibility();\n\n // add transition\n if (TRANSITIONDURATION) {\n var prefix = TRANSITIONDURATION.substring(0, TRANSITIONDURATION.length - 18).toLowerCase(),\n str = 'transition: all ' + speed / 1000 + 's';\n\n if (prefix) {\n str = '-' + prefix + '-' + str;\n }\n\n addCSSRule(sheet, '[aria-controls^=' + slideId + '-item]', str, getCssRulesLength(sheet));\n }\n\n setAttrs(navItems[navCurrentIndex], {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navItems[navCurrentIndex], 'tabindex');\n addClass(navItems[navCurrentIndex], navActiveClass);\n\n // add events\n addEvents(navContainer, navEvents);\n }\n\n\n\n // == controlsInit ==\n if (hasControls) {\n if (!controlsContainer && (!prevButton || !nextButton)) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.controlsPosition), '
');\n\n controlsContainer = outerWrapper.querySelector('.tns-controls');\n }\n\n if (!prevButton || !nextButton) {\n prevButton = controlsContainer.children[0];\n nextButton = controlsContainer.children[1];\n }\n\n if (options.controlsContainer) {\n setAttrs(controlsContainer, {\n 'aria-label': 'Carousel Navigation',\n 'tabindex': '0'\n });\n }\n\n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs([prevButton, nextButton], {\n 'aria-controls': slideId,\n 'tabindex': '-1',\n });\n }\n \n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs(prevButton, {'data-controls' : 'prev'});\n setAttrs(nextButton, {'data-controls' : 'next'});\n }\n\n prevIsButton = isButton(prevButton);\n nextIsButton = isButton(nextButton);\n\n updateControlsStatus();\n\n // add events\n if (controlsContainer) {\n addEvents(controlsContainer, controlsEvents);\n } else {\n addEvents(prevButton, controlsEvents);\n addEvents(nextButton, controlsEvents);\n }\n }\n\n // hide tools if needed\n disableUI();\n }\n\n function initEvents () {\n // add events\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n addEvents(container, eve);\n }\n\n if (touch) { addEvents(container, touchEvents, options.preventScrollOnTouch); }\n if (mouseDrag) { addEvents(container, dragEvents); }\n if (arrowKeys) { addEvents(doc, docmentKeydownEvent); }\n\n if (nested === 'inner') {\n events.on('outerResized', function () {\n resizeTasks();\n events.emit('innerLoaded', info());\n });\n } else if (responsive || fixedWidth || autoWidth || autoHeight || !horizontal) {\n addEvents(win, {'resize': onResize});\n }\n\n if (autoHeight) {\n if (nested === 'outer') {\n events.on('innerLoaded', doAutoHeight);\n } else if (!disable) { doAutoHeight(); }\n }\n\n doLazyLoad();\n if (disable) { disableSlider(); } else if (freeze) { freezeSlider(); }\n\n events.on('indexChanged', additionalUpdates);\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n if (typeof onInit === 'function') { onInit(info()); }\n isOn = true;\n }\n\n function destroy () {\n // sheet\n sheet.disabled = true;\n if (sheet.ownerNode) { sheet.ownerNode.remove(); }\n\n // remove win event listeners\n removeEvents(win, {'resize': onResize});\n\n // arrowKeys, controls, nav\n if (arrowKeys) { removeEvents(doc, docmentKeydownEvent); }\n if (controlsContainer) { removeEvents(controlsContainer, controlsEvents); }\n if (navContainer) { removeEvents(navContainer, navEvents); }\n\n // autoplay\n removeEvents(container, hoverEvents);\n removeEvents(container, visibilityEvent);\n if (autoplayButton) { removeEvents(autoplayButton, {'click': toggleAutoplay}); }\n if (autoplay) { clearInterval(autoplayTimer); }\n\n // container\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n removeEvents(container, eve);\n }\n if (touch) { removeEvents(container, touchEvents); }\n if (mouseDrag) { removeEvents(container, dragEvents); }\n\n // cache Object values in options && reset HTML\n var htmlList = [containerHTML, controlsContainerHTML, prevButtonHTML, nextButtonHTML, navContainerHTML, autoplayButtonHTML];\n\n tnsList.forEach(function(item, i) {\n var el = item === 'container' ? outerWrapper : options[item];\n\n if (typeof el === 'object') {\n var prevEl = el.previousElementSibling ? el.previousElementSibling : false,\n parentEl = el.parentNode;\n el.outerHTML = htmlList[i];\n options[item] = prevEl ? prevEl.nextElementSibling : parentEl.firstElementChild;\n }\n });\n\n\n // reset variables\n tnsList = animateIn = animateOut = animateDelay = animateNormal = horizontal = outerWrapper = innerWrapper = container = containerParent = containerHTML = slideItems = slideCount = breakpointZone = windowWidth = autoWidth = fixedWidth = edgePadding = gutter = viewport = items = slideBy = viewportMax = arrowKeys = speed = rewind = loop = autoHeight = sheet = lazyload = slidePositions = slideItemsOut = cloneCount = slideCountNew = hasRightDeadZone = rightBoundary = updateIndexBeforeTransform = transformAttr = transformPrefix = transformPostfix = getIndexMax = index = indexCached = indexMin = indexMax = resizeTimer = swipeAngle = moveDirectionExpected = running = onInit = events = newContainerClasses = slideId = disable = disabled = freezable = freeze = frozen = controlsEvents = navEvents = hoverEvents = visibilityEvent = docmentKeydownEvent = touchEvents = dragEvents = hasControls = hasNav = navAsThumbnails = hasAutoplay = hasTouch = hasMouseDrag = slideActiveClass = imgCompleteClass = imgEvents = imgsComplete = controls = controlsText = controlsContainer = controlsContainerHTML = prevButton = nextButton = prevIsButton = nextIsButton = nav = navContainer = navContainerHTML = navItems = pages = pagesCached = navClicked = navCurrentIndex = navCurrentIndexCached = navActiveClass = navStr = navStrCurrent = autoplay = autoplayTimeout = autoplayDirection = autoplayText = autoplayHoverPause = autoplayButton = autoplayButtonHTML = autoplayResetOnVisibility = autoplayHtmlStrings = autoplayTimer = animating = autoplayHoverPaused = autoplayUserPaused = autoplayVisibilityPaused = initPosition = lastPosition = translateInit = disX = disY = panStart = rafIndex = getDist = touch = mouseDrag = null;\n // check variables\n // [animateIn, animateOut, animateDelay, animateNormal, horizontal, outerWrapper, innerWrapper, container, containerParent, containerHTML, slideItems, slideCount, breakpointZone, windowWidth, autoWidth, fixedWidth, edgePadding, gutter, viewport, items, slideBy, viewportMax, arrowKeys, speed, rewind, loop, autoHeight, sheet, lazyload, slidePositions, slideItemsOut, cloneCount, slideCountNew, hasRightDeadZone, rightBoundary, updateIndexBeforeTransform, transformAttr, transformPrefix, transformPostfix, getIndexMax, index, indexCached, indexMin, indexMax, resizeTimer, swipeAngle, moveDirectionExpected, running, onInit, events, newContainerClasses, slideId, disable, disabled, freezable, freeze, frozen, controlsEvents, navEvents, hoverEvents, visibilityEvent, docmentKeydownEvent, touchEvents, dragEvents, hasControls, hasNav, navAsThumbnails, hasAutoplay, hasTouch, hasMouseDrag, slideActiveClass, imgCompleteClass, imgEvents, imgsComplete, controls, controlsText, controlsContainer, controlsContainerHTML, prevButton, nextButton, prevIsButton, nextIsButton, nav, navContainer, navContainerHTML, navItems, pages, pagesCached, navClicked, navCurrentIndex, navCurrentIndexCached, navActiveClass, navStr, navStrCurrent, autoplay, autoplayTimeout, autoplayDirection, autoplayText, autoplayHoverPause, autoplayButton, autoplayButtonHTML, autoplayResetOnVisibility, autoplayHtmlStrings, autoplayTimer, animating, autoplayHoverPaused, autoplayUserPaused, autoplayVisibilityPaused, initPosition, lastPosition, translateInit, disX, disY, panStart, rafIndex, getDist, touch, mouseDrag ].forEach(function(item) { if (item !== null) { console.log(item); } });\n\n for (var a in this) {\n if (a !== 'rebuild') { this[a] = null; }\n }\n isOn = false;\n }\n\n// === ON RESIZE ===\n // responsive || fixedWidth || autoWidth || !horizontal\n function onResize (e) {\n raf(function(){ resizeTasks(getEvent(e)); });\n }\n\n function resizeTasks (e) {\n if (!isOn) { return; }\n if (nested === 'outer') { events.emit('outerResized', info(e)); }\n windowWidth = getWindowWidth();\n var bpChanged,\n breakpointZoneTem = breakpointZone,\n needContainerTransform = false;\n\n if (responsive) {\n setBreakpointZone();\n bpChanged = breakpointZoneTem !== breakpointZone;\n // if (hasRightDeadZone) { needContainerTransform = true; } // *?\n if (bpChanged) { events.emit('newBreakpointStart', info(e)); }\n }\n\n var indChanged,\n itemsChanged,\n itemsTem = items,\n disableTem = disable,\n freezeTem = freeze,\n arrowKeysTem = arrowKeys,\n controlsTem = controls,\n navTem = nav,\n touchTem = touch,\n mouseDragTem = mouseDrag,\n autoplayTem = autoplay,\n autoplayHoverPauseTem = autoplayHoverPause,\n autoplayResetOnVisibilityTem = autoplayResetOnVisibility,\n indexTem = index;\n\n if (bpChanged) {\n var fixedWidthTem = fixedWidth,\n autoHeightTem = autoHeight,\n controlsTextTem = controlsText,\n centerTem = center,\n autoplayTextTem = autoplayText;\n\n if (!CSSMQ) {\n var gutterTem = gutter,\n edgePaddingTem = edgePadding;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n arrowKeys = getOption('arrowKeys');\n controls = getOption('controls');\n nav = getOption('nav');\n touch = getOption('touch');\n center = getOption('center');\n mouseDrag = getOption('mouseDrag');\n autoplay = getOption('autoplay');\n autoplayHoverPause = getOption('autoplayHoverPause');\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility');\n\n if (bpChanged) {\n disable = getOption('disable');\n fixedWidth = getOption('fixedWidth');\n speed = getOption('speed');\n autoHeight = getOption('autoHeight');\n controlsText = getOption('controlsText');\n autoplayText = getOption('autoplayText');\n autoplayTimeout = getOption('autoplayTimeout');\n\n if (!CSSMQ) {\n edgePadding = getOption('edgePadding');\n gutter = getOption('gutter');\n }\n }\n // update options\n resetVariblesWhenDisable(disable);\n\n viewport = getViewportWidth(); // <= edgePadding, gutter\n if ((!horizontal || autoWidth) && !disable) {\n setSlidePositions();\n if (!horizontal) {\n updateContentWrapperHeight(); // <= setSlidePositions\n needContainerTransform = true;\n }\n }\n if (fixedWidth || autoWidth) {\n rightBoundary = getRightBoundary(); // autoWidth: <= viewport, slidePositions, gutter\n // fixedWidth: <= viewport, fixedWidth, gutter\n indexMax = getIndexMax(); // autoWidth: <= rightBoundary, slidePositions\n // fixedWidth: <= rightBoundary, fixedWidth, gutter\n }\n\n if (bpChanged || fixedWidth) {\n items = getOption('items');\n slideBy = getOption('slideBy');\n itemsChanged = items !== itemsTem;\n\n if (itemsChanged) {\n if (!fixedWidth && !autoWidth) { indexMax = getIndexMax(); } // <= items\n // check index before transform in case\n // slider reach the right edge then items become bigger\n updateIndex();\n }\n }\n \n if (bpChanged) {\n if (disable !== disableTem) {\n if (disable) {\n disableSlider();\n } else {\n enableSlider(); // <= slidePositions, rightBoundary, indexMax\n }\n }\n }\n\n if (freezable && (bpChanged || fixedWidth || autoWidth)) {\n freeze = getFreeze(); // <= autoWidth: slidePositions, gutter, viewport, rightBoundary\n // <= fixedWidth: fixedWidth, gutter, rightBoundary\n // <= others: items\n\n if (freeze !== freezeTem) {\n if (freeze) {\n doContainerTransform(getContainerTransformValue(getStartIndex(0)));\n freezeSlider();\n } else {\n unfreezeSlider();\n needContainerTransform = true;\n }\n }\n }\n\n resetVariblesWhenDisable(disable || freeze); // controls, nav, touch, mouseDrag, arrowKeys, autoplay, autoplayHoverPause, autoplayResetOnVisibility\n if (!autoplay) { autoplayHoverPause = autoplayResetOnVisibility = false; }\n\n if (arrowKeys !== arrowKeysTem) {\n arrowKeys ?\n addEvents(doc, docmentKeydownEvent) :\n removeEvents(doc, docmentKeydownEvent);\n }\n if (controls !== controlsTem) {\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n } else {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n if (nav !== navTem) {\n nav ?\n showElement(navContainer) :\n hideElement(navContainer);\n }\n if (touch !== touchTem) {\n touch ?\n addEvents(container, touchEvents, options.preventScrollOnTouch) :\n removeEvents(container, touchEvents);\n }\n if (mouseDrag !== mouseDragTem) {\n mouseDrag ?\n addEvents(container, dragEvents) :\n removeEvents(container, dragEvents);\n }\n if (autoplay !== autoplayTem) {\n if (autoplay) {\n if (autoplayButton) { showElement(autoplayButton); }\n if (!animating && !autoplayUserPaused) { startAutoplay(); }\n } else {\n if (autoplayButton) { hideElement(autoplayButton); }\n if (animating) { stopAutoplay(); }\n }\n }\n if (autoplayHoverPause !== autoplayHoverPauseTem) {\n autoplayHoverPause ?\n addEvents(container, hoverEvents) :\n removeEvents(container, hoverEvents);\n }\n if (autoplayResetOnVisibility !== autoplayResetOnVisibilityTem) {\n autoplayResetOnVisibility ?\n addEvents(doc, visibilityEvent) :\n removeEvents(doc, visibilityEvent);\n }\n\n if (bpChanged) {\n if (fixedWidth !== fixedWidthTem || center !== centerTem) { needContainerTransform = true; }\n\n if (autoHeight !== autoHeightTem) {\n if (!autoHeight) { innerWrapper.style.height = ''; }\n }\n\n if (controls && controlsText !== controlsTextTem) {\n prevButton.innerHTML = controlsText[0];\n nextButton.innerHTML = controlsText[1];\n }\n\n if (autoplayButton && autoplayText !== autoplayTextTem) {\n var i = autoplay ? 1 : 0,\n html = autoplayButton.innerHTML,\n len = html.length - autoplayTextTem[i].length;\n if (html.substring(len) === autoplayTextTem[i]) {\n autoplayButton.innerHTML = html.substring(0, len) + autoplayText[i];\n }\n }\n } else {\n if (center && (fixedWidth || autoWidth)) { needContainerTransform = true; }\n }\n\n if (itemsChanged || fixedWidth && !autoWidth) {\n pages = getPages();\n updateNavVisibility();\n }\n\n indChanged = index !== indexTem;\n if (indChanged) { \n events.emit('indexChanged', info());\n needContainerTransform = true;\n } else if (itemsChanged) {\n if (!indChanged) { additionalUpdates(); }\n } else if (fixedWidth || autoWidth) {\n doLazyLoad(); \n updateSlideStatus();\n updateLiveRegion();\n }\n\n if (itemsChanged && !carousel) { updateGallerySlidePositions(); }\n\n if (!disable && !freeze) {\n // non-meduaqueries: IE8\n if (bpChanged && !CSSMQ) {\n // middle wrapper styles\n if (autoHeight !== autoheightTem || speed !== speedTem) {\n update_carousel_transition_duration();\n }\n\n // inner wrapper styles\n if (edgePadding !== edgePaddingTem || gutter !== gutterTem) {\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, speed, autoHeight);\n }\n\n if (horizontal) {\n // container styles\n if (carousel) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = getSlideWidthStyle(fixedWidth, gutter, items) + \n getSlideGutterStyle(gutter);\n\n // remove the last line and\n // add new styles\n removeCSSRule(sheet, getCssRulesLength(sheet) - 1);\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n }\n }\n\n // auto height\n if (autoHeight) { doAutoHeight(); }\n\n if (needContainerTransform) {\n doContainerTransformSilent();\n indexCached = index;\n }\n }\n\n if (bpChanged) { events.emit('newBreakpointEnd', info(e)); }\n }\n\n\n\n\n\n // === INITIALIZATION FUNCTIONS === //\n function getFreeze () {\n if (!fixedWidth && !autoWidth) {\n var a = center ? items - (items - 1) / 2 : items;\n return slideCount <= a;\n }\n\n var width = fixedWidth ? (fixedWidth + gutter) * slideCount : slidePositions[slideCount],\n vp = edgePadding ? viewport + edgePadding * 2 : viewport + gutter;\n\n if (center) {\n vp -= fixedWidth ? (viewport - fixedWidth) / 2 : (viewport - (slidePositions[index + 1] - slidePositions[index] - gutter)) / 2;\n }\n\n return width <= vp;\n }\n\n function setBreakpointZone () {\n breakpointZone = 0;\n for (var bp in responsive) {\n bp = parseInt(bp); // convert string to number\n if (windowWidth >= bp) { breakpointZone = bp; }\n }\n }\n\n // (slideBy, indexMin, indexMax) => index\n var updateIndex = (function () {\n return loop ? \n carousel ?\n // loop + carousel\n function () {\n var leftEdge = indexMin,\n rightEdge = indexMax;\n\n leftEdge += slideBy;\n rightEdge -= slideBy;\n\n // adjust edges when has edge paddings\n // or fixed-width slider with extra space on the right side\n if (edgePadding) {\n leftEdge += 1;\n rightEdge -= 1;\n } else if (fixedWidth) {\n if ((viewport + gutter)%(fixedWidth + gutter)) { rightEdge -= 1; }\n }\n\n if (cloneCount) {\n if (index > rightEdge) {\n index -= slideCount;\n } else if (index < leftEdge) {\n index += slideCount;\n }\n }\n } :\n // loop + gallery\n function() {\n if (index > indexMax) {\n while (index >= indexMin + slideCount) { index -= slideCount; }\n } else if (index < indexMin) {\n while (index <= indexMax - slideCount) { index += slideCount; }\n }\n } :\n // non-loop\n function() {\n index = Math.max(indexMin, Math.min(indexMax, index));\n };\n })();\n\n function disableUI () {\n if (!autoplay && autoplayButton) { hideElement(autoplayButton); }\n if (!nav && navContainer) { hideElement(navContainer); }\n if (!controls) {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n\n function enableUI () {\n if (autoplay && autoplayButton) { showElement(autoplayButton); }\n if (nav && navContainer) { showElement(navContainer); }\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n }\n }\n\n function freezeSlider () {\n if (frozen) { return; }\n\n // remove edge padding from inner wrapper\n if (edgePadding) { innerWrapper.style.margin = '0px'; }\n\n // add class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { addClass(slideItems[i], str); }\n addClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n disableUI();\n\n frozen = true;\n }\n\n function unfreezeSlider () {\n if (!frozen) { return; }\n\n // restore edge padding for inner wrapper\n // for mordern browsers\n if (edgePadding && CSSMQ) { innerWrapper.style.margin = ''; }\n\n // remove class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { removeClass(slideItems[i], str); }\n removeClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n enableUI();\n\n frozen = false;\n }\n\n function disableSlider () {\n if (disabled) { return; }\n\n sheet.disabled = true;\n container.className = container.className.replace(newContainerClasses.substring(1), '');\n removeAttrs(container, ['style']);\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { hideElement(slideItems[j]); }\n hideElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // vertical slider\n if (!horizontal || !carousel) { removeAttrs(innerWrapper, ['style']); }\n\n // gallery\n if (!carousel) { \n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i];\n removeAttrs(item, ['style']);\n removeClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // update tools\n disableUI();\n\n disabled = true;\n }\n\n function enableSlider () {\n if (!disabled) { return; }\n\n sheet.disabled = false;\n container.className += newContainerClasses;\n doContainerTransformSilent();\n\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { showElement(slideItems[j]); }\n showElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // gallery\n if (!carousel) { \n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i],\n classN = i < index + items ? animateIn : animateNormal;\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, classN);\n }\n }\n\n // update tools\n enableUI();\n\n disabled = false;\n }\n\n function updateLiveRegion () {\n var str = getLiveRegionStr();\n if (liveregionCurrent.innerHTML !== str) { liveregionCurrent.innerHTML = str; }\n }\n\n function getLiveRegionStr () {\n var arr = getVisibleSlideRange(),\n start = arr[0] + 1,\n end = arr[1] + 1;\n return start === end ? start + '' : start + ' to ' + end; \n }\n\n function getVisibleSlideRange (val) {\n if (val == null) { val = getContainerTransformValue(); }\n var start = index, end, rangestart, rangeend;\n\n // get range start, range end for autoWidth and fixedWidth\n if (center || edgePadding) {\n if (autoWidth || fixedWidth) {\n rangestart = - (parseFloat(val) + edgePadding);\n rangeend = rangestart + viewport + edgePadding * 2;\n }\n } else {\n if (autoWidth) {\n rangestart = slidePositions[index];\n rangeend = rangestart + viewport;\n }\n }\n\n // get start, end\n // - check auto width\n if (autoWidth) {\n slidePositions.forEach(function(point, i) {\n if (i < slideCountNew) {\n if ((center || edgePadding) && point <= rangestart + 0.5) { start = i; }\n if (rangeend - point >= 0.5) { end = i; }\n }\n });\n\n // - check percentage width, fixed width\n } else {\n\n if (fixedWidth) {\n var cell = fixedWidth + gutter;\n if (center || edgePadding) {\n start = Math.floor(rangestart/cell);\n end = Math.ceil(rangeend/cell - 1);\n } else {\n end = start + Math.ceil(viewport/cell) - 1;\n }\n\n } else {\n if (center || edgePadding) {\n var a = items - 1;\n if (center) {\n start -= a / 2;\n end = index + a / 2;\n } else {\n end = index + a;\n }\n\n if (edgePadding) {\n var b = edgePadding * items / viewport;\n start -= b;\n end += b;\n }\n\n start = Math.floor(start);\n end = Math.ceil(end);\n } else {\n end = start + items - 1;\n }\n }\n\n start = Math.max(start, 0);\n end = Math.min(end, slideCountNew - 1);\n }\n\n return [start, end];\n }\n\n function doLazyLoad () {\n if (lazyload && !disable) {\n getImageArray.apply(null, getVisibleSlideRange()).forEach(function (img) {\n if (!hasClass(img, imgCompleteClass)) {\n // stop propagation transitionend event to container\n var eve = {};\n eve[TRANSITIONEND] = function (e) { e.stopPropagation(); };\n addEvents(img, eve);\n\n addEvents(img, imgEvents);\n\n // update src\n img.src = getAttr(img, 'data-src');\n\n // update srcset\n var srcset = getAttr(img, 'data-srcset');\n if (srcset) { img.srcset = srcset; }\n\n addClass(img, 'loading');\n }\n });\n }\n }\n\n function onImgLoaded (e) {\n imgLoaded(getTarget(e));\n }\n\n function onImgFailed (e) {\n imgFailed(getTarget(e));\n }\n\n function imgLoaded (img) {\n addClass(img, 'loaded');\n imgCompleted(img);\n }\n\n function imgFailed (img) {\n addClass(img, 'failed');\n imgCompleted(img);\n }\n\n function imgCompleted (img) {\n addClass(img, 'tns-complete');\n removeClass(img, 'loading');\n removeEvents(img, imgEvents);\n }\n\n function getImageArray (start, end) {\n var imgs = [];\n while (start <= end) {\n forEach(slideItems[start].querySelectorAll('img'), function (img) { imgs.push(img); });\n start++;\n }\n\n return imgs;\n }\n\n // check if all visible images are loaded\n // and update container height if it's done\n function doAutoHeight () {\n var imgs = getImageArray.apply(null, getVisibleSlideRange());\n raf(function(){ imgsLoadedCheck(imgs, updateInnerWrapperHeight); });\n }\n\n function imgsLoadedCheck (imgs, cb) {\n // directly execute callback function if all images are complete\n if (imgsComplete) { return cb(); }\n\n // check selected image classes otherwise\n imgs.forEach(function (img, index) {\n if (hasClass(img, imgCompleteClass)) { imgs.splice(index, 1); }\n });\n\n // execute callback function if selected images are all complete\n if (!imgs.length) { return cb(); }\n\n // otherwise execute this functiona again\n raf(function(){ imgsLoadedCheck(imgs, cb); });\n } \n\n function additionalUpdates () {\n doLazyLoad(); \n updateSlideStatus();\n updateLiveRegion();\n updateControlsStatus();\n updateNavStatus();\n }\n\n\n function update_carousel_transition_duration () {\n if (carousel && autoHeight) {\n middleWrapper.style[TRANSITIONDURATION] = speed / 1000 + 's';\n }\n }\n\n function getMaxSlideHeight (slideStart, slideRange) {\n var heights = [];\n for (var i = slideStart, l = Math.min(slideStart + slideRange, slideCountNew); i < l; i++) {\n heights.push(slideItems[i].offsetHeight);\n }\n\n return Math.max.apply(null, heights);\n }\n\n // update inner wrapper height\n // 1. get the max-height of the visible slides\n // 2. set transitionDuration to speed\n // 3. update inner wrapper height to max-height\n // 4. set transitionDuration to 0s after transition done\n function updateInnerWrapperHeight () {\n var maxHeight = autoHeight ? getMaxSlideHeight(index, items) : getMaxSlideHeight(cloneCount, slideCount),\n wp = middleWrapper ? middleWrapper : innerWrapper;\n\n if (wp.style.height !== maxHeight) { wp.style.height = maxHeight + 'px'; }\n }\n\n // get the distance from the top edge of the first slide to each slide\n // (init) => slidePositions\n function setSlidePositions () {\n slidePositions = [0];\n var attr = horizontal ? 'left' : 'top',\n attr2 = horizontal ? 'right' : 'bottom',\n base = slideItems[0].getBoundingClientRect()[attr];\n\n forEach(slideItems, function(item, i) {\n // skip the first slide\n if (i) { slidePositions.push(item.getBoundingClientRect()[attr] - base); }\n // add the end edge\n if (i === slideCountNew - 1) { slidePositions.push(item.getBoundingClientRect()[attr2] - base); }\n });\n }\n\n // update slide\n function updateSlideStatus () {\n var range = getVisibleSlideRange(),\n start = range[0],\n end = range[1];\n\n forEach(slideItems, function(item, i) {\n // show slides\n if (i >= start && i <= end) {\n if (hasAttr(item, 'aria-hidden')) {\n removeAttrs(item, ['aria-hidden', 'tabindex']);\n addClass(item, slideActiveClass);\n }\n // hide slides\n } else {\n if (!hasAttr(item, 'aria-hidden')) {\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n removeClass(item, slideActiveClass);\n }\n }\n });\n }\n\n // gallery: update slide position\n function updateGallerySlidePositions () {\n var l = index + Math.min(slideCount, items);\n for (var i = slideCountNew; i--;) {\n var item = slideItems[i];\n\n if (i >= index && i < l) {\n // add transitions to visible slides when adjusting their positions\n addClass(item, 'tns-moving');\n\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n } else if (item.style.left) {\n item.style.left = '';\n addClass(item, animateNormal);\n removeClass(item, animateIn);\n }\n\n // remove outlet animation\n removeClass(item, animateOut);\n }\n\n // removing '.tns-moving'\n setTimeout(function() {\n forEach(slideItems, function(el) {\n removeClass(el, 'tns-moving');\n });\n }, 300);\n }\n\n // set tabindex on Nav\n function updateNavStatus () {\n // get current nav\n if (nav) {\n navCurrentIndex = navClicked >= 0 ? navClicked : getCurrentNavIndex();\n navClicked = -1;\n\n if (navCurrentIndex !== navCurrentIndexCached) {\n var navPrev = navItems[navCurrentIndexCached],\n navCurrent = navItems[navCurrentIndex];\n\n setAttrs(navPrev, {\n 'tabindex': '-1',\n 'aria-label': navStr + (navCurrentIndexCached + 1)\n });\n removeClass(navPrev, navActiveClass);\n \n setAttrs(navCurrent, {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navCurrent, 'tabindex');\n addClass(navCurrent, navActiveClass);\n\n navCurrentIndexCached = navCurrentIndex;\n }\n }\n }\n\n function getLowerCaseNodeName (el) {\n return el.nodeName.toLowerCase();\n }\n\n function isButton (el) {\n return getLowerCaseNodeName(el) === 'button';\n }\n\n function isAriaDisabled (el) {\n return el.getAttribute('aria-disabled') === 'true';\n }\n\n function disEnableElement (isButton, el, val) {\n if (isButton) {\n el.disabled = val;\n } else {\n el.setAttribute('aria-disabled', val.toString());\n }\n }\n\n // set 'disabled' to true on controls when reach the edges\n function updateControlsStatus () {\n if (!controls || rewind || loop) { return; }\n\n var prevDisabled = (prevIsButton) ? prevButton.disabled : isAriaDisabled(prevButton),\n nextDisabled = (nextIsButton) ? nextButton.disabled : isAriaDisabled(nextButton),\n disablePrev = (index <= indexMin) ? true : false,\n disableNext = (!rewind && index >= indexMax) ? true : false;\n\n if (disablePrev && !prevDisabled) {\n disEnableElement(prevIsButton, prevButton, true);\n }\n if (!disablePrev && prevDisabled) {\n disEnableElement(prevIsButton, prevButton, false);\n }\n if (disableNext && !nextDisabled) {\n disEnableElement(nextIsButton, nextButton, true);\n }\n if (!disableNext && nextDisabled) {\n disEnableElement(nextIsButton, nextButton, false);\n }\n }\n\n // set duration\n function resetDuration (el, str) {\n if (TRANSITIONDURATION) { el.style[TRANSITIONDURATION] = str; }\n }\n\n function getSliderWidth () {\n return fixedWidth ? (fixedWidth + gutter) * slideCountNew : slidePositions[slideCountNew];\n }\n\n function getCenterGap (num) {\n if (num == null) { num = index; }\n\n var gap = edgePadding ? gutter : 0;\n return autoWidth ? ((viewport - gap) - (slidePositions[num + 1] - slidePositions[num] - gutter))/2 :\n fixedWidth ? (viewport - fixedWidth) / 2 :\n (items - 1) / 2;\n }\n\n function getRightBoundary () {\n var gap = edgePadding ? gutter : 0,\n result = (viewport + gap) - getSliderWidth();\n\n if (center && !loop) {\n result = fixedWidth ? - (fixedWidth + gutter) * (slideCountNew - 1) - getCenterGap() :\n getCenterGap(slideCountNew - 1) - slidePositions[slideCountNew - 1];\n }\n if (result > 0) { result = 0; }\n\n return result;\n }\n\n function getContainerTransformValue (num) {\n if (num == null) { num = index; }\n\n var val;\n if (horizontal && !autoWidth) {\n if (fixedWidth) {\n val = - (fixedWidth + gutter) * num;\n if (center) { val += getCenterGap(); }\n } else {\n var denominator = TRANSFORM ? slideCountNew : items;\n if (center) { num -= getCenterGap(); }\n val = - num * 100 / denominator;\n }\n } else {\n val = - slidePositions[num];\n if (center && autoWidth) {\n val += getCenterGap();\n }\n }\n\n if (hasRightDeadZone) { val = Math.max(val, rightBoundary); }\n\n val += (horizontal && !autoWidth && !fixedWidth) ? '%' : 'px';\n\n return val;\n }\n\n function doContainerTransformSilent (val) {\n resetDuration(container, '0s');\n doContainerTransform(val);\n }\n\n function doContainerTransform (val) {\n if (val == null) { val = getContainerTransformValue(); }\n container.style[transformAttr] = transformPrefix + val + transformPostfix;\n }\n\n function animateSlide (number, classOut, classIn, isOut) {\n var l = number + items;\n if (!loop) { l = Math.min(l, slideCountNew); }\n\n for (var i = number; i < l; i++) {\n var item = slideItems[i];\n\n // set item positions\n if (!isOut) { item.style.left = (i - index) * 100 / items + '%'; }\n\n if (animateDelay && TRANSITIONDELAY) {\n item.style[TRANSITIONDELAY] = item.style[ANIMATIONDELAY] = animateDelay * (i - number) / 1000 + 's';\n }\n removeClass(item, classOut);\n addClass(item, classIn);\n \n if (isOut) { slideItemsOut.push(item); }\n }\n }\n\n // make transfer after click/drag:\n // 1. change 'transform' property for mordern browsers\n // 2. change 'left' property for legacy browsers\n var transformCore = (function () {\n return carousel ?\n function () {\n resetDuration(container, '');\n if (TRANSITIONDURATION || !speed) {\n // for morden browsers with non-zero duration or \n // zero duration for all browsers\n doContainerTransform();\n // run fallback function manually \n // when duration is 0 / container is hidden\n if (!speed || !isVisible(container)) { onTransitionEnd(); }\n\n } else {\n // for old browser with non-zero duration\n jsTransform(container, transformAttr, transformPrefix, transformPostfix, getContainerTransformValue(), speed, onTransitionEnd);\n }\n\n if (!horizontal) { updateContentWrapperHeight(); }\n } :\n function () {\n slideItemsOut = [];\n\n var eve = {};\n eve[TRANSITIONEND] = eve[ANIMATIONEND] = onTransitionEnd;\n removeEvents(slideItems[indexCached], eve);\n addEvents(slideItems[index], eve);\n\n animateSlide(indexCached, animateIn, animateOut, true);\n animateSlide(index, animateNormal, animateIn);\n\n // run fallback function manually \n // when transition or animation not supported / duration is 0\n if (!TRANSITIONEND || !ANIMATIONEND || !speed || !isVisible(container)) { onTransitionEnd(); }\n };\n })();\n\n function render (e, sliderMoved) {\n if (updateIndexBeforeTransform) { updateIndex(); }\n\n // render when slider was moved (touch or drag) even though index may not change\n if (index !== indexCached || sliderMoved) {\n // events\n events.emit('indexChanged', info());\n events.emit('transitionStart', info());\n if (autoHeight) { doAutoHeight(); }\n\n // pause autoplay when click or keydown from user\n if (animating && e && ['click', 'keydown'].indexOf(e.type) >= 0) { stopAutoplay(); }\n\n running = true;\n transformCore();\n }\n }\n\n /*\n * Transfer prefixed properties to the same format\n * CSS: -Webkit-Transform => webkittransform\n * JS: WebkitTransform => webkittransform\n * @param {string} str - property\n *\n */\n function strTrans (str) {\n return str.toLowerCase().replace(/-/g, '');\n }\n\n // AFTER TRANSFORM\n // Things need to be done after a transfer:\n // 1. check index\n // 2. add classes to visible slide\n // 3. disable controls buttons when reach the first/last slide in non-loop slider\n // 4. update nav status\n // 5. lazyload images\n // 6. update container height\n function onTransitionEnd (event) {\n // check running on gallery mode\n // make sure trantionend/animationend events run only once\n if (carousel || running) {\n events.emit('transitionEnd', info(event));\n\n if (!carousel && slideItemsOut.length > 0) {\n for (var i = 0; i < slideItemsOut.length; i++) {\n var item = slideItemsOut[i];\n // set item positions\n item.style.left = '';\n\n if (ANIMATIONDELAY && TRANSITIONDELAY) { \n item.style[ANIMATIONDELAY] = '';\n item.style[TRANSITIONDELAY] = '';\n }\n removeClass(item, animateOut);\n addClass(item, animateNormal);\n }\n }\n\n /* update slides, nav, controls after checking ...\n * => legacy browsers who don't support 'event' \n * have to check event first, otherwise event.target will cause an error \n * => or 'gallery' mode: \n * + event target is slide item\n * => or 'carousel' mode: \n * + event target is container, \n * + event.property is the same with transform attribute\n */\n if (!event || \n !carousel && event.target.parentNode === container || \n event.target === container && strTrans(event.propertyName) === strTrans(transformAttr)) {\n\n if (!updateIndexBeforeTransform) { \n var indexTem = index;\n updateIndex();\n if (index !== indexTem) { \n events.emit('indexChanged', info());\n\n doContainerTransformSilent();\n }\n } \n\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n running = false;\n indexCached = index;\n }\n }\n\n }\n\n // # ACTIONS\n function goTo (targetIndex, e) {\n if (freeze) { return; }\n\n // prev slideBy\n if (targetIndex === 'prev') {\n onControlsClick(e, -1);\n\n // next slideBy\n } else if (targetIndex === 'next') {\n onControlsClick(e, 1);\n\n // go to exact slide\n } else {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n var absIndex = getAbsIndex(), \n indexGap = 0;\n\n if (targetIndex === 'first') {\n indexGap = - absIndex;\n } else if (targetIndex === 'last') {\n indexGap = carousel ? slideCount - items - absIndex : slideCount - 1 - absIndex;\n } else {\n if (typeof targetIndex !== 'number') { targetIndex = parseInt(targetIndex); }\n\n if (!isNaN(targetIndex)) {\n // from directly called goTo function\n if (!e) { targetIndex = Math.max(0, Math.min(slideCount - 1, targetIndex)); }\n\n indexGap = targetIndex - absIndex;\n }\n }\n\n // gallery: make sure new page won't overlap with current page\n if (!carousel && indexGap && Math.abs(indexGap) < items) {\n var factor = indexGap > 0 ? 1 : -1;\n indexGap += (index + indexGap - slideCount) >= indexMin ? slideCount * factor : slideCount * 2 * factor * -1;\n }\n\n index += indexGap;\n\n // make sure index is in range\n if (carousel && loop) {\n if (index < indexMin) { index += slideCount; }\n if (index > indexMax) { index -= slideCount; }\n }\n\n // if index is changed, start rendering\n if (getAbsIndex(index) !== getAbsIndex(indexCached)) {\n render(e);\n }\n\n }\n }\n\n // on controls click\n function onControlsClick (e, dir) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n var passEventObject;\n\n if (!dir) {\n e = getEvent(e);\n var target = getTarget(e);\n\n while (target !== controlsContainer && [prevButton, nextButton].indexOf(target) < 0) { target = target.parentNode; }\n\n var targetIn = [prevButton, nextButton].indexOf(target);\n if (targetIn >= 0) {\n passEventObject = true;\n dir = targetIn === 0 ? -1 : 1;\n }\n }\n\n if (rewind) {\n if (index === indexMin && dir === -1) {\n goTo('last', e);\n return;\n } else if (index === indexMax && dir === 1) {\n goTo('first', e);\n return;\n }\n }\n\n if (dir) {\n index += slideBy * dir;\n if (autoWidth) { index = Math.floor(index); }\n // pass e when click control buttons or keydown\n render((passEventObject || (e && e.type === 'keydown')) ? e : null);\n }\n }\n\n // on nav click\n function onNavClick (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n \n e = getEvent(e);\n var target = getTarget(e), navIndex;\n\n // find the clicked nav item\n while (target !== navContainer && !hasAttr(target, 'data-nav')) { target = target.parentNode; }\n if (hasAttr(target, 'data-nav')) {\n var navIndex = navClicked = Number(getAttr(target, 'data-nav')),\n targetIndexBase = fixedWidth || autoWidth ? navIndex * slideCount / pages : navIndex * items,\n targetIndex = navAsThumbnails ? navIndex : Math.min(Math.ceil(targetIndexBase), slideCount - 1);\n goTo(targetIndex, e);\n\n if (navCurrentIndex === navIndex) {\n if (animating) { stopAutoplay(); }\n navClicked = -1; // reset navClicked\n }\n }\n }\n\n // autoplay functions\n function setAutoplayTimer () {\n autoplayTimer = setInterval(function () {\n onControlsClick(null, autoplayDirection);\n }, autoplayTimeout);\n\n animating = true;\n }\n\n function stopAutoplayTimer () {\n clearInterval(autoplayTimer);\n animating = false;\n }\n\n function updateAutoplayButton (action, txt) {\n setAttrs(autoplayButton, {'data-action': action});\n autoplayButton.innerHTML = autoplayHtmlStrings[0] + action + autoplayHtmlStrings[1] + txt;\n }\n\n function startAutoplay () {\n setAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('stop', autoplayText[1]); }\n }\n\n function stopAutoplay () {\n stopAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('start', autoplayText[0]); }\n }\n\n // programaitcally play/pause the slider\n function play () {\n if (autoplay && !animating) {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n function pause () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n }\n }\n\n function toggleAutoplay () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n } else {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n\n function onVisibilityChange () {\n if (doc.hidden) {\n if (animating) {\n stopAutoplayTimer();\n autoplayVisibilityPaused = true;\n }\n } else if (autoplayVisibilityPaused) {\n setAutoplayTimer();\n autoplayVisibilityPaused = false;\n }\n }\n\n function mouseoverPause () {\n if (animating) { \n stopAutoplayTimer();\n autoplayHoverPaused = true;\n }\n }\n\n function mouseoutRestart () {\n if (autoplayHoverPaused) { \n setAutoplayTimer();\n autoplayHoverPaused = false;\n }\n }\n\n // keydown events on document \n function onDocumentKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n onControlsClick(e, keyIndex === 0 ? -1 : 1);\n }\n }\n\n // on key control\n function onControlsKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (!prevButton.disabled) { onControlsClick(e, -1); }\n } else if (!nextButton.disabled) {\n onControlsClick(e, 1);\n }\n }\n }\n\n // set focus\n function setFocus (el) {\n el.focus();\n }\n\n // on key nav\n function onNavKeydown (e) {\n e = getEvent(e);\n var curElement = doc.activeElement;\n if (!hasAttr(curElement, 'data-nav')) { return; }\n\n // var code = e.keyCode,\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT, KEYS.ENTER, KEYS.SPACE].indexOf(e.keyCode),\n navIndex = Number(getAttr(curElement, 'data-nav'));\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (navIndex > 0) { setFocus(navItems[navIndex - 1]); }\n } else if (keyIndex === 1) {\n if (navIndex < pages - 1) { setFocus(navItems[navIndex + 1]); }\n } else {\n navClicked = navIndex;\n goTo(navIndex, e);\n }\n }\n }\n\n function getEvent (e) {\n e = e || win.event;\n return isTouchEvent(e) ? e.changedTouches[0] : e;\n }\n function getTarget (e) {\n return e.target || win.event.srcElement;\n }\n\n function isTouchEvent (e) {\n return e.type.indexOf('touch') >= 0;\n }\n\n function preventDefaultBehavior (e) {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n }\n\n function getMoveDirectionExpected () {\n return getTouchDirection(toDegree(lastPosition.y - initPosition.y, lastPosition.x - initPosition.x), swipeAngle) === options.axis;\n }\n\n function onPanStart (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n if (autoplay && animating) { stopAutoplayTimer(); }\n \n panStart = true;\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n\n var $ = getEvent(e);\n events.emit(isTouchEvent(e) ? 'touchStart' : 'dragStart', info(e));\n\n if (!isTouchEvent(e) && ['img', 'a'].indexOf(getLowerCaseNodeName(getTarget(e))) >= 0) {\n preventDefaultBehavior(e);\n }\n\n lastPosition.x = initPosition.x = $.clientX;\n lastPosition.y = initPosition.y = $.clientY;\n if (carousel) {\n translateInit = parseFloat(container.style[transformAttr].replace(transformPrefix, ''));\n resetDuration(container, '0s');\n }\n }\n\n function onPanMove (e) {\n if (panStart) {\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n\n if (carousel) {\n if (!rafIndex) { rafIndex = raf(function(){ panUpdate(e); }); }\n } else {\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) { preventScroll = true; }\n }\n\n if (preventScroll) { e.preventDefault(); }\n }\n }\n\n function panUpdate (e) {\n if (!moveDirectionExpected) {\n panStart = false;\n return;\n }\n caf(rafIndex);\n if (panStart) { rafIndex = raf(function(){ panUpdate(e); }); }\n\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) {\n if (!preventScroll && isTouchEvent(e)) { preventScroll = true; }\n\n try {\n if (e.type) { events.emit(isTouchEvent(e) ? 'touchMove' : 'dragMove', info(e)); }\n } catch(err) {}\n\n var x = translateInit,\n dist = getDist(lastPosition, initPosition);\n if (!horizontal || fixedWidth || autoWidth) {\n x += dist;\n x += 'px';\n } else {\n var percentageX = TRANSFORM ? dist * items * 100 / ((viewport + gutter) * slideCountNew): dist * 100 / (viewport + gutter);\n x += percentageX;\n x += '%';\n }\n\n container.style[transformAttr] = transformPrefix + x + transformPostfix;\n }\n }\n\n function onPanEnd (e) {\n if (panStart) {\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n if (carousel) { resetDuration(container, ''); }\n panStart = false;\n\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n var dist = getDist(lastPosition, initPosition);\n\n if (Math.abs(dist)) {\n // drag vs click\n if (!isTouchEvent(e)) {\n // prevent \"click\"\n var target = getTarget(e);\n addEvents(target, {'click': function preventClick (e) {\n preventDefaultBehavior(e);\n removeEvents(target, {'click': preventClick});\n }}); \n }\n\n if (carousel) {\n rafIndex = raf(function() {\n if (horizontal && !autoWidth) {\n var indexMoved = - dist * items / (viewport + gutter);\n indexMoved = dist > 0 ? Math.floor(indexMoved) : Math.ceil(indexMoved);\n index += indexMoved;\n } else {\n var moved = - (translateInit + dist);\n if (moved <= 0) {\n index = indexMin;\n } else if (moved >= slidePositions[slideCountNew - 1]) {\n index = indexMax;\n } else {\n var i = 0;\n while (i < slideCountNew && moved >= slidePositions[i]) {\n index = i;\n if (moved > slidePositions[i] && dist < 0) { index += 1; }\n i++;\n }\n }\n }\n\n render(e, dist);\n events.emit(isTouchEvent(e) ? 'touchEnd' : 'dragEnd', info(e));\n });\n } else {\n if (moveDirectionExpected) {\n onControlsClick(e, dist > 0 ? -1 : 1);\n }\n }\n }\n }\n\n // reset\n if (options.preventScrollOnTouch === 'auto') { preventScroll = false; }\n if (swipeAngle) { moveDirectionExpected = '?'; } \n if (autoplay && !animating) { setAutoplayTimer(); }\n }\n\n // === RESIZE FUNCTIONS === //\n // (slidePositions, index, items) => vertical_conentWrapper.height\n function updateContentWrapperHeight () {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.style.height = slidePositions[index + items] - slidePositions[index] + 'px';\n }\n\n function getPages () {\n var rough = fixedWidth ? (fixedWidth + gutter) * slideCount / viewport : slideCount / items;\n return Math.min(Math.ceil(rough), slideCount);\n }\n\n /*\n * 1. update visible nav items list\n * 2. add \"hidden\" attributes to previous visible nav items\n * 3. remove \"hidden\" attrubutes to new visible nav items\n */\n function updateNavVisibility () {\n if (!nav || navAsThumbnails) { return; }\n\n if (pages !== pagesCached) {\n var min = pagesCached,\n max = pages,\n fn = showElement;\n\n if (pagesCached > pages) {\n min = pages;\n max = pagesCached;\n fn = hideElement;\n }\n\n while (min < max) {\n fn(navItems[min]);\n min++;\n }\n\n // cache pages\n pagesCached = pages;\n }\n }\n\n function info (e) {\n return {\n container: container,\n slideItems: slideItems,\n navContainer: navContainer,\n navItems: navItems,\n controlsContainer: controlsContainer,\n hasControls: hasControls,\n prevButton: prevButton,\n nextButton: nextButton,\n items: items,\n slideBy: slideBy,\n cloneCount: cloneCount,\n slideCount: slideCount,\n slideCountNew: slideCountNew,\n index: index,\n indexCached: indexCached,\n displayIndex: getCurrentSlide(),\n navCurrentIndex: navCurrentIndex,\n navCurrentIndexCached: navCurrentIndexCached,\n pages: pages,\n pagesCached: pagesCached,\n sheet: sheet,\n isOn: isOn,\n event: e || {},\n };\n }\n\n return {\n version: '2.9.2',\n getInfo: info,\n events: events,\n goTo: goTo,\n play: play,\n pause: pause,\n isOn: isOn,\n updateSliderHeight: updateInnerWrapperHeight,\n refresh: initSliderTransform,\n destroy: destroy,\n rebuild: function() {\n return tns(extend(options, optionsElements));\n }\n };\n};\n","export function getSlideId() {\n var id = window.tnsId;\n window.tnsId = !id ? 1 : id + 1;\n \n return 'tns' + window.tnsId;\n}","// get css-calc \n// @return - false | calc | -webkit-calc | -moz-calc\n// @usage - var calc = getCalc(); \nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function calc() {\n var doc = document, \n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'), \n result = false;\n\n body.appendChild(div);\n try {\n var str = '(10px * 10)',\n vals = ['calc' + str, '-moz-calc' + str, '-webkit-calc' + str],\n val;\n for (var i = 0; i < 3; i++) {\n val = vals[i];\n div.style.width = val;\n if (div.offsetWidth === 100) { \n result = val.replace(str, ''); \n break;\n }\n }\n } catch (e) {}\n \n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return result;\n}","// get subpixel support value\n// @return - boolean\nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function percentageLayout() {\n // check subpixel layout supporting\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n wrapper = doc.createElement('div'),\n outer = doc.createElement('div'),\n str = '',\n count = 70,\n perPage = 3,\n supported = false;\n\n wrapper.className = \"tns-t-subp2\";\n outer.className = \"tns-t-ct\";\n\n for (var i = 0; i < count; i++) {\n str += '
';\n }\n\n outer.innerHTML = str;\n wrapper.appendChild(outer);\n body.appendChild(wrapper);\n\n supported = Math.abs(wrapper.getBoundingClientRect().left - outer.children[count - perPage].getBoundingClientRect().left) < 2;\n\n body.fake ? resetFakeBody(body, docOverflow) : wrapper.remove();\n\n return supported;\n}","import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function mediaquerySupport () {\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'),\n style = doc.createElement('style'),\n rule = '@media all and (min-width:1px){.tns-mq-test{position:absolute}}',\n position;\n\n style.type = 'text/css';\n div.className = 'tns-mq-test';\n\n body.appendChild(style);\n body.appendChild(div);\n\n if (style.styleSheet) {\n style.styleSheet.cssText = rule;\n } else {\n style.appendChild(doc.createTextNode(rule));\n }\n\n position = window.getComputedStyle ? window.getComputedStyle(div).position : div.currentStyle['position'];\n\n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return position === \"absolute\";\n}","// create and append style sheet\nexport function createStyleSheet (media) {\n // Create the