{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/umbrellajs/umbrella.min.js","webpack:///./node_modules/@glidejs/glide/dist/glide.esm.js","webpack:///./node_modules/smoothscroll-polyfill/dist/smoothscroll.js","webpack:///./app/javascript/packs/application.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./node_modules/turbolinks/dist/turbolinks.js","webpack:///./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack:///./app/javascript/channels/index.js","webpack:///./app/javascript/channels sync _channel\\.js$","webpack:///./app/javascript/customs/index.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","u","e","this","select","nodeName","nodes","slice","length","addClass","eacharg","arguments","classList","add","adjacent","Array","join","split","map","Number","each","document","createDocumentFragment","generate","isInPage","appendChild","clone","first","after","parentNode","insertBefore","nextSibling","append","args","str","toString","filter","array","reduce","innerHTML","concat","attr","pairs","getAttribute","setAttribute","removeAttribute","before","children","cloneNode","getAll","mirror","events","_e","forEach","on","callback","is","textarea","closest","data","empty","firstChild","removeChild","indexOf","matches","msMatchesSelector","webkitMatchesSelector","find","test","createElement","html","createTextNode","handle","preventDefault","apply","hasClass","body","contains","last","unique","not","off","orig_callback","selector","removeEventListener","configurable","detail","currentTarget","target","addEventListener","push","param","keys","uri","parent","prepend","remove","removeClass","replace","replaceChild","scroll","scrollIntoView","behavior","querySelectorAll","serialize","elements","disabled","type","checked","options","selected","siblings","size","getBoundingClientRect","text","textContent","toggleClass","toggle","trigger","bubbles","cancelable","window","CustomEvent","createEvent","initCustomEvent","dispatchEvent","encodeURIComponent","wrap","firstElementChild","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","_typeof","obj","iterator","constructor","_classCallCheck","instance","Constructor","TypeError","_defineProperties","props","descriptor","writable","_createClass","protoProps","staticProps","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","_possibleConstructorReturn","self","ReferenceError","_assertThisInitialized","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","result","Super","NewTarget","_superPropBase","_get","receiver","base","desc","defaults","startAt","perView","focusAt","gap","autoplay","hoverpause","keyboard","bound","swipeThreshold","dragThreshold","perSwipe","touchRatio","touchAngle","animationDuration","rewind","rewindDuration","animationTimingFunc","waitForTransition","throttle","direction","peek","cloningRatio","breakpoints","classes","swipeable","dragging","ltr","rtl","slider","carousel","slide","active","arrow","nav","warn","msg","console","error","toInt","parseInt","isString","isObject","isFunction","isUndefined","isArray","mount","glide","extensions","components","_name","define","prop","definition","mergeOptions","settings","assign","EventsBus","undefined","hop","event","handler","index","context","emit","item","Glide$1","Glide","_c","_t","transformers","pattern","Run","make","distance","Transition","disable","Move","interval","_o","set","_i","_d","status","now","Date","getTime","func","wait","timeout","previous","later","leading","throttled","at","remaining","clearTimeout","trailing","setTimeout","cancel","MARGIN_TYPE","node","matched","nodeType","toArray","nodeList","EventsBinder","listeners","el","closure","capture","VALID_DIRECTIONS","FLIPED_MOVEMENTS","Rtl","Components","modify","translate","Direction","Gap","multiplier","Math","floor","Sizes","slideWidth","Gaps","Grow","Clones","grow","Peeking","Peek","Focusing","width","supportsPassive","opts","supportsPassive$1","START_EVENTS","MOVE_EVENTS","END_EVENTS","MOUSE_EVENTS","PREVIOUS_CONTROLS_SELECTOR","NEXT_CONTROLS_SELECTOR","sortBreakpoints","points","sort","k","COMPONENTS","Html","Events","root","track","querySelector","collectSlides","slides","wrapper","_r","Translate","transform","TRANSFORMERS","mutate","transformer","mutator","translate3d","style","mozTransform","webkitTransform","getStartIndex","isOffset","getTravelDistance","travelDistance","isType","movement","startWidth","compose","duration","transition","enable","offset","resolve","token","_v","setupSlides","setupWrapper","wrapperSize","offsetWidth","reductor","len","marginLeft","marginRight","_this","items","collect","_Glide$settings","peekIncrementer","cloneCount","round","reverse","max","_clone","unshift","_Components$Html","half","_i2","_i3","Resize","Binder","unbind","destroy","Build","typeClass","activeClass","sibling","removeClasses","_Glide$settings$class","move","calculate","isStart","isEnd","steps","viewSize","calculateForwardIndex","isBound","normalizeForwardIndex","_index","ceil","calculateBackwardIndex","normalizeBackwardIndex","_m","step","substr","Swipe","swipeSin","swipeStartX","swipeStartY","passive","bindSwipeStart","start","swipe","touches","pageX","pageY","bindSwipeMove","bindSwipeEnd","subExSx","subEySy","powEX","abs","powEY","swipeHypotenuse","sqrt","swipeCathetus","asin","PI","stopPropagation","parseFloat","end","_Glide$settings2","threshold","swipeDistance","swipeDeg","unbindSwipeMove","unbindSwipeEnd","_Glide$settings3","unbindSwipeStart","_this2","_this3","changedTouches","Images","dragstart","Anchors","detached","prevented","_a","click","detach","draggable","attach","Controls","_n","_arrowControls","next","addBindings","setActive","removeActive","controls","setArrowState","resetArrowState","disableArrow","_len","lists","_key","list","element","_len2","_key2","removeBindings","Keyboard","press","includes","code","ArrowRight","ArrowLeft","Autoplay","setInterval","stop","time","clearInterval","Breakpoints","match","matchMedia","point","_Core","subClass","superClass","_inherits","_super","polyfill","w","documentElement","__forceSmoothScrollPolyfill__","userAgent","Element","HTMLElement","original","scrollTo","scrollBy","elementScroll","scrollElement","performance","ROUNDING_TOLERANCE","navigator","RegExp","shouldBailOut","smoothScroll","left","scrollX","pageXOffset","top","scrollY","pageYOffset","scrollLeft","scrollTop","SyntaxError","scrollableParent","findScrollableParent","parentRects","clientRects","getComputedStyle","position","x","y","firstArg","hasScrollableSpace","axis","clientHeight","scrollHeight","clientWidth","scrollWidth","canOverflow","overflowValue","isScrollable","isScrollableY","isScrollableX","host","currentX","currentY","elapsed","startTime","cos","startX","startY","method","scrollable","requestAnimationFrame","require","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","ref","content","cspNonce","matchesSelector","mozMatchesSelector","oMatchesSelector","getData","setData","isContentEditable","isEditable","parentElement","$","csrfParam","csrfToken","meta","CSRFProtection","xhr","setRequestHeader","refreshCSRFTokens","input","fire","params","evt","Event","defaultPrevented","stopEverything","stopImmediatePropagation","delegate","eventType","AcceptHeaders","createXHR","prepareOptions","processResponse","xml","json","script","ajax","response","responseText","getResponseHeader","success","statusText","complete","beforeSend","readyState","XMLHttpRequest","OPENED","send","url","location","href","toUpperCase","dataType","accept","done","open","crossDomain","withCredentials","onreadystatechange","DONE","parser","JSON","parse","head","DOMParser","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","serializeElement","additionalParam","inputs","option","formElements","form","allowAction","handleConfirm","confirm","message","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","originalText","handleMethod","formContent","action","display","isRemote","handleRemote","button","enctype","FormData","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","metaKey","ctrlKey","jQuery","rails","Error","ajaxPrefilter","originalOptions","_rails_loaded","Turbolinks","supported","history","pushState","visit","controller","clearCache","setProgressBarDelay","copyObject","Node","ELEMENT_NODE","defer","dispatch","a","initEvent","uuid","random","Location","absoluteURL","hash","requestURL","anchor","getOrigin","getPath","getPathComponents","getLastPathComponent","getExtension","isHTML","isPrefixedBy","isEqualTo","toCacheKey","toJSON","HttpRequest","requestCanceled","requestTimedOut","requestFailed","requestLoaded","requestProgressed","referrer","NETWORK_FAILURE","TIMEOUT_FAILURE","sent","notifyApplicationBeforeRequestStart","setProgress","requestStarted","abort","lengthComputable","loaded","total","endRequest","requestCompletedWithResponse","failed","requestFailedWithStatusCode","notifyApplicationAfterRequestEnd","onprogress","onload","onerror","ontimeout","onabort","progress","requestFinished","ProgressBar","trickle","stylesheetElement","createStylesheetElement","progressElement","createProgressElement","defaultCSS","show","visible","installStylesheetElement","installProgressElement","startTrickling","hide","hiding","fadeProgressElement","uninstallProgressElement","stopTrickling","setValue","refresh","opacity","trickleInterval","className","BrowserAdapter","showProgressBar","progressBar","visitProposedToLocationWithAction","startVisitToLocationWithAction","visitStarted","issueRequest","changeHistory","loadCachedSnapshot","visitRequestStarted","hasCachedSnapshot","showProgressBarAfterDelay","visitRequestProgressed","visitRequestCompleted","loadResponse","visitRequestFailedWithStatusCode","reload","visitRequestFinished","hideProgressBar","visitCompleted","followRedirect","pageInvalidated","progressBarTimeout","progressBarDelay","History","onPageLoad","onPopState","started","update","shouldHandlePopState","state","turbolinks","restorationIdentifier","historyPoppedToLocationWithRestorationIdentifier","pageLoaded","pageIsLoaded","HeadDetails","outerHTML","tracked","fromHeadElement","childNodes","hasElementWithKey","getTrackedElementSignature","getScriptElementsNotInDetails","getElementsMatchingTypeNotInDetails","getStylesheetElementsNotInDetails","getProvisionalElements","getMetaValue","findMetaElementByName","tagName","toLowerCase","Snapshot","headDetails","bodyElement","fromHTMLString","fromHTMLElement","getRootLocation","getSetting","getCacheControlValue","getElementForAnchor","getPermanentElements","getPermanentElementById","getPermanentElementsPresentInSnapshot","id","findFirstAutofocusableElement","hasAnchor","isPreviewable","isCacheable","isVisitable","Renderer","render","renderView","viewWillRender","newBody","viewRendered","invalidateView","viewInvalidated","createScriptElement","async","attributes","__super__","SnapshotRenderer","currentSnapshot","newSnapshot","isPreview","currentHeadDetails","newHeadDetails","currentBody","shouldRender","mergeHead","replaceBody","focusFirstAutofocusableElement","copyNewHeadStylesheetElements","copyNewHeadScriptElements","removeCurrentHeadProvisionalElements","copyNewHeadProvisionalElements","relocateCurrentBodyPermanentElements","activateNewBodyScriptElements","assignNewBody","replacePlaceholderElementsWithClonedPermanentElements","trackedElementsAreIdentical","getNewHeadStylesheetElements","getNewHeadScriptElements","getCurrentHeadProvisionalElements","getNewHeadProvisionalElements","getCurrentBodyPermanentElements","permanentElement","getNewBodyScriptElements","focus","ErrorRenderer","newHead","replaceHeadAndBody","activateBodyScriptElements","getScriptElements","View","htmlElement","getSnapshot","snapshot","markAsPreview","renderSnapshot","renderError","ScrollManager","onScroll","scrollToElement","scrollToPosition","updatePosition","scrollPositionChanged","SnapshotCache","snapshots","has","read","touch","put","write","splice","trim","Visit","performScroll","identifier","adapter","timingMetrics","recordTimingMetric","request","cancelRender","fail","visitFailed","historyChanged","shouldIssueRequest","getCachedSnapshot","getCachedSnapshotForLocation","cacheSnapshot","visitRendered","redirectedToLocation","followedRedirect","replaceHistoryWithLocationAndRestorationIdentifier","scrolled","scrollToRestoredPosition","scrollToTop","scrollToAnchor","restorationData","scrollPosition","getTimingMetrics","snapshotCached","frame","cancelAnimationFrame","Controller","clickBubbled","clickCaptured","view","scrollManager","startHistory","enabled","stopHistory","cache","applicationAllowsVisitingLocation","locationIsVisitable","getRestorationDataForIdentifier","startVisit","pushHistoryWithLocationAndRestorationIdentifier","shouldCacheSnapshot","notifyApplicationBeforeCachingSnapshot","lastRenderedLocation","getCurrentRestorationData","notifyApplicationBeforeRender","currentVisit","notifyApplicationAfterRender","notifyApplicationAfterPageLoad","clickEventIsSignificant","getVisitableLinkForNode","getVisitableLocationForLink","applicationAllowsFollowingLinkToLocation","getActionForLink","notifyApplicationAfterClickingLinkToLocation","notifyApplicationBeforeVisitingLocation","notifyApplicationAfterVisitingLocation","timing","createVisit","which","altKey","shiftKey","nodeIsVisitable","currentScript","hasAttribute","sparkMd5","fn","createCommonjsModule","hex_chr","md5cycle","b","md5blk","md5blks","charCodeAt","md5blk_array","md51","tail","tmp","lo","hi","substring","rhex","j","hex","toUtf8","unescape","hexToBinaryString","bytes","String","fromCharCode","SparkMD5","reset","ArrayBuffer","clamp","val","min","from","to","num","targetArray","sourceArray","byteLength","begin","Uint8Array","appendBinary","contents","_buff","_length","_hash","raw","ret","buff","_finish","getState","setState","hashBinary","arr","second","returnUInt8Array","buffer","subarray","utf8Str2ArrayBuffer","md51_array","factory","classCallCheck","createClass","fileSlice","File","mozSlice","webkitSlice","FileChecksum","file","chunkSize","chunkCount","chunkIndex","md5Buffer","fileReader","FileReader","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","btoa","readAsArrayBuffer","findElement","eventInit","toArray$1","BlobRecord","checksum","filename","content_type","byte_size","responseType","requestDidLoad","requestDidError","stringify","blob","direct_upload","directUploadData","_xhr","BlobUpload","_blob$directUploadDat","headers","DirectUpload","notify","upload","methodName","messages","DirectUploadController","directUpload","hiddenInput","insertAdjacentElement","dispatchError","signed_id","alert","uploadRequestDidProgress","DirectUploadsController","files","controllers","createDirectUploadControllers","startNextController","shift","submitButtonsByForm","WeakMap","didClick","didSubmitForm","didSubmitRemoteElement","handleFormSubmissionEvent","delete","submitForm","ActiveStorage","channels","webpackEmptyContext","req","smoothscroll","dataCategories","categories","dataAllCategories","all_categories","$htmlBody","$html","$pageloader","$macbookContent","$macbookContentTitle","$macbookContentTags","$macbookContentImg","$macbookContentInfo","$macbookContentViewDetails","$currentShowImg","$nextShowImg","$dropdown","$dropdownTrigger","$dropdownTriggerButton","$dropdownItem","$glideContainer","$glide","$glideOverlay","$glideInfo","$glideInfoButtons","$glideInfoTitle","$glideInfoOverview","$glideInfoDescription","$glideInfoTags","$glideInfoBackShowcase","$navbar","$navbarMenu","$navbarBurger","$navbarItem","$navbarBrandItem","$navbarMenuItem","$navbarItemNotShowcase","$navbarItemShowcase","$navbarItemNotAbout","$navbarItemAbout","$navbarItemNotHome","$navbarItemHome","$recentWorks","$recentWorksHeroTitle","$recentWorksHeroSubtitle","$recentWorksHeroDropdown","$recentWorksHeroGlide","$footer","$footerHeroSocialIcons","$footerHeroQuote","$footerHeroContent","$about","$aboutHeroTitle","$aboutContent","$home","$homeHeroTitle","$homeHeroSubtitle","worksButtons","category_id","icon","worksButtonsIcons","worksButton","currentGlideCategoryId","currentGlideWorkId","slideLoading","onscroll","onresize","category","767","599","glideAfter","$activeSlide","_","activeImgSrc","activeCategoryId","activeWorkId","work","works_categories","work_category","work_id","tagNames","works_tags","work_tag","tag","categoryName","glideSlider","animate","allCategory","allCategoryNames","workCategories","workCategory","overview","description","$glideInfoLink","cloneGlideInfoLinks","cloneGlideInfoLink","site_url","dropdownButtons","getElementsByClassName","ev","blur","navbarItemsScroll","sectionHome","getElementById","sectionAbout","sectionShowcase","sectionFooter","sectionHomeTop","offsetTop","sectionAboutTop","sectionShowcaseTop","sectionFooterTop","height","innerHeight","windowScrollYWithOffset"],"mappings":"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","file":"js/application-8a57b3e514970b45f808.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 = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","/* Umbrella JS 3.3.2 umbrellajs.com */\n\nvar u = function (t, e) {\n return this instanceof u ? t instanceof u ? t : ((t = \"string\" == typeof t ? this.select(t, e) : t) && t.nodeName && (t = [t]), void (this.nodes = this.slice(t))) : new u(t, e);\n};\nu.prototype = {\n get length() {\n return this.nodes.length;\n }\n}, u.prototype.nodes = [], u.prototype.addClass = function () {\n return this.eacharg(arguments, function (t, e) {\n t.classList.add(e);\n });\n}, u.prototype.adjacent = function (o, t, i) {\n return \"number\" == typeof t && (t = 0 === t ? [] : new Array(t).join().split(\",\").map(Number.call, Number)), this.each(function (n, r) {\n var e = document.createDocumentFragment();\n u(t || {}).map(function (t, e) {\n e = \"function\" == typeof o ? o.call(this, t, e, n, r) : o;\n return \"string\" == typeof e ? this.generate(e) : u(e);\n }).each(function (t) {\n this.isInPage(t) ? e.appendChild(u(t).clone().first()) : e.appendChild(t);\n }), i.call(this, n, e);\n });\n}, u.prototype.after = function (t, e) {\n return this.adjacent(t, e, function (t, e) {\n t.parentNode.insertBefore(e, t.nextSibling);\n });\n}, u.prototype.append = function (t, e) {\n return this.adjacent(t, e, function (t, e) {\n t.appendChild(e);\n });\n}, u.prototype.args = function (t, e, n) {\n return (t = \"string\" != typeof (t = \"function\" == typeof t ? t(e, n) : t) ? this.slice(t).map(this.str(e, n)) : t).toString().split(/[\\s,]+/).filter(function (t) {\n return t.length;\n });\n}, u.prototype.array = function (o) {\n var i = this;\n return this.nodes.reduce(function (t, e, n) {\n var r;\n return o ? (r = \"string\" == typeof (r = (r = o.call(i, e, n)) || !1) ? u(r) : r) instanceof u && (r = r.nodes) : r = e.innerHTML, t.concat(!1 !== r ? r : []);\n }, []);\n}, u.prototype.attr = function (t, e, r) {\n return r = r ? \"data-\" : \"\", this.pairs(t, e, function (t, e) {\n return t.getAttribute(r + e);\n }, function (t, e, n) {\n n ? t.setAttribute(r + e, n) : t.removeAttribute(r + e);\n });\n}, u.prototype.before = function (t, e) {\n return this.adjacent(t, e, function (t, e) {\n t.parentNode.insertBefore(e, t);\n });\n}, u.prototype.children = function (t) {\n return this.map(function (t) {\n return this.slice(t.children);\n }).filter(t);\n}, u.prototype.clone = function () {\n return this.map(function (t, e) {\n var n = t.cloneNode(!0),\n r = this.getAll(n);\n return this.getAll(t).each(function (t, e) {\n for (var n in this.mirror) this.mirror[n] && this.mirror[n](t, r.nodes[e]);\n }), n;\n });\n}, u.prototype.getAll = function (t) {\n return u([t].concat(u(\"*\", t).nodes));\n}, u.prototype.mirror = {}, u.prototype.mirror.events = function (t, e) {\n if (t._e) for (var n in t._e) t._e[n].forEach(function (t) {\n u(e).on(n, t.callback);\n });\n}, u.prototype.mirror.select = function (t, e) {\n u(t).is(\"select\") && (e.value = t.value);\n}, u.prototype.mirror.textarea = function (t, e) {\n u(t).is(\"textarea\") && (e.value = t.value);\n}, u.prototype.closest = function (e) {\n return this.map(function (t) {\n do {\n if (u(t).is(e)) return t;\n } while ((t = t.parentNode) && t !== document);\n });\n}, u.prototype.data = function (t, e) {\n return this.attr(t, e, !0);\n}, u.prototype.each = function (t) {\n return this.nodes.forEach(t.bind(this)), this;\n}, u.prototype.eacharg = function (n, r) {\n return this.each(function (e, t) {\n this.args(n, e, t).forEach(function (t) {\n r.call(this, e, t);\n }, this);\n });\n}, u.prototype.empty = function () {\n return this.each(function (t) {\n for (; t.firstChild;) t.removeChild(t.firstChild);\n });\n}, u.prototype.filter = function (e) {\n var t = e instanceof u ? function (t) {\n return -1 !== e.nodes.indexOf(t);\n } : \"function\" == typeof e ? e : function (t) {\n return t.matches = t.matches || t.msMatchesSelector || t.webkitMatchesSelector, t.matches(e || \"*\");\n };\n return u(this.nodes.filter(t));\n}, u.prototype.find = function (e) {\n return this.map(function (t) {\n return u(e || \"*\", t);\n });\n}, u.prototype.first = function () {\n return this.nodes[0] || !1;\n}, u.prototype.generate = function (t) {\n return /^\\s* ]/.test(t) ? u(document.createElement(\"table\")).html(t).children().children().nodes : /^\\s* ]/.test(t) ? u(document.createElement(\"table\")).html(t).children().children().children().nodes : /^\\s* 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck(this, EventsBus);\n this.events = events;\n this.hop = events.hasOwnProperty;\n }\n /**\n * Adds listener to the specifed event.\n *\n * @param {String|Array} event\n * @param {Function} handler\n */\n\n _createClass(EventsBus, [{\n key: \"on\",\n value: function on(event, handler) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.on(event[i], handler);\n }\n return;\n } // Create the event's object if not yet created\n\n if (!this.hop.call(this.events, event)) {\n this.events[event] = [];\n } // Add the handler to queue\n\n var index = this.events[event].push(handler) - 1; // Provide handle back for removal of event\n\n return {\n remove: function remove() {\n delete this.events[event][index];\n }\n };\n }\n /**\n * Runs registered handlers for specified event.\n *\n * @param {String|Array} event\n * @param {Object=} context\n */\n }, {\n key: \"emit\",\n value: function emit(event, context) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.emit(event[i], context);\n }\n return;\n } // If the event doesn't exist, or there's no handlers in queue, just leave\n\n if (!this.hop.call(this.events, event)) {\n return;\n } // Cycle through events queue, fire!\n\n this.events[event].forEach(function (item) {\n item(context || {});\n });\n }\n }]);\n return EventsBus;\n}();\nvar Glide$1 = /*#__PURE__*/function () {\n /**\r\n * Construct glide.\r\n *\r\n * @param {String} selector\r\n * @param {Object} options\r\n */\n function Glide(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Glide);\n this._c = {};\n this._t = [];\n this._e = new EventsBus();\n this.disabled = false;\n this.selector = selector;\n this.settings = mergeOptions(defaults, options);\n this.index = this.settings.startAt;\n }\n /**\r\n * Initializes glide.\r\n *\r\n * @param {Object} extensions Collection of extensions to initialize.\r\n * @return {Glide}\r\n */\n\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount$1() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this._e.emit('mount.before');\n if (isObject(extensions)) {\n this._c = mount(this, extensions, this._e);\n } else {\n warn('You need to provide a object on `mount()`');\n }\n this._e.emit('mount.after');\n return this;\n }\n /**\r\n * Collects an instance `translate` transformers.\r\n *\r\n * @param {Array} transformers Collection of transformers.\r\n * @return {Void}\r\n */\n }, {\n key: \"mutate\",\n value: function mutate() {\n var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n if (isArray(transformers)) {\n this._t = transformers;\n } else {\n warn('You need to provide a array on `mutate()`');\n }\n return this;\n }\n /**\r\n * Updates glide with specified settings.\r\n *\r\n * @param {Object} settings\r\n * @return {Glide}\r\n */\n }, {\n key: \"update\",\n value: function update() {\n var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.settings = mergeOptions(this.settings, settings);\n if (settings.hasOwnProperty('startAt')) {\n this.index = settings.startAt;\n }\n this._e.emit('update');\n return this;\n }\n /**\r\n * Change slide with specified pattern. A pattern must be in the special format:\r\n * `>` - Move one forward\r\n * `<` - Move one backward\r\n * `={i}` - Go to {i} zero-based slide (eq. '=1', will go to second slide)\r\n * `>>` - Rewinds to end (last slide)\r\n * `<<` - Rewinds to start (first slide)\r\n * `|>` - Move one viewport forward\r\n * `|<` - Move one viewport backward\r\n *\r\n * @param {String} pattern\r\n * @return {Glide}\r\n */\n }, {\n key: \"go\",\n value: function go(pattern) {\n this._c.Run.make(pattern);\n return this;\n }\n /**\r\n * Move track by specified distance.\r\n *\r\n * @param {String} distance\r\n * @return {Glide}\r\n */\n }, {\n key: \"move\",\n value: function move(distance) {\n this._c.Transition.disable();\n this._c.Move.make(distance);\n return this;\n }\n /**\r\n * Destroy instance and revert all changes done by this._c.\r\n *\r\n * @return {Glide}\r\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n this._e.emit('destroy');\n return this;\n }\n /**\r\n * Start instance autoplaying.\r\n *\r\n * @param {Boolean|Number} interval Run autoplaying with passed interval regardless of `autoplay` settings\r\n * @return {Glide}\r\n */\n }, {\n key: \"play\",\n value: function play() {\n var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n if (interval) {\n this.settings.autoplay = interval;\n }\n this._e.emit('play');\n return this;\n }\n /**\r\n * Stop instance autoplaying.\r\n *\r\n * @return {Glide}\r\n */\n }, {\n key: \"pause\",\n value: function pause() {\n this._e.emit('pause');\n return this;\n }\n /**\r\n * Sets glide into a idle status.\r\n *\r\n * @return {Glide}\r\n */\n }, {\n key: \"disable\",\n value: function disable() {\n this.disabled = true;\n return this;\n }\n /**\r\n * Sets glide into a active status.\r\n *\r\n * @return {Glide}\r\n */\n }, {\n key: \"enable\",\n value: function enable() {\n this.disabled = false;\n return this;\n }\n /**\r\n * Adds cuutom event listener with handler.\r\n *\r\n * @param {String|Array} event\r\n * @param {Function} handler\r\n * @return {Glide}\r\n */\n }, {\n key: \"on\",\n value: function on(event, handler) {\n this._e.on(event, handler);\n return this;\n }\n /**\r\n * Checks if glide is a precised type.\r\n *\r\n * @param {String} name\r\n * @return {Boolean}\r\n */\n }, {\n key: \"isType\",\n value: function isType(name) {\n return this.settings.type === name;\n }\n /**\r\n * Gets value of the core options.\r\n *\r\n * @return {Object}\r\n */\n }, {\n key: \"settings\",\n get: function get() {\n return this._o;\n }\n /**\r\n * Sets value of the core options.\r\n *\r\n * @param {Object} o\r\n * @return {Void}\r\n */,\n\n set: function set(o) {\n if (isObject(o)) {\n this._o = o;\n } else {\n warn('Options must be an `object` instance.');\n }\n }\n /**\r\n * Gets current index of the slider.\r\n *\r\n * @return {Object}\r\n */\n }, {\n key: \"index\",\n get: function get() {\n return this._i;\n }\n /**\r\n * Sets current index a slider.\r\n *\r\n * @return {Object}\r\n */,\n\n set: function set(i) {\n this._i = toInt(i);\n }\n /**\r\n * Gets type name of the slider.\r\n *\r\n * @return {String}\r\n */\n }, {\n key: \"type\",\n get: function get() {\n return this.settings.type;\n }\n /**\r\n * Gets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n }, {\n key: \"disabled\",\n get: function get() {\n return this._d;\n }\n /**\r\n * Sets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */,\n\n set: function set(status) {\n this._d = !!status;\n }\n }]);\n return Glide;\n}();\nfunction Run(Glide, Components, Events) {\n var Run = {\n /**\n * Initializes autorunning of the glide.\n *\n * @return {Void}\n */\n mount: function mount() {\n this._o = false;\n },\n /**\n * Makes glides running based on the passed moving schema.\n *\n * @param {String} move\n */\n make: function make(move) {\n var _this = this;\n if (!Glide.disabled) {\n !Glide.settings.waitForTransition || Glide.disable();\n this.move = move;\n Events.emit('run.before', this.move);\n this.calculate();\n Events.emit('run', this.move);\n Components.Transition.after(function () {\n if (_this.isStart()) {\n Events.emit('run.start', _this.move);\n }\n if (_this.isEnd()) {\n Events.emit('run.end', _this.move);\n }\n if (_this.isOffset()) {\n _this._o = false;\n Events.emit('run.offset', _this.move);\n }\n Events.emit('run.after', _this.move);\n Glide.enable();\n });\n }\n },\n /**\n * Calculates current index based on defined move.\n *\n * @return {Number|Undefined}\n */\n calculate: function calculate() {\n var move = this.move,\n length = this.length;\n var steps = move.steps,\n direction = move.direction; // By default assume that size of view is equal to one slide\n\n var viewSize = 1; // While direction is `=` we want jump to\n // a specified index described in steps.\n\n if (direction === '=') {\n // Check if bound is true, \n // as we want to avoid whitespaces.\n if (Glide.settings.bound && toInt(steps) > length) {\n Glide.index = length;\n return;\n }\n Glide.index = steps;\n return;\n } // When pattern is equal to `>>` we want\n // fast forward to the last slide.\n\n if (direction === '>' && steps === '>') {\n Glide.index = length;\n return;\n } // When pattern is equal to `<<` we want\n // fast forward to the first slide.\n\n if (direction === '<' && steps === '<') {\n Glide.index = 0;\n return;\n } // pagination movement\n\n if (direction === '|') {\n viewSize = Glide.settings.perView || 1;\n } // we are moving forward\n\n if (direction === '>' || direction === '|' && steps === '>') {\n var index = calculateForwardIndex(viewSize);\n if (index > length) {\n this._o = true;\n }\n Glide.index = normalizeForwardIndex(index, viewSize);\n return;\n } // we are moving backward\n\n if (direction === '<' || direction === '|' && steps === '<') {\n var _index = calculateBackwardIndex(viewSize);\n if (_index < 0) {\n this._o = true;\n }\n Glide.index = normalizeBackwardIndex(_index, viewSize);\n return;\n }\n warn(\"Invalid direction pattern [\".concat(direction).concat(steps, \"] has been used\"));\n },\n /**\n * Checks if we are on the first slide.\n *\n * @return {Boolean}\n */\n isStart: function isStart() {\n return Glide.index <= 0;\n },\n /**\n * Checks if we are on the last slide.\n *\n * @return {Boolean}\n */\n isEnd: function isEnd() {\n return Glide.index >= this.length;\n },\n /**\n * Checks if we are making a offset run.\n *\n * @param {String} direction\n * @return {Boolean}\n */\n isOffset: function isOffset() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n if (!direction) {\n return this._o;\n }\n if (!this._o) {\n return false;\n } // did we view to the right?\n\n if (direction === '|>') {\n return this.move.direction === '|' && this.move.steps === '>';\n } // did we view to the left?\n\n if (direction === '|<') {\n return this.move.direction === '|' && this.move.steps === '<';\n }\n return this.move.direction === direction;\n },\n /**\n * Checks if bound mode is active\n *\n * @return {Boolean}\n */\n isBound: function isBound() {\n return Glide.isType('slider') && Glide.settings.focusAt !== 'center' && Glide.settings.bound;\n }\n };\n /**\n * Returns index value to move forward/to the right\n *\n * @param viewSize\n * @returns {Number}\n */\n\n function calculateForwardIndex(viewSize) {\n var index = Glide.index;\n if (Glide.isType('carousel')) {\n return index + viewSize;\n }\n return index + (viewSize - index % viewSize);\n }\n /**\n * Normalizes the given forward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {Number}\n */\n\n function normalizeForwardIndex(index, viewSize) {\n var length = Run.length;\n if (index <= length) {\n return index;\n }\n if (Glide.isType('carousel')) {\n return index - (length + 1);\n }\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on the last possible index value given by bound\n if (Run.isBound() && !Run.isEnd()) {\n return length;\n }\n return 0;\n }\n if (Run.isBound()) {\n return length;\n }\n return Math.floor(length / viewSize) * viewSize;\n }\n /**\n * Calculates index value to move backward/to the left\n *\n * @param viewSize\n * @returns {Number}\n */\n\n function calculateBackwardIndex(viewSize) {\n var index = Glide.index;\n if (Glide.isType('carousel')) {\n return index - viewSize;\n } // ensure our back navigation results in the same index as a forward navigation\n // to experience a homogeneous paging\n\n var view = Math.ceil(index / viewSize);\n return (view - 1) * viewSize;\n }\n /**\n * Normalizes the given backward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {*}\n */\n\n function normalizeBackwardIndex(index, viewSize) {\n var length = Run.length;\n if (index >= 0) {\n return index;\n }\n if (Glide.isType('carousel')) {\n return index + (length + 1);\n }\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on first possible index value before we to rewind to the length given by bound\n if (Run.isBound() && Run.isStart()) {\n return length;\n }\n return Math.floor(length / viewSize) * viewSize;\n }\n return 0;\n }\n define(Run, 'move', {\n /**\n * Gets value of the move schema.\n *\n * @returns {Object}\n */\n get: function get() {\n return this._m;\n },\n /**\n * Sets value of the move schema.\n *\n * @returns {Object}\n */\n set: function set(value) {\n var step = value.substr(1);\n this._m = {\n direction: value.substr(0, 1),\n steps: step ? toInt(step) ? toInt(step) : step : 0\n };\n }\n });\n define(Run, 'length', {\n /**\n * Gets value of the running distance based\n * on zero-indexing number of slides.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n var length = Components.Html.slides.length; // If the `bound` option is active, a maximum running distance should be\n // reduced by `perView` and `focusAt` settings. Running distance\n // should end before creating an empty space after instance.\n\n if (this.isBound()) {\n return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);\n }\n return length - 1;\n }\n });\n define(Run, 'offset', {\n /**\n * Gets status of the offsetting flag.\n *\n * @return {Boolean}\n */\n get: function get() {\n return this._o;\n }\n });\n return Run;\n}\n\n/**\n * Returns a current time.\n *\n * @return {Number}\n */\nfunction now() {\n return new Date().getTime();\n}\n\n/**\n * Returns a function, that, when invoked, will only be triggered\n * at most once during a given window of time.\n *\n * @param {Function} func\n * @param {Number} wait\n * @param {Object=} options\n * @return {Function}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\nfunction throttle(func, wait) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var timeout, context, args, result;\n var previous = 0;\n var later = function later() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n var throttled = function throttled() {\n var at = now();\n if (!previous && options.leading === false) previous = at;\n var remaining = wait - (at - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = at;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n return throttled;\n}\nvar MARGIN_TYPE = {\n ltr: ['marginLeft', 'marginRight'],\n rtl: ['marginRight', 'marginLeft']\n};\nfunction Gaps(Glide, Components, Events) {\n var Gaps = {\n /**\n * Applies gaps between slides. First and last\n * slides do not receive it's edge margins.\n *\n * @param {HTMLCollection} slides\n * @return {Void}\n */\n apply: function apply(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n var direction = Components.Direction.value;\n if (i !== 0) {\n style[MARGIN_TYPE[direction][0]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][0]] = '';\n }\n if (i !== slides.length - 1) {\n style[MARGIN_TYPE[direction][1]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][1]] = '';\n }\n }\n },\n /**\n * Removes gaps from the slides.\n *\n * @param {HTMLCollection} slides\n * @returns {Void}\n */\n remove: function remove(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n style.marginLeft = '';\n style.marginRight = '';\n }\n }\n };\n define(Gaps, 'value', {\n /**\n * Gets value of the gap.\n *\n * @returns {Number}\n */\n get: function get() {\n return toInt(Glide.settings.gap);\n }\n });\n define(Gaps, 'grow', {\n /**\n * Gets additional dimensions value caused by gaps.\n * Used to increase width of the slides wrapper.\n *\n * @returns {Number}\n */\n get: function get() {\n return Gaps.value * Components.Sizes.length;\n }\n });\n define(Gaps, 'reductor', {\n /**\n * Gets reduction value caused by gaps.\n * Used to subtract width of the slides.\n *\n * @returns {Number}\n */\n get: function get() {\n var perView = Glide.settings.perView;\n return Gaps.value * (perView - 1) / perView;\n }\n });\n /**\n * Apply calculated gaps:\n * - after building, so slides (including clones) will receive proper margins\n * - on updating via API, to recalculate gaps with new options\n */\n\n Events.on(['build.after', 'update'], throttle(function () {\n Gaps.apply(Components.Html.wrapper.children);\n }, 30));\n /**\n * Remove gaps:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Gaps.remove(Components.Html.wrapper.children);\n });\n return Gaps;\n}\n\n/**\n * Finds siblings nodes of the passed node.\n *\n * @param {Element} node\n * @return {Array}\n */\nfunction siblings(node) {\n if (node && node.parentNode) {\n var n = node.parentNode.firstChild;\n var matched = [];\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== node) {\n matched.push(n);\n }\n }\n return matched;\n }\n return [];\n}\n/**\n * Coerces a NodeList to an Array.\n *\n * @param {NodeList} nodeList\n * @return {Array}\n */\n\nfunction toArray(nodeList) {\n return Array.prototype.slice.call(nodeList);\n}\nvar TRACK_SELECTOR = '[data-glide-el=\"track\"]';\nfunction Html(Glide, Components, Events) {\n var Html = {\n /**\n * Setup slider HTML nodes.\n *\n * @param {Glide} glide\n */\n mount: function mount() {\n this.root = Glide.selector;\n this.track = this.root.querySelector(TRACK_SELECTOR);\n this.collectSlides();\n },\n /**\n * Collect slides\n */\n collectSlides: function collectSlides() {\n this.slides = toArray(this.wrapper.children).filter(function (slide) {\n return !slide.classList.contains(Glide.settings.classes.slide.clone);\n });\n }\n };\n define(Html, 'root', {\n /**\n * Gets node of the glide main element.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._r;\n },\n /**\n * Sets node of the glide main element.\n *\n * @return {Object}\n */\n set: function set(r) {\n if (isString(r)) {\n r = document.querySelector(r);\n }\n if (r !== null) {\n Html._r = r;\n } else {\n warn('Root element must be a existing Html node');\n }\n }\n });\n define(Html, 'track', {\n /**\n * Gets node of the glide track with slides.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._t;\n },\n /**\n * Sets node of the glide track with slides.\n *\n * @return {Object}\n */\n set: function set(t) {\n Html._t = t;\n }\n });\n define(Html, 'wrapper', {\n /**\n * Gets node of the slides wrapper.\n *\n * @return {Object}\n */\n get: function get() {\n return Html.track.children[0];\n }\n });\n /**\n * Add/remove/reorder dynamic slides\n */\n\n Events.on('update', function () {\n Html.collectSlides();\n });\n return Html;\n}\nfunction Peek(Glide, Components, Events) {\n var Peek = {\n /**\n * Setups how much to peek based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.peek;\n }\n };\n define(Peek, 'value', {\n /**\n * Gets value of the peek.\n *\n * @returns {Number|Object}\n */\n get: function get() {\n return Peek._v;\n },\n /**\n * Sets value of the peek.\n *\n * @param {Number|Object} value\n * @return {Void}\n */\n set: function set(value) {\n if (isObject(value)) {\n value.before = toInt(value.before);\n value.after = toInt(value.after);\n } else {\n value = toInt(value);\n }\n Peek._v = value;\n }\n });\n define(Peek, 'reductor', {\n /**\n * Gets reduction value caused by peek.\n *\n * @returns {Number}\n */\n get: function get() {\n var value = Peek.value;\n var perView = Glide.settings.perView;\n if (isObject(value)) {\n return value.before / perView + value.after / perView;\n }\n return value * 2 / perView;\n }\n });\n /**\n * Recalculate peeking sizes on:\n * - when resizing window to update to proper percents\n */\n\n Events.on(['resize', 'update'], function () {\n Peek.mount();\n });\n return Peek;\n}\nfunction Move(Glide, Components, Events) {\n var Move = {\n /**\n * Constructs move component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n this._o = 0;\n },\n /**\n * Calculates a movement value based on passed offset and currently active index.\n *\n * @param {Number} offset\n * @return {Void}\n */\n make: function make() {\n var _this = this;\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n this.offset = offset;\n Events.emit('move', {\n movement: this.value\n });\n Components.Transition.after(function () {\n Events.emit('move.after', {\n movement: _this.value\n });\n });\n }\n };\n define(Move, 'offset', {\n /**\n * Gets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n get: function get() {\n return Move._o;\n },\n /**\n * Sets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n set: function set(value) {\n Move._o = !isUndefined(value) ? toInt(value) : 0;\n }\n });\n define(Move, 'translate', {\n /**\n * Gets a raw movement value.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Sizes.slideWidth * Glide.index;\n }\n });\n define(Move, 'value', {\n /**\n * Gets an actual movement value corrected by offset.\n *\n * @return {Number}\n */\n get: function get() {\n var offset = this.offset;\n var translate = this.translate;\n if (Components.Direction.is('rtl')) {\n return translate + offset;\n }\n return translate - offset;\n }\n });\n /**\n * Make movement to proper slide on:\n * - before build, so glide will start at `startAt` index\n * - on each standard run to move to newly calculated index\n */\n\n Events.on(['build.before', 'run'], function () {\n Move.make();\n });\n return Move;\n}\nfunction Sizes(Glide, Components, Events) {\n var Sizes = {\n /**\n * Setups dimensions of slides.\n *\n * @return {Void}\n */\n setupSlides: function setupSlides() {\n var width = \"\".concat(this.slideWidth, \"px\");\n var slides = Components.Html.slides;\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = width;\n }\n },\n /**\n * Setups dimensions of slides wrapper.\n *\n * @return {Void}\n */\n setupWrapper: function setupWrapper() {\n Components.Html.wrapper.style.width = \"\".concat(this.wrapperSize, \"px\");\n },\n /**\n * Removes applied styles from HTML elements.\n *\n * @returns {Void}\n */\n remove: function remove() {\n var slides = Components.Html.slides;\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = '';\n }\n Components.Html.wrapper.style.width = '';\n }\n };\n define(Sizes, 'length', {\n /**\n * Gets count number of the slides.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.slides.length;\n }\n });\n define(Sizes, 'width', {\n /**\n * Gets width value of the slider (visible area).\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.track.offsetWidth;\n }\n });\n define(Sizes, 'wrapperSize', {\n /**\n * Gets size of the slides wrapper.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.slideWidth * Sizes.length + Components.Gaps.grow + Components.Clones.grow;\n }\n });\n define(Sizes, 'slideWidth', {\n /**\n * Gets width value of a single slide.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n }\n });\n /**\n * Apply calculated glide's dimensions:\n * - before building, so other dimensions (e.g. translate) will be calculated propertly\n * - when resizing window to recalculate sildes dimensions\n * - on updating via API, to calculate dimensions based on new options\n */\n\n Events.on(['build.before', 'resize', 'update'], function () {\n Sizes.setupSlides();\n Sizes.setupWrapper();\n });\n /**\n * Remove calculated glide's dimensions:\n * - on destoting to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Sizes.remove();\n });\n return Sizes;\n}\nfunction Build(Glide, Components, Events) {\n var Build = {\n /**\n * Init glide building. Adds classes, sets\n * dimensions and setups initial state.\n *\n * @return {Void}\n */\n mount: function mount() {\n Events.emit('build.before');\n this.typeClass();\n this.activeClass();\n Events.emit('build.after');\n },\n /**\n * Adds `type` class to the glide element.\n *\n * @return {Void}\n */\n typeClass: function typeClass() {\n Components.Html.root.classList.add(Glide.settings.classes.type[Glide.settings.type]);\n },\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n activeClass: function activeClass() {\n var classes = Glide.settings.classes;\n var slide = Components.Html.slides[Glide.index];\n if (slide) {\n slide.classList.add(classes.slide.active);\n siblings(slide).forEach(function (sibling) {\n sibling.classList.remove(classes.slide.active);\n });\n }\n },\n /**\n * Removes HTML classes applied at building.\n *\n * @return {Void}\n */\n removeClasses: function removeClasses() {\n var _Glide$settings$class = Glide.settings.classes,\n type = _Glide$settings$class.type,\n slide = _Glide$settings$class.slide;\n Components.Html.root.classList.remove(type[Glide.settings.type]);\n Components.Html.slides.forEach(function (sibling) {\n sibling.classList.remove(slide.active);\n });\n }\n };\n /**\n * Clear building classes:\n * - on destroying to bring HTML to its initial state\n * - on updating to remove classes before remounting component\n */\n\n Events.on(['destroy', 'update'], function () {\n Build.removeClasses();\n });\n /**\n * Remount component:\n * - on resizing of the window to calculate new dimensions\n * - on updating settings via API\n */\n\n Events.on(['resize', 'update'], function () {\n Build.mount();\n });\n /**\n * Swap active class of current slide:\n * - after each move to the new index\n */\n\n Events.on('move.after', function () {\n Build.activeClass();\n });\n return Build;\n}\nfunction Clones(Glide, Components, Events) {\n var Clones = {\n /**\n * Create pattern map and collect slides to be cloned.\n */\n mount: function mount() {\n this.items = [];\n if (Glide.isType('carousel')) {\n this.items = this.collect();\n }\n },\n /**\n * Collect clones with pattern.\n *\n * @return {[]}\n */\n collect: function collect() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var slides = Components.Html.slides;\n var _Glide$settings = Glide.settings,\n perView = _Glide$settings.perView,\n classes = _Glide$settings.classes,\n cloningRatio = _Glide$settings.cloningRatio;\n if (slides.length > 0) {\n var peekIncrementer = +!!Glide.settings.peek;\n var cloneCount = perView + peekIncrementer + Math.round(perView / 2);\n var append = slides.slice(0, cloneCount).reverse();\n var prepend = slides.slice(cloneCount * -1);\n for (var r = 0; r < Math.max(cloningRatio, Math.floor(perView / slides.length)); r++) {\n for (var i = 0; i < append.length; i++) {\n var clone = append[i].cloneNode(true);\n clone.classList.add(classes.slide.clone);\n items.push(clone);\n }\n for (var _i = 0; _i < prepend.length; _i++) {\n var _clone = prepend[_i].cloneNode(true);\n _clone.classList.add(classes.slide.clone);\n items.unshift(_clone);\n }\n }\n }\n return items;\n },\n /**\n * Append cloned slides with generated pattern.\n *\n * @return {Void}\n */\n append: function append() {\n var items = this.items;\n var _Components$Html = Components.Html,\n wrapper = _Components$Html.wrapper,\n slides = _Components$Html.slides;\n var half = Math.floor(items.length / 2);\n var prepend = items.slice(0, half).reverse();\n var append = items.slice(half * -1).reverse();\n var width = \"\".concat(Components.Sizes.slideWidth, \"px\");\n for (var i = 0; i < append.length; i++) {\n wrapper.appendChild(append[i]);\n }\n for (var _i2 = 0; _i2 < prepend.length; _i2++) {\n wrapper.insertBefore(prepend[_i2], slides[0]);\n }\n for (var _i3 = 0; _i3 < items.length; _i3++) {\n items[_i3].style.width = width;\n }\n },\n /**\n * Remove all cloned slides.\n *\n * @return {Void}\n */\n remove: function remove() {\n var items = this.items;\n for (var i = 0; i < items.length; i++) {\n Components.Html.wrapper.removeChild(items[i]);\n }\n }\n };\n define(Clones, 'grow', {\n /**\n * Gets additional dimensions value caused by clones.\n *\n * @return {Number}\n */\n get: function get() {\n return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones.items.length;\n }\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('update', function () {\n Clones.remove();\n Clones.mount();\n Clones.append();\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('build.before', function () {\n if (Glide.isType('carousel')) {\n Clones.append();\n }\n });\n /**\n * Remove clones HTMLElements:\n * - on destroying, to bring HTML to its initial state\n */\n\n Events.on('destroy', function () {\n Clones.remove();\n });\n return Clones;\n}\nvar EventsBinder = /*#__PURE__*/function () {\n /**\n * Construct a EventsBinder instance.\n */\n function EventsBinder() {\n var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck(this, EventsBinder);\n this.listeners = listeners;\n }\n /**\n * Adds events listeners to arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Function} closure\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n _createClass(EventsBinder, [{\n key: \"on\",\n value: function on(events, el, closure) {\n var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n if (isString(events)) {\n events = [events];\n }\n for (var i = 0; i < events.length; i++) {\n this.listeners[events[i]] = closure;\n el.addEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Removes event listeners from arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n }, {\n key: \"off\",\n value: function off(events, el) {\n var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (isString(events)) {\n events = [events];\n }\n for (var i = 0; i < events.length; i++) {\n el.removeEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Destroy collected listeners.\n *\n * @returns {Void}\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n delete this.listeners;\n }\n }]);\n return EventsBinder;\n}();\nfunction Resize(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Resize = {\n /**\n * Initializes window bindings.\n */\n mount: function mount() {\n this.bind();\n },\n /**\n * Binds `rezsize` listener to the window.\n * It's a costly event, so we are debouncing it.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('resize', window, throttle(function () {\n Events.emit('resize');\n }, Glide.settings.throttle));\n },\n /**\n * Unbinds listeners from the window.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('resize', window);\n }\n };\n /**\n * Remove bindings from window:\n * - on destroying, to remove added EventListener\n */\n\n Events.on('destroy', function () {\n Resize.unbind();\n Binder.destroy();\n });\n return Resize;\n}\nvar VALID_DIRECTIONS = ['ltr', 'rtl'];\nvar FLIPED_MOVEMENTS = {\n '>': '<',\n '<': '>',\n '=': '='\n};\nfunction Direction(Glide, Components, Events) {\n var Direction = {\n /**\n * Setups gap value based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.direction;\n },\n /**\n * Resolves pattern based on direction value\n *\n * @param {String} pattern\n * @returns {String}\n */\n resolve: function resolve(pattern) {\n var token = pattern.slice(0, 1);\n if (this.is('rtl')) {\n return pattern.split(token).join(FLIPED_MOVEMENTS[token]);\n }\n return pattern;\n },\n /**\n * Checks value of direction mode.\n *\n * @param {String} direction\n * @returns {Boolean}\n */\n is: function is(direction) {\n return this.value === direction;\n },\n /**\n * Applies direction class to the root HTML element.\n *\n * @return {Void}\n */\n addClass: function addClass() {\n Components.Html.root.classList.add(Glide.settings.classes.direction[this.value]);\n },\n /**\n * Removes direction class from the root HTML element.\n *\n * @return {Void}\n */\n removeClass: function removeClass() {\n Components.Html.root.classList.remove(Glide.settings.classes.direction[this.value]);\n }\n };\n define(Direction, 'value', {\n /**\n * Gets value of the direction.\n *\n * @returns {Number}\n */\n get: function get() {\n return Direction._v;\n },\n /**\n * Sets value of the direction.\n *\n * @param {String} value\n * @return {Void}\n */\n set: function set(value) {\n if (VALID_DIRECTIONS.indexOf(value) > -1) {\n Direction._v = value;\n } else {\n warn('Direction value must be `ltr` or `rtl`');\n }\n }\n });\n /**\n * Clear direction class:\n * - on destroy to bring HTML to its initial state\n * - on update to remove class before reappling bellow\n */\n\n Events.on(['destroy', 'update'], function () {\n Direction.removeClass();\n });\n /**\n * Remount component:\n * - on update to reflect changes in direction value\n */\n\n Events.on('update', function () {\n Direction.mount();\n });\n /**\n * Apply direction class:\n * - before building to apply class for the first time\n * - on updating to reapply direction class that may changed\n */\n\n Events.on(['build.before', 'update'], function () {\n Direction.addClass();\n });\n return Direction;\n}\n\n/**\n * Reflects value of glide movement.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Rtl(Glide, Components) {\n return {\n /**\n * Negates the passed translate if glide is in RTL option.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Components.Direction.is('rtl')) {\n return -translate;\n }\n return translate;\n }\n };\n}\n\n/**\n * Updates glide movement with a `gap` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Gap(Glide, Components) {\n return {\n /**\n * Modifies passed translate value with number in the `gap` settings.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var multiplier = Math.floor(translate / Components.Sizes.slideWidth);\n return translate + Components.Gaps.value * multiplier;\n }\n };\n}\n\n/**\n * Updates glide movement with width of additional clones width.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Grow(Glide, Components) {\n return {\n /**\n * Adds to the passed translate width of the half of clones.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Clones.grow / 2;\n }\n };\n}\n\n/**\n * Updates glide movement with a `peek` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\nfunction Peeking(Glide, Components) {\n return {\n /**\n * Modifies passed translate value with a `peek` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Glide.settings.focusAt >= 0) {\n var peek = Components.Peek.value;\n if (isObject(peek)) {\n return translate - peek.before;\n }\n return translate - peek;\n }\n return translate;\n }\n };\n}\n\n/**\n * Updates glide movement with a `focusAt` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Focusing(Glide, Components) {\n return {\n /**\n * Modifies passed translate value with index in the `focusAt` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var gap = Components.Gaps.value;\n var width = Components.Sizes.width;\n var focusAt = Glide.settings.focusAt;\n var slideWidth = Components.Sizes.slideWidth;\n if (focusAt === 'center') {\n return translate - (width / 2 - slideWidth / 2);\n }\n return translate - slideWidth * focusAt - gap * focusAt;\n }\n };\n}\n\n/**\n * Applies diffrent transformers on translate value.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\nfunction mutator(Glide, Components, Events) {\n /**\n * Merge instance transformers with collection of default transformers.\n * It's important that the Rtl component be last on the list,\n * so it reflects all previous transformations.\n *\n * @type {Array}\n */\n var TRANSFORMERS = [Gap, Grow, Peeking, Focusing].concat(Glide._t, [Rtl]);\n return {\n /**\n * Piplines translate value with registered transformers.\n *\n * @param {Number} translate\n * @return {Number}\n */\n mutate: function mutate(translate) {\n for (var i = 0; i < TRANSFORMERS.length; i++) {\n var transformer = TRANSFORMERS[i];\n if (isFunction(transformer) && isFunction(transformer().modify)) {\n translate = transformer(Glide, Components, Events).modify(translate);\n } else {\n warn('Transformer should be a function that returns an object with `modify()` method');\n }\n }\n return translate;\n }\n };\n}\nfunction Translate(Glide, Components, Events) {\n var Translate = {\n /**\n * Sets value of translate on HTML element.\n *\n * @param {Number} value\n * @return {Void}\n */\n set: function set(value) {\n var transform = mutator(Glide, Components).mutate(value);\n var translate3d = \"translate3d(\".concat(-1 * transform, \"px, 0px, 0px)\");\n Components.Html.wrapper.style.mozTransform = translate3d; // needed for supported Firefox 10-15\n\n Components.Html.wrapper.style.webkitTransform = translate3d; // needed for supported Chrome 10-35, Safari 5.1-8, and Opera 15-22\n\n Components.Html.wrapper.style.transform = translate3d;\n },\n /**\n * Removes value of translate from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transform = '';\n },\n /**\n * @return {number}\n */\n getStartIndex: function getStartIndex() {\n var length = Components.Sizes.length;\n var index = Glide.index;\n var perView = Glide.settings.perView;\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n return length + (index - perView);\n } // \"modulo length\" converts an index that equals length to zero\n\n return (index + perView) % length;\n },\n /**\n * @return {number}\n */\n getTravelDistance: function getTravelDistance() {\n var travelDistance = Components.Sizes.slideWidth * Glide.settings.perView;\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n // reverse travel distance so that we don't have to change subtract operations\n return travelDistance * -1;\n }\n return travelDistance;\n }\n };\n /**\n * Set new translate value:\n * - on move to reflect index change\n * - on updating via API to reflect possible changes in options\n */\n\n Events.on('move', function (context) {\n if (!Glide.isType('carousel') || !Components.Run.isOffset()) {\n return Translate.set(context.movement);\n }\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n Translate.set(Components.Sizes.slideWidth * Glide.index);\n });\n var startWidth = Components.Sizes.slideWidth * Components.Translate.getStartIndex();\n return Translate.set(startWidth - Components.Translate.getTravelDistance());\n });\n /**\n * Remove translate:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Translate.remove();\n });\n return Translate;\n}\nfunction Transition(Glide, Components, Events) {\n /**\n * Holds inactivity status of transition.\n * When true transition is not applied.\n *\n * @type {Boolean}\n */\n var disabled = false;\n var Transition = {\n /**\n * Composes string of the CSS transition.\n *\n * @param {String} property\n * @return {String}\n */\n compose: function compose(property) {\n var settings = Glide.settings;\n if (disabled) {\n return \"\".concat(property, \" 0ms \").concat(settings.animationTimingFunc);\n }\n return \"\".concat(property, \" \").concat(this.duration, \"ms \").concat(settings.animationTimingFunc);\n },\n /**\n * Sets value of transition on HTML element.\n *\n * @param {String=} property\n * @return {Void}\n */\n set: function set() {\n var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n Components.Html.wrapper.style.transition = this.compose(property);\n },\n /**\n * Removes value of transition from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transition = '';\n },\n /**\n * Runs callback after animation.\n *\n * @param {Function} callback\n * @return {Void}\n */\n after: function after(callback) {\n setTimeout(function () {\n callback();\n }, this.duration);\n },\n /**\n * Enable transition.\n *\n * @return {Void}\n */\n enable: function enable() {\n disabled = false;\n this.set();\n },\n /**\n * Disable transition.\n *\n * @return {Void}\n */\n disable: function disable() {\n disabled = true;\n this.set();\n }\n };\n define(Transition, 'duration', {\n /**\n * Gets duration of the transition based\n * on currently running animation type.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n if (Glide.isType('slider') && Components.Run.offset) {\n return settings.rewindDuration;\n }\n return settings.animationDuration;\n }\n });\n /**\n * Set transition `style` value:\n * - on each moving, because it may be cleared by offset move\n */\n\n Events.on('move', function () {\n Transition.set();\n });\n /**\n * Disable transition:\n * - before initial build to avoid transitioning from `0` to `startAt` index\n * - while resizing window and recalculating dimensions\n * - on jumping from offset transition at start and end edges in `carousel` type\n */\n\n Events.on(['build.before', 'resize', 'translate.jump'], function () {\n Transition.disable();\n });\n /**\n * Enable transition:\n * - on each running, because it may be disabled by offset move\n */\n\n Events.on('run', function () {\n Transition.enable();\n });\n /**\n * Remove transition:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Transition.remove();\n });\n return Transition;\n}\n\n/**\n * Test via a getter in the options object to see\n * if the passive property is accessed.\n *\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n */\nvar supportsPassive = false;\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n} catch (e) {}\nvar supportsPassive$1 = supportsPassive;\nvar START_EVENTS = ['touchstart', 'mousedown'];\nvar MOVE_EVENTS = ['touchmove', 'mousemove'];\nvar END_EVENTS = ['touchend', 'touchcancel', 'mouseup', 'mouseleave'];\nvar MOUSE_EVENTS = ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\nfunction Swipe(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var swipeSin = 0;\n var swipeStartX = 0;\n var swipeStartY = 0;\n var disabled = false;\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Swipe = {\n /**\n * Initializes swipe bindings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bindSwipeStart();\n },\n /**\n * Handler for `swipestart` event. Calculates entry points of the user's tap.\n *\n * @param {Object} event\n * @return {Void}\n */\n start: function start(event) {\n if (!disabled && !Glide.disabled) {\n this.disable();\n var swipe = this.touches(event);\n swipeSin = null;\n swipeStartX = toInt(swipe.pageX);\n swipeStartY = toInt(swipe.pageY);\n this.bindSwipeMove();\n this.bindSwipeEnd();\n Events.emit('swipe.start');\n }\n },\n /**\n * Handler for `swipemove` event. Calculates user's tap angle and distance.\n *\n * @param {Object} event\n */\n move: function move(event) {\n if (!Glide.disabled) {\n var _Glide$settings = Glide.settings,\n touchAngle = _Glide$settings.touchAngle,\n touchRatio = _Glide$settings.touchRatio,\n classes = _Glide$settings.classes;\n var swipe = this.touches(event);\n var subExSx = toInt(swipe.pageX) - swipeStartX;\n var subEySy = toInt(swipe.pageY) - swipeStartY;\n var powEX = Math.abs(subExSx << 2);\n var powEY = Math.abs(subEySy << 2);\n var swipeHypotenuse = Math.sqrt(powEX + powEY);\n var swipeCathetus = Math.sqrt(powEY);\n swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n if (swipeSin * 180 / Math.PI < touchAngle) {\n event.stopPropagation();\n Components.Move.make(subExSx * toFloat(touchRatio));\n Components.Html.root.classList.add(classes.dragging);\n Events.emit('swipe.move');\n } else {\n return false;\n }\n }\n },\n /**\n * Handler for `swipeend` event. Finitializes user's tap and decides about glide move.\n *\n * @param {Object} event\n * @return {Void}\n */\n end: function end(event) {\n if (!Glide.disabled) {\n var _Glide$settings2 = Glide.settings,\n perSwipe = _Glide$settings2.perSwipe,\n touchAngle = _Glide$settings2.touchAngle,\n classes = _Glide$settings2.classes;\n var swipe = this.touches(event);\n var threshold = this.threshold(event);\n var swipeDistance = swipe.pageX - swipeStartX;\n var swipeDeg = swipeSin * 180 / Math.PI;\n this.enable();\n if (swipeDistance > threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n } else if (swipeDistance < -threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n } else {\n // While swipe don't reach distance apply previous transform.\n Components.Move.make();\n }\n Components.Html.root.classList.remove(classes.dragging);\n this.unbindSwipeMove();\n this.unbindSwipeEnd();\n Events.emit('swipe.end');\n }\n },\n /**\n * Binds swipe's starting event.\n *\n * @return {Void}\n */\n bindSwipeStart: function bindSwipeStart() {\n var _this = this;\n var _Glide$settings3 = Glide.settings,\n swipeThreshold = _Glide$settings3.swipeThreshold,\n dragThreshold = _Glide$settings3.dragThreshold;\n if (swipeThreshold) {\n Binder.on(START_EVENTS[0], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n if (dragThreshold) {\n Binder.on(START_EVENTS[1], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n },\n /**\n * Unbinds swipe's starting event.\n *\n * @return {Void}\n */\n unbindSwipeStart: function unbindSwipeStart() {\n Binder.off(START_EVENTS[0], Components.Html.wrapper, capture);\n Binder.off(START_EVENTS[1], Components.Html.wrapper, capture);\n },\n /**\n * Binds swipe's moving event.\n *\n * @return {Void}\n */\n bindSwipeMove: function bindSwipeMove() {\n var _this2 = this;\n Binder.on(MOVE_EVENTS, Components.Html.wrapper, throttle(function (event) {\n _this2.move(event);\n }, Glide.settings.throttle), capture);\n },\n /**\n * Unbinds swipe's moving event.\n *\n * @return {Void}\n */\n unbindSwipeMove: function unbindSwipeMove() {\n Binder.off(MOVE_EVENTS, Components.Html.wrapper, capture);\n },\n /**\n * Binds swipe's ending event.\n *\n * @return {Void}\n */\n bindSwipeEnd: function bindSwipeEnd() {\n var _this3 = this;\n Binder.on(END_EVENTS, Components.Html.wrapper, function (event) {\n _this3.end(event);\n });\n },\n /**\n * Unbinds swipe's ending event.\n *\n * @return {Void}\n */\n unbindSwipeEnd: function unbindSwipeEnd() {\n Binder.off(END_EVENTS, Components.Html.wrapper);\n },\n /**\n * Normalizes event touches points accorting to different types.\n *\n * @param {Object} event\n */\n touches: function touches(event) {\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return event;\n }\n return event.touches[0] || event.changedTouches[0];\n },\n /**\n * Gets value of minimum swipe distance settings based on event type.\n *\n * @return {Number}\n */\n threshold: function threshold(event) {\n var settings = Glide.settings;\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return settings.dragThreshold;\n }\n return settings.swipeThreshold;\n },\n /**\n * Enables swipe event.\n *\n * @return {self}\n */\n enable: function enable() {\n disabled = false;\n Components.Transition.enable();\n return this;\n },\n /**\n * Disables swipe event.\n *\n * @return {self}\n */\n disable: function disable() {\n disabled = true;\n Components.Transition.disable();\n return this;\n }\n };\n /**\n * Add component class:\n * - after initial building\n */\n\n Events.on('build.after', function () {\n Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n });\n /**\n * Remove swiping bindings:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Swipe.unbindSwipeStart();\n Swipe.unbindSwipeMove();\n Swipe.unbindSwipeEnd();\n Binder.destroy();\n });\n return Swipe;\n}\nfunction Images(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Images = {\n /**\n * Binds listener to glide wrapper.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bind();\n },\n /**\n * Binds `dragstart` event on wrapper to prevent dragging images.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('dragstart', Components.Html.wrapper, this.dragstart);\n },\n /**\n * Unbinds `dragstart` event on wrapper.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('dragstart', Components.Html.wrapper);\n },\n /**\n * Event handler. Prevents dragging.\n *\n * @return {Void}\n */\n dragstart: function dragstart(event) {\n event.preventDefault();\n }\n };\n /**\n * Remove bindings from images:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Images.unbind();\n Binder.destroy();\n });\n return Images;\n}\nfunction Anchors(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds detaching status of anchors.\n * Prevents detaching of already detached anchors.\n *\n * @private\n * @type {Boolean}\n */\n\n var detached = false;\n /**\n * Holds preventing status of anchors.\n * If `true` redirection after click will be disabled.\n *\n * @private\n * @type {Boolean}\n */\n\n var prevented = false;\n var Anchors = {\n /**\n * Setups a initial state of anchors component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n /**\n * Holds collection of anchors elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._a = Components.Html.wrapper.querySelectorAll('a');\n this.bind();\n },\n /**\n * Binds events to anchors inside a track.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('click', Components.Html.wrapper, this.click);\n },\n /**\n * Unbinds events attached to anchors inside a track.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('click', Components.Html.wrapper);\n },\n /**\n * Handler for click event. Prevents clicks when glide is in `prevent` status.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n if (prevented) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n /**\n * Detaches anchors click event inside glide.\n *\n * @return {self}\n */\n detach: function detach() {\n prevented = true;\n if (!detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = false;\n }\n detached = true;\n }\n return this;\n },\n /**\n * Attaches anchors click events inside glide.\n *\n * @return {self}\n */\n attach: function attach() {\n prevented = false;\n if (detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = true;\n }\n detached = false;\n }\n return this;\n }\n };\n define(Anchors, 'items', {\n /**\n * Gets collection of the arrows HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Anchors._a;\n }\n });\n /**\n * Detach anchors inside slides:\n * - on swiping, so they won't redirect to its `href` attributes\n */\n\n Events.on('swipe.move', function () {\n Anchors.detach();\n });\n /**\n * Attach anchors inside slides:\n * - after swiping and transitions ends, so they can redirect after click again\n */\n\n Events.on('swipe.end', function () {\n Components.Transition.after(function () {\n Anchors.attach();\n });\n });\n /**\n * Unbind anchors inside slides:\n * - on destroying, to bring anchors to its initial state\n */\n\n Events.on('destroy', function () {\n Anchors.attach();\n Anchors.unbind();\n Binder.destroy();\n });\n return Anchors;\n}\nvar NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\nvar CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\nvar PREVIOUS_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\"<\\\"]\");\nvar NEXT_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\">\\\"]\");\nfunction Controls(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Controls = {\n /**\n * Inits arrows. Binds events listeners\n * to the arrows HTML elements.\n *\n * @return {Void}\n */\n mount: function mount() {\n /**\n * Collection of navigation HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._n = Components.Html.root.querySelectorAll(NAV_SELECTOR);\n /**\n * Collection of controls HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n\n this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);\n /**\n * Collection of arrow control HTML elements.\n *\n * @private\n * @type {Object}\n */\n\n this._arrowControls = {\n previous: Components.Html.root.querySelectorAll(PREVIOUS_CONTROLS_SELECTOR),\n next: Components.Html.root.querySelectorAll(NEXT_CONTROLS_SELECTOR)\n };\n this.addBindings();\n },\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n setActive: function setActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.addClass(this._n[i].children);\n }\n },\n /**\n * Removes active class to current slide.\n *\n * @return {Void}\n */\n removeActive: function removeActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.removeClass(this._n[i].children);\n }\n },\n /**\n * Toggles active class on items inside navigation.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n addClass: function addClass(controls) {\n var settings = Glide.settings;\n var item = controls[Glide.index];\n if (!item) {\n return;\n }\n item.classList.add(settings.classes.nav.active);\n siblings(item).forEach(function (sibling) {\n sibling.classList.remove(settings.classes.nav.active);\n });\n },\n /**\n * Removes active class from active control.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n removeClass: function removeClass(controls) {\n var item = controls[Glide.index];\n item === null || item === void 0 ? void 0 : item.classList.remove(Glide.settings.classes.nav.active);\n },\n /**\n * Calculates, removes or adds `Glide.settings.classes.disabledArrow` class on the control arrows\n */\n setArrowState: function setArrowState() {\n if (Glide.settings.rewind) {\n return;\n }\n var next = Controls._arrowControls.next;\n var previous = Controls._arrowControls.previous;\n this.resetArrowState(next, previous);\n if (Glide.index === 0) {\n this.disableArrow(previous);\n }\n if (Glide.index === Components.Run.length) {\n this.disableArrow(next);\n }\n },\n /**\n * Removes `Glide.settings.classes.disabledArrow` from given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n resetArrowState: function resetArrowState() {\n var settings = Glide.settings;\n for (var _len = arguments.length, lists = new Array(_len), _key = 0; _key < _len; _key++) {\n lists[_key] = arguments[_key];\n }\n lists.forEach(function (list) {\n toArray(list).forEach(function (element) {\n element.classList.remove(settings.classes.arrow.disabled);\n });\n });\n },\n /**\n * Adds `Glide.settings.classes.disabledArrow` to given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n disableArrow: function disableArrow() {\n var settings = Glide.settings;\n for (var _len2 = arguments.length, lists = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n lists[_key2] = arguments[_key2];\n }\n lists.forEach(function (list) {\n toArray(list).forEach(function (element) {\n element.classList.add(settings.classes.arrow.disabled);\n });\n });\n },\n /**\n * Adds handles to the each group of controls.\n *\n * @return {Void}\n */\n addBindings: function addBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.bind(this._c[i].children);\n }\n },\n /**\n * Removes handles from the each group of controls.\n *\n * @return {Void}\n */\n removeBindings: function removeBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.unbind(this._c[i].children);\n }\n },\n /**\n * Binds events to arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n bind: function bind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.on('click', elements[i], this.click);\n Binder.on('touchstart', elements[i], this.click, capture);\n }\n },\n /**\n * Unbinds events binded to the arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n unbind: function unbind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.off(['click', 'touchstart'], elements[i]);\n }\n },\n /**\n * Handles `click` event on the arrows HTML elements.\n * Moves slider in direction given via the\n * `data-glide-dir` attribute.\n *\n * @param {Object} event\n * @return {void}\n */\n click: function click(event) {\n if (!supportsPassive$1 && event.type === 'touchstart') {\n event.preventDefault();\n }\n var direction = event.currentTarget.getAttribute('data-glide-dir');\n Components.Run.make(Components.Direction.resolve(direction));\n }\n };\n define(Controls, 'items', {\n /**\n * Gets collection of the controls HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Controls._c;\n }\n });\n /**\n * Swap active class of current navigation item:\n * - after mounting to set it to initial index\n * - after each move to the new index\n */\n\n Events.on(['mount.after', 'move.after'], function () {\n Controls.setActive();\n });\n /**\n * Add or remove disabled class of arrow elements\n */\n\n Events.on(['mount.after', 'run'], function () {\n Controls.setArrowState();\n });\n /**\n * Remove bindings and HTML Classes:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Controls.removeBindings();\n Controls.removeActive();\n Binder.destroy();\n });\n return Controls;\n}\nfunction Keyboard(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Keyboard = {\n /**\n * Binds keyboard events on component mount.\n *\n * @return {Void}\n */\n mount: function mount() {\n if (Glide.settings.keyboard) {\n this.bind();\n }\n },\n /**\n * Adds keyboard press events.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('keyup', document, this.press);\n },\n /**\n * Removes keyboard press events.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('keyup', document);\n },\n /**\n * Handles keyboard's arrows press and moving glide foward and backward.\n *\n * @param {Object} event\n * @return {Void}\n */\n press: function press(event) {\n var perSwipe = Glide.settings.perSwipe;\n var arrowSymbols = {\n ArrowRight: '>',\n ArrowLeft: '<'\n };\n if (['ArrowRight', 'ArrowLeft'].includes(event.code)) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe).concat(arrowSymbols[event.code])));\n }\n }\n };\n /**\n * Remove bindings from keyboard:\n * - on destroying to remove added events\n * - on updating to remove events before remounting\n */\n\n Events.on(['destroy', 'update'], function () {\n Keyboard.unbind();\n });\n /**\n * Remount component\n * - on updating to reflect potential changes in settings\n */\n\n Events.on('update', function () {\n Keyboard.mount();\n });\n /**\n * Destroy binder:\n * - on destroying to remove listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Keyboard;\n}\nfunction Autoplay(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Autoplay = {\n /**\n * Initializes autoplaying and events.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.enable();\n this.start();\n if (Glide.settings.hoverpause) {\n this.bind();\n }\n },\n /**\n * Enables autoplaying\n *\n * @returns {Void}\n */\n enable: function enable() {\n this._e = true;\n },\n /**\n * Disables autoplaying.\n *\n * @returns {Void}\n */\n disable: function disable() {\n this._e = false;\n },\n /**\n * Starts autoplaying in configured interval.\n *\n * @param {Boolean|Number} force Run autoplaying with passed interval regardless of `autoplay` settings\n * @return {Void}\n */\n start: function start() {\n var _this = this;\n if (!this._e) {\n return;\n }\n this.enable();\n if (Glide.settings.autoplay) {\n if (isUndefined(this._i)) {\n this._i = setInterval(function () {\n _this.stop();\n Components.Run.make('>');\n _this.start();\n Events.emit('autoplay');\n }, this.time);\n }\n }\n },\n /**\n * Stops autorunning of the glide.\n *\n * @return {Void}\n */\n stop: function stop() {\n this._i = clearInterval(this._i);\n },\n /**\n * Stops autoplaying while mouse is over glide's area.\n *\n * @return {Void}\n */\n bind: function bind() {\n var _this2 = this;\n Binder.on('mouseover', Components.Html.root, function () {\n if (_this2._e) {\n _this2.stop();\n }\n });\n Binder.on('mouseout', Components.Html.root, function () {\n if (_this2._e) {\n _this2.start();\n }\n });\n },\n /**\n * Unbind mouseover events.\n *\n * @returns {Void}\n */\n unbind: function unbind() {\n Binder.off(['mouseover', 'mouseout'], Components.Html.root);\n }\n };\n define(Autoplay, 'time', {\n /**\n * Gets time period value for the autoplay interval. Prioritizes\n * times in `data-glide-autoplay` attrubutes over options.\n *\n * @return {Number}\n */\n get: function get() {\n var autoplay = Components.Html.slides[Glide.index].getAttribute('data-glide-autoplay');\n if (autoplay) {\n return toInt(autoplay);\n }\n return toInt(Glide.settings.autoplay);\n }\n });\n /**\n * Stop autoplaying and unbind events:\n * - on destroying, to clear defined interval\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['destroy', 'update'], function () {\n Autoplay.unbind();\n });\n /**\n * Stop autoplaying:\n * - before each run, to restart autoplaying\n * - on pausing via API\n * - on destroying, to clear defined interval\n * - while starting a swipe\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['run.before', 'swipe.start', 'update'], function () {\n Autoplay.stop();\n });\n Events.on(['pause', 'destroy'], function () {\n Autoplay.disable();\n Autoplay.stop();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['run.after', 'swipe.end'], function () {\n Autoplay.start();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['play'], function () {\n Autoplay.enable();\n Autoplay.start();\n });\n /**\n * Remount autoplaying:\n * - on updating via API to reset interval that may changed\n */\n\n Events.on('update', function () {\n Autoplay.mount();\n });\n /**\n * Destroy a binder:\n * - on destroying glide instance to clearup listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Autoplay;\n}\n\n/**\n * Sorts keys of breakpoint object so they will be ordered from lower to bigger.\n *\n * @param {Object} points\n * @returns {Object}\n */\n\nfunction sortBreakpoints(points) {\n if (isObject(points)) {\n return sortKeys(points);\n } else {\n warn(\"Breakpoints option must be an object\");\n }\n return {};\n}\nfunction Breakpoints(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds reference to settings.\n *\n * @type {Object}\n */\n\n var settings = Glide.settings;\n /**\n * Holds reference to breakpoints object in settings. Sorts breakpoints\n * from smaller to larger. It is required in order to proper\n * matching currently active breakpoint settings.\n *\n * @type {Object}\n */\n\n var points = sortBreakpoints(settings.breakpoints);\n /**\n * Cache initial settings before overwritting.\n *\n * @type {Object}\n */\n\n var defaults = Object.assign({}, settings);\n var Breakpoints = {\n /**\n * Matches settings for currectly matching media breakpoint.\n *\n * @param {Object} points\n * @returns {Object}\n */\n match: function match(points) {\n if (typeof window.matchMedia !== 'undefined') {\n for (var point in points) {\n if (points.hasOwnProperty(point)) {\n if (window.matchMedia(\"(max-width: \".concat(point, \"px)\")).matches) {\n return points[point];\n }\n }\n }\n }\n return defaults;\n }\n };\n /**\n * Overwrite instance settings with currently matching breakpoint settings.\n * This happens right after component initialization.\n */\n\n Object.assign(settings, Breakpoints.match(points));\n /**\n * Update glide with settings of matched brekpoint:\n * - window resize to update slider\n */\n\n Binder.on('resize', window, throttle(function () {\n Glide.settings = mergeOptions(settings, Breakpoints.match(points));\n }, Glide.settings.throttle));\n /**\n * Resort and update default settings:\n * - on reinit via API, so breakpoint matching will be performed with options\n */\n\n Events.on('update', function () {\n points = sortBreakpoints(points);\n defaults = Object.assign({}, settings);\n });\n /**\n * Unbind resize listener:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Binder.off('resize', window);\n });\n return Breakpoints;\n}\nvar COMPONENTS = {\n // Required\n Html: Html,\n Translate: Translate,\n Transition: Transition,\n Direction: Direction,\n Peek: Peek,\n Sizes: Sizes,\n Gaps: Gaps,\n Move: Move,\n Clones: Clones,\n Resize: Resize,\n Build: Build,\n Run: Run,\n // Optional\n Swipe: Swipe,\n Images: Images,\n Anchors: Anchors,\n Controls: Controls,\n Keyboard: Keyboard,\n Autoplay: Autoplay,\n Breakpoints: Breakpoints\n};\nvar Glide = /*#__PURE__*/function (_Core) {\n _inherits(Glide, _Core);\n var _super = _createSuper(Glide);\n function Glide() {\n _classCallCheck(this, Glide);\n return _super.apply(this, arguments);\n }\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _get(_getPrototypeOf(Glide.prototype), \"mount\", this).call(this, Object.assign({}, COMPONENTS, extensions));\n }\n }]);\n return Glide;\n}(Glide$1);\nexport { Glide as default };","/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n(function () {\n 'use strict';\n\n // polyfill\n function polyfill() {\n // aliases\n var w = window;\n var d = document;\n\n // return if scroll behavior is supported and polyfill is not forced\n if ('scrollBehavior' in d.documentElement.style && w.__forceSmoothScrollPolyfill__ !== true) {\n return;\n }\n\n // globals\n var Element = w.HTMLElement || w.Element;\n var SCROLL_TIME = 468;\n\n // object gathering original scroll methods\n var original = {\n scroll: w.scroll || w.scrollTo,\n scrollBy: w.scrollBy,\n elementScroll: Element.prototype.scroll || scrollElement,\n scrollIntoView: Element.prototype.scrollIntoView\n };\n\n // define timing method\n var now = w.performance && w.performance.now ? w.performance.now.bind(w.performance) : Date.now;\n\n /**\n * indicates if a the current browser is made by Microsoft\n * @method isMicrosoftBrowser\n * @param {String} userAgent\n * @returns {Boolean}\n */\n function isMicrosoftBrowser(userAgent) {\n var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n }\n\n /*\n * IE has rounding bug rounding down clientHeight and clientWidth and\n * rounding up scrollHeight and scrollWidth causing false positives\n * on hasScrollableSpace\n */\n var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n /**\n * changes scroll position inside an element\n * @method scrollElement\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function scrollElement(x, y) {\n this.scrollLeft = x;\n this.scrollTop = y;\n }\n\n /**\n * returns result of applying ease math function to a number\n * @method ease\n * @param {Number} k\n * @returns {Number}\n */\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n /**\n * indicates if a smooth behavior should be applied\n * @method shouldBailOut\n * @param {Number|Object} firstArg\n * @returns {Boolean}\n */\n function shouldBailOut(firstArg) {\n if (firstArg === null || typeof firstArg !== 'object' || firstArg.behavior === undefined || firstArg.behavior === 'auto' || firstArg.behavior === 'instant') {\n // first argument is not an object/null\n // or behavior is auto, instant or undefined\n return true;\n }\n if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n // first argument is an object and behavior is smooth\n return false;\n }\n\n // throw error when behavior is not supported\n throw new TypeError('behavior member of ScrollOptions ' + firstArg.behavior + ' is not a valid value for enumeration ScrollBehavior.');\n }\n\n /**\n * indicates if an element has scrollable space in the provided axis\n * @method hasScrollableSpace\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function hasScrollableSpace(el, axis) {\n if (axis === 'Y') {\n return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n }\n if (axis === 'X') {\n return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n }\n }\n\n /**\n * indicates if an element has a scrollable overflow property in the axis\n * @method canOverflow\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function canOverflow(el, axis) {\n var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n return overflowValue === 'auto' || overflowValue === 'scroll';\n }\n\n /**\n * indicates if an element can be scrolled in either axis\n * @method isScrollable\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function isScrollable(el) {\n var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n return isScrollableY || isScrollableX;\n }\n\n /**\n * finds scrollable parent of an element\n * @method findScrollableParent\n * @param {Node} el\n * @returns {Node} el\n */\n function findScrollableParent(el) {\n while (el !== d.body && isScrollable(el) === false) {\n el = el.parentNode || el.host;\n }\n return el;\n }\n\n /**\n * self invoked function that, given a context, steps through scrolling\n * @method step\n * @param {Object} context\n * @returns {undefined}\n */\n function step(context) {\n var time = now();\n var value;\n var currentX;\n var currentY;\n var elapsed = (time - context.startTime) / SCROLL_TIME;\n\n // avoid elapsed times higher than one\n elapsed = elapsed > 1 ? 1 : elapsed;\n\n // apply easing to elapsed time\n value = ease(elapsed);\n currentX = context.startX + (context.x - context.startX) * value;\n currentY = context.startY + (context.y - context.startY) * value;\n context.method.call(context.scrollable, currentX, currentY);\n\n // scroll more if we have not reached our destination\n if (currentX !== context.x || currentY !== context.y) {\n w.requestAnimationFrame(step.bind(w, context));\n }\n }\n\n /**\n * scrolls window or element with a smooth behavior\n * @method smoothScroll\n * @param {Object|Node} el\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function smoothScroll(el, x, y) {\n var scrollable;\n var startX;\n var startY;\n var method;\n var startTime = now();\n\n // define scroll context\n if (el === d.body) {\n scrollable = w;\n startX = w.scrollX || w.pageXOffset;\n startY = w.scrollY || w.pageYOffset;\n method = original.scroll;\n } else {\n scrollable = el;\n startX = el.scrollLeft;\n startY = el.scrollTop;\n method = scrollElement;\n }\n\n // scroll looping over a frame\n step({\n scrollable: scrollable,\n method: method,\n startTime: startTime,\n startX: startX,\n startY: startY,\n x: x,\n y: y\n });\n }\n\n // ORIGINAL METHODS OVERRIDES\n // w.scroll and w.scrollTo\n w.scroll = w.scrollTo = function () {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scroll.call(w, arguments[0].left !== undefined ? arguments[0].left : typeof arguments[0] !== 'object' ? arguments[0] : w.scrollX || w.pageXOffset,\n // use top prop, second argument if present or fallback to scrollY\n arguments[0].top !== undefined ? arguments[0].top : arguments[1] !== undefined ? arguments[1] : w.scrollY || w.pageYOffset);\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(w, d.body, arguments[0].left !== undefined ? ~~arguments[0].left : w.scrollX || w.pageXOffset, arguments[0].top !== undefined ? ~~arguments[0].top : w.scrollY || w.pageYOffset);\n };\n\n // w.scrollBy\n w.scrollBy = function () {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0])) {\n original.scrollBy.call(w, arguments[0].left !== undefined ? arguments[0].left : typeof arguments[0] !== 'object' ? arguments[0] : 0, arguments[0].top !== undefined ? arguments[0].top : arguments[1] !== undefined ? arguments[1] : 0);\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(w, d.body, ~~arguments[0].left + (w.scrollX || w.pageXOffset), ~~arguments[0].top + (w.scrollY || w.pageYOffset));\n };\n\n // Element.prototype.scroll and Element.prototype.scrollTo\n Element.prototype.scroll = Element.prototype.scrollTo = function () {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n // if one number is passed, throw error to match Firefox implementation\n if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n throw new SyntaxError('Value could not be converted');\n }\n original.elementScroll.call(this,\n // use left prop, first number argument or fallback to scrollLeft\n arguments[0].left !== undefined ? ~~arguments[0].left : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,\n // use top prop, second argument or fallback to scrollTop\n arguments[0].top !== undefined ? ~~arguments[0].top : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop);\n return;\n }\n var left = arguments[0].left;\n var top = arguments[0].top;\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(this, this, typeof left === 'undefined' ? this.scrollLeft : ~~left, typeof top === 'undefined' ? this.scrollTop : ~~top);\n };\n\n // Element.prototype.scrollBy\n Element.prototype.scrollBy = function () {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.elementScroll.call(this, arguments[0].left !== undefined ? ~~arguments[0].left + this.scrollLeft : ~~arguments[0] + this.scrollLeft, arguments[0].top !== undefined ? ~~arguments[0].top + this.scrollTop : ~~arguments[1] + this.scrollTop);\n return;\n }\n this.scroll({\n left: ~~arguments[0].left + this.scrollLeft,\n top: ~~arguments[0].top + this.scrollTop,\n behavior: arguments[0].behavior\n });\n };\n\n // Element.prototype.scrollIntoView\n Element.prototype.scrollIntoView = function () {\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scrollIntoView.call(this, arguments[0] === undefined ? true : arguments[0]);\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n var scrollableParent = findScrollableParent(this);\n var parentRects = scrollableParent.getBoundingClientRect();\n var clientRects = this.getBoundingClientRect();\n if (scrollableParent !== d.body) {\n // reveal element inside parent\n smoothScroll.call(this, scrollableParent, scrollableParent.scrollLeft + clientRects.left - parentRects.left, scrollableParent.scrollTop + clientRects.top - parentRects.top);\n\n // reveal parent in viewport unless is fixed\n if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n w.scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n behavior: 'smooth'\n });\n }\n } else {\n // reveal element in viewport\n w.scrollBy({\n left: clientRects.left,\n top: clientRects.top,\n behavior: 'smooth'\n });\n }\n };\n }\n if (typeof exports === 'object' && typeof module !== 'undefined') {\n // commonjs\n module.exports = {\n polyfill: polyfill\n };\n } else {\n // global\n polyfill();\n }\n})();","// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n\nrequire(\"@rails/ujs\").start()\nrequire(\"turbolinks\").start()\nrequire(\"@rails/activestorage\").start()\nrequire(\"channels\")\nrequire(\"umbrellajs\")\nrequire(\"customs\")\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\n","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n(function () {\n var context = this;\n (function () {\n (function () {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n }).call(this);\n }).call(context);\n var Rails = context.Rails;\n (function () {\n (function () {\n var nonce;\n nonce = null;\n Rails.loadCSPNonce = function () {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n Rails.cspNonce = function () {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n }).call(this);\n (function () {\n var expando, m;\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n Rails.matches = function (element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n expando = '_ujsData';\n Rails.getData = function (element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n Rails.setData = function (element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n Rails.isContentEditable = function (element) {\n var isEditable;\n isEditable = false;\n while (true) {\n if (element.isContentEditable) {\n isEditable = true;\n break;\n }\n element = element.parentElement;\n if (!element) {\n break;\n }\n }\n return isEditable;\n };\n Rails.$ = function (selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n }).call(this);\n (function () {\n var $, csrfParam, csrfToken;\n $ = Rails.$;\n csrfToken = Rails.csrfToken = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n csrfParam = Rails.csrfParam = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n Rails.CSRFProtection = function (xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n Rails.refreshCSRFTokens = function () {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if (token != null && param != null) {\n return $('form input[name=\"' + param + '\"]').forEach(function (input) {\n return input.value = token;\n });\n }\n };\n }).call(this);\n (function () {\n var CustomEvent, fire, matches, preventDefault;\n matches = Rails.matches;\n CustomEvent = window.CustomEvent;\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function (event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function () {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () {\n return true;\n }\n });\n }\n return result;\n };\n }\n fire = Rails.fire = function (obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n Rails.stopEverything = function (e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n Rails.delegate = function (element, selector, eventType, handler) {\n return element.addEventListener(eventType, function (e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n }).call(this);\n (function () {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n Rails.ajax = function (options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function () {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if (options.beforeSend != null && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n prepareOptions = function (options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n createXHR = function (options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n processResponse = function (response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n Rails.href = function (element) {\n return element.href;\n };\n Rails.isCrossDomain = function (url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (error) {\n e = error;\n return true;\n }\n };\n }).call(this);\n (function () {\n var matches, toArray;\n matches = Rails.matches;\n toArray = function (e) {\n return Array.prototype.slice.call(e);\n };\n Rails.serializeElement = function (element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function (input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function (option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function (param) {\n if (param.name != null) {\n return encodeURIComponent(param.name) + \"=\" + encodeURIComponent(param.value);\n } else {\n return param;\n }\n }).join('&');\n };\n Rails.formElements = function (form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function (el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n }).call(this);\n (function () {\n var allowAction, fire, stopEverything;\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n Rails.handleConfirm = function (e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n Rails.confirm = function (message, element) {\n return confirm(message);\n };\n allowAction = function (element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n }).call(this);\n (function () {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isContentEditable, isXhrRedirect, matches, setData, stopEverything;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements, isContentEditable = Rails.isContentEditable;\n Rails.handleDisabledElement = function (e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n Rails.enableElement = function (e) {\n var element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n Rails.disableElement = function (e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n disableLinkElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n enableLinkElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n disableFormElements = function (form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n disableFormElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n enableFormElements = function (form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n enableFormElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n isXhrRedirect = function (event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n }).call(this);\n (function () {\n var isContentEditable, stopEverything;\n stopEverything = Rails.stopEverything;\n isContentEditable = Rails.isContentEditable;\n Rails.handleMethod = function (e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n if (isContentEditable(this)) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"\";\n if (csrfParam != null && csrfToken != null && !Rails.isCrossDomain(href)) {\n formContent += \"\";\n }\n formContent += '';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n }).call(this);\n (function () {\n var ajax,\n fire,\n getData,\n isContentEditable,\n isCrossDomain,\n isRemote,\n matches,\n serializeElement,\n setData,\n stopEverything,\n slice = [].slice;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement, isContentEditable = Rails.isContentEditable;\n isRemote = function (element) {\n var value;\n value = element.getAttribute('data-remote');\n return value != null && value !== 'false';\n };\n Rails.handleRemote = function (e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n if (isContentEditable(element)) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function (xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n Rails.formSubmitButtonClick = function (e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n Rails.preventInsignificantClick = function (e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = e.button != null && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n }).call(this);\n (function () {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n if (typeof jQuery !== \"undefined\" && jQuery !== null && jQuery.ajax != null) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n Rails.start = function () {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function () {\n $(Rails.formEnableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function (e) {\n return setTimeout(function () {\n return disableElement(e);\n }, 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n }).call(this);\n }).call(this);\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);","/*\nTurbolinks 5.2.0\nCopyright © 2018 Basecamp, LLC\n */\n(function () {\n var t = this;\n (function () {\n (function () {\n this.Turbolinks = {\n supported: function () {\n return null != window.history.pushState && null != window.requestAnimationFrame && null != window.addEventListener;\n }(),\n visit: function (t, r) {\n return e.controller.visit(t, r);\n },\n clearCache: function () {\n return e.controller.clearCache();\n },\n setProgressBarDelay: function (t) {\n return e.controller.setProgressBarDelay(t);\n }\n };\n }).call(this);\n }).call(t);\n var e = t.Turbolinks;\n (function () {\n (function () {\n var t,\n r,\n n,\n o = [].slice;\n e.copyObject = function (t) {\n var e, r, n;\n r = {};\n for (e in t) n = t[e], r[e] = n;\n return r;\n }, e.closest = function (e, r) {\n return t.call(e, r);\n }, t = function () {\n var t, e;\n return t = document.documentElement, null != (e = t.closest) ? e : function (t) {\n var e;\n for (e = this; e;) {\n if (e.nodeType === Node.ELEMENT_NODE && r.call(e, t)) return e;\n e = e.parentNode;\n }\n };\n }(), e.defer = function (t) {\n return setTimeout(t, 1);\n }, e.throttle = function (t) {\n var e;\n return e = null, function () {\n var r;\n return r = 1 <= arguments.length ? o.call(arguments, 0) : [], null != e ? e : e = requestAnimationFrame(function (n) {\n return function () {\n return e = null, t.apply(n, r);\n };\n }(this));\n };\n }, e.dispatch = function (t, e) {\n var r, o, i, s, a, u;\n return a = null != e ? e : {}, u = a.target, r = a.cancelable, o = a.data, i = document.createEvent(\"Events\"), i.initEvent(t, !0, r === !0), i.data = null != o ? o : {}, i.cancelable && !n && (s = i.preventDefault, i.preventDefault = function () {\n return this.defaultPrevented || Object.defineProperty(this, \"defaultPrevented\", {\n get: function () {\n return !0;\n }\n }), s.call(this);\n }), (null != u ? u : document).dispatchEvent(i), i;\n }, n = function () {\n var t;\n return t = document.createEvent(\"Events\"), t.initEvent(\"test\", !0, !0), t.preventDefault(), t.defaultPrevented;\n }(), e.match = function (t, e) {\n return r.call(t, e);\n }, r = function () {\n var t, e, r, n;\n return t = document.documentElement, null != (e = null != (r = null != (n = t.matchesSelector) ? n : t.webkitMatchesSelector) ? r : t.msMatchesSelector) ? e : t.mozMatchesSelector;\n }(), e.uuid = function () {\n var t, e, r;\n for (r = \"\", t = e = 1; 36 >= e; t = ++e) r += 9 === t || 14 === t || 19 === t || 24 === t ? \"-\" : 15 === t ? \"4\" : 20 === t ? (Math.floor(4 * Math.random()) + 8).toString(16) : Math.floor(15 * Math.random()).toString(16);\n return r;\n };\n }).call(this), function () {\n e.Location = function () {\n function t(t) {\n var e, r;\n null == t && (t = \"\"), r = document.createElement(\"a\"), r.href = t.toString(), this.absoluteURL = r.href, e = r.hash.length, 2 > e ? this.requestURL = this.absoluteURL : (this.requestURL = this.absoluteURL.slice(0, -e), this.anchor = r.hash.slice(1));\n }\n var e, r, n, o;\n return t.wrap = function (t) {\n return t instanceof this ? t : new this(t);\n }, t.prototype.getOrigin = function () {\n return this.absoluteURL.split(\"/\", 3).join(\"/\");\n }, t.prototype.getPath = function () {\n var t, e;\n return null != (t = null != (e = this.requestURL.match(/\\/\\/[^\\/]*(\\/[^?;]*)/)) ? e[1] : void 0) ? t : \"/\";\n }, t.prototype.getPathComponents = function () {\n return this.getPath().split(\"/\").slice(1);\n }, t.prototype.getLastPathComponent = function () {\n return this.getPathComponents().slice(-1)[0];\n }, t.prototype.getExtension = function () {\n var t, e;\n return null != (t = null != (e = this.getLastPathComponent().match(/\\.[^.]*$/)) ? e[0] : void 0) ? t : \"\";\n }, t.prototype.isHTML = function () {\n return this.getExtension().match(/^(?:|\\.(?:htm|html|xhtml))$/);\n }, t.prototype.isPrefixedBy = function (t) {\n var e;\n return e = r(t), this.isEqualTo(t) || o(this.absoluteURL, e);\n }, t.prototype.isEqualTo = function (t) {\n return this.absoluteURL === (null != t ? t.absoluteURL : void 0);\n }, t.prototype.toCacheKey = function () {\n return this.requestURL;\n }, t.prototype.toJSON = function () {\n return this.absoluteURL;\n }, t.prototype.toString = function () {\n return this.absoluteURL;\n }, t.prototype.valueOf = function () {\n return this.absoluteURL;\n }, r = function (t) {\n return e(t.getOrigin() + t.getPath());\n }, e = function (t) {\n return n(t, \"/\") ? t : t + \"/\";\n }, o = function (t, e) {\n return t.slice(0, e.length) === e;\n }, n = function (t, e) {\n return t.slice(-e.length) === e;\n }, t;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.HttpRequest = function () {\n function r(r, n, o) {\n this.delegate = r, this.requestCanceled = t(this.requestCanceled, this), this.requestTimedOut = t(this.requestTimedOut, this), this.requestFailed = t(this.requestFailed, this), this.requestLoaded = t(this.requestLoaded, this), this.requestProgressed = t(this.requestProgressed, this), this.url = e.Location.wrap(n).requestURL, this.referrer = e.Location.wrap(o).absoluteURL, this.createXHR();\n }\n return r.NETWORK_FAILURE = 0, r.TIMEOUT_FAILURE = -1, r.timeout = 60, r.prototype.send = function () {\n var t;\n return this.xhr && !this.sent ? (this.notifyApplicationBeforeRequestStart(), this.setProgress(0), this.xhr.send(), this.sent = !0, \"function\" == typeof (t = this.delegate).requestStarted ? t.requestStarted() : void 0) : void 0;\n }, r.prototype.cancel = function () {\n return this.xhr && this.sent ? this.xhr.abort() : void 0;\n }, r.prototype.requestProgressed = function (t) {\n return t.lengthComputable ? this.setProgress(t.loaded / t.total) : void 0;\n }, r.prototype.requestLoaded = function () {\n return this.endRequest(function (t) {\n return function () {\n var e;\n return 200 <= (e = t.xhr.status) && 300 > e ? t.delegate.requestCompletedWithResponse(t.xhr.responseText, t.xhr.getResponseHeader(\"Turbolinks-Location\")) : (t.failed = !0, t.delegate.requestFailedWithStatusCode(t.xhr.status, t.xhr.responseText));\n };\n }(this));\n }, r.prototype.requestFailed = function () {\n return this.endRequest(function (t) {\n return function () {\n return t.failed = !0, t.delegate.requestFailedWithStatusCode(t.constructor.NETWORK_FAILURE);\n };\n }(this));\n }, r.prototype.requestTimedOut = function () {\n return this.endRequest(function (t) {\n return function () {\n return t.failed = !0, t.delegate.requestFailedWithStatusCode(t.constructor.TIMEOUT_FAILURE);\n };\n }(this));\n }, r.prototype.requestCanceled = function () {\n return this.endRequest();\n }, r.prototype.notifyApplicationBeforeRequestStart = function () {\n return e.dispatch(\"turbolinks:request-start\", {\n data: {\n url: this.url,\n xhr: this.xhr\n }\n });\n }, r.prototype.notifyApplicationAfterRequestEnd = function () {\n return e.dispatch(\"turbolinks:request-end\", {\n data: {\n url: this.url,\n xhr: this.xhr\n }\n });\n }, r.prototype.createXHR = function () {\n return this.xhr = new XMLHttpRequest(), this.xhr.open(\"GET\", this.url, !0), this.xhr.timeout = 1e3 * this.constructor.timeout, this.xhr.setRequestHeader(\"Accept\", \"text/html, application/xhtml+xml\"), this.xhr.setRequestHeader(\"Turbolinks-Referrer\", this.referrer), this.xhr.onprogress = this.requestProgressed, this.xhr.onload = this.requestLoaded, this.xhr.onerror = this.requestFailed, this.xhr.ontimeout = this.requestTimedOut, this.xhr.onabort = this.requestCanceled;\n }, r.prototype.endRequest = function (t) {\n return this.xhr ? (this.notifyApplicationAfterRequestEnd(), null != t && t.call(this), this.destroy()) : void 0;\n }, r.prototype.setProgress = function (t) {\n var e;\n return this.progress = t, \"function\" == typeof (e = this.delegate).requestProgressed ? e.requestProgressed(this.progress) : void 0;\n }, r.prototype.destroy = function () {\n var t;\n return this.setProgress(1), \"function\" == typeof (t = this.delegate).requestFinished && t.requestFinished(), this.delegate = null, this.xhr = null;\n }, r;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.ProgressBar = function () {\n function e() {\n this.trickle = t(this.trickle, this), this.stylesheetElement = this.createStylesheetElement(), this.progressElement = this.createProgressElement();\n }\n var r;\n return r = 300, e.defaultCSS = \".turbolinks-progress-bar {\\n position: fixed;\\n display: block;\\n top: 0;\\n left: 0;\\n height: 3px;\\n background: #0076ff;\\n z-index: 9999;\\n transition: width \" + r + \"ms ease-out, opacity \" + r / 2 + \"ms \" + r / 2 + \"ms ease-in;\\n transform: translate3d(0, 0, 0);\\n}\", e.prototype.show = function () {\n return this.visible ? void 0 : (this.visible = !0, this.installStylesheetElement(), this.installProgressElement(), this.startTrickling());\n }, e.prototype.hide = function () {\n return this.visible && !this.hiding ? (this.hiding = !0, this.fadeProgressElement(function (t) {\n return function () {\n return t.uninstallProgressElement(), t.stopTrickling(), t.visible = !1, t.hiding = !1;\n };\n }(this))) : void 0;\n }, e.prototype.setValue = function (t) {\n return this.value = t, this.refresh();\n }, e.prototype.installStylesheetElement = function () {\n return document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }, e.prototype.installProgressElement = function () {\n return this.progressElement.style.width = 0, this.progressElement.style.opacity = 1, document.documentElement.insertBefore(this.progressElement, document.body), this.refresh();\n }, e.prototype.fadeProgressElement = function (t) {\n return this.progressElement.style.opacity = 0, setTimeout(t, 1.5 * r);\n }, e.prototype.uninstallProgressElement = function () {\n return this.progressElement.parentNode ? document.documentElement.removeChild(this.progressElement) : void 0;\n }, e.prototype.startTrickling = function () {\n return null != this.trickleInterval ? this.trickleInterval : this.trickleInterval = setInterval(this.trickle, r);\n }, e.prototype.stopTrickling = function () {\n return clearInterval(this.trickleInterval), this.trickleInterval = null;\n }, e.prototype.trickle = function () {\n return this.setValue(this.value + Math.random() / 100);\n }, e.prototype.refresh = function () {\n return requestAnimationFrame(function (t) {\n return function () {\n return t.progressElement.style.width = 10 + 90 * t.value + \"%\";\n };\n }(this));\n }, e.prototype.createStylesheetElement = function () {\n var t;\n return t = document.createElement(\"style\"), t.type = \"text/css\", t.textContent = this.constructor.defaultCSS, t;\n }, e.prototype.createProgressElement = function () {\n var t;\n return t = document.createElement(\"div\"), t.className = \"turbolinks-progress-bar\", t;\n }, e;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.BrowserAdapter = function () {\n function r(r) {\n this.controller = r, this.showProgressBar = t(this.showProgressBar, this), this.progressBar = new e.ProgressBar();\n }\n var n, o, i;\n return i = e.HttpRequest, n = i.NETWORK_FAILURE, o = i.TIMEOUT_FAILURE, r.prototype.visitProposedToLocationWithAction = function (t, e) {\n return this.controller.startVisitToLocationWithAction(t, e);\n }, r.prototype.visitStarted = function (t) {\n return t.issueRequest(), t.changeHistory(), t.loadCachedSnapshot();\n }, r.prototype.visitRequestStarted = function (t) {\n return this.progressBar.setValue(0), t.hasCachedSnapshot() || \"restore\" !== t.action ? this.showProgressBarAfterDelay() : this.showProgressBar();\n }, r.prototype.visitRequestProgressed = function (t) {\n return this.progressBar.setValue(t.progress);\n }, r.prototype.visitRequestCompleted = function (t) {\n return t.loadResponse();\n }, r.prototype.visitRequestFailedWithStatusCode = function (t, e) {\n switch (e) {\n case n:\n case o:\n return this.reload();\n default:\n return t.loadResponse();\n }\n }, r.prototype.visitRequestFinished = function (t) {\n return this.hideProgressBar();\n }, r.prototype.visitCompleted = function (t) {\n return t.followRedirect();\n }, r.prototype.pageInvalidated = function () {\n return this.reload();\n }, r.prototype.showProgressBarAfterDelay = function () {\n return this.progressBarTimeout = setTimeout(this.showProgressBar, this.controller.progressBarDelay);\n }, r.prototype.showProgressBar = function () {\n return this.progressBar.show();\n }, r.prototype.hideProgressBar = function () {\n return this.progressBar.hide(), clearTimeout(this.progressBarTimeout);\n }, r.prototype.reload = function () {\n return window.location.reload();\n }, r;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.History = function () {\n function r(e) {\n this.delegate = e, this.onPageLoad = t(this.onPageLoad, this), this.onPopState = t(this.onPopState, this);\n }\n return r.prototype.start = function () {\n return this.started ? void 0 : (addEventListener(\"popstate\", this.onPopState, !1), addEventListener(\"load\", this.onPageLoad, !1), this.started = !0);\n }, r.prototype.stop = function () {\n return this.started ? (removeEventListener(\"popstate\", this.onPopState, !1), removeEventListener(\"load\", this.onPageLoad, !1), this.started = !1) : void 0;\n }, r.prototype.push = function (t, r) {\n return t = e.Location.wrap(t), this.update(\"push\", t, r);\n }, r.prototype.replace = function (t, r) {\n return t = e.Location.wrap(t), this.update(\"replace\", t, r);\n }, r.prototype.onPopState = function (t) {\n var r, n, o, i;\n return this.shouldHandlePopState() && (i = null != (n = t.state) ? n.turbolinks : void 0) ? (r = e.Location.wrap(window.location), o = i.restorationIdentifier, this.delegate.historyPoppedToLocationWithRestorationIdentifier(r, o)) : void 0;\n }, r.prototype.onPageLoad = function (t) {\n return e.defer(function (t) {\n return function () {\n return t.pageLoaded = !0;\n };\n }(this));\n }, r.prototype.shouldHandlePopState = function () {\n return this.pageIsLoaded();\n }, r.prototype.pageIsLoaded = function () {\n return this.pageLoaded || \"complete\" === document.readyState;\n }, r.prototype.update = function (t, e, r) {\n var n;\n return n = {\n turbolinks: {\n restorationIdentifier: r\n }\n }, history[t + \"State\"](n, null, e);\n }, r;\n }();\n }.call(this), function () {\n e.HeadDetails = function () {\n function t(t) {\n var e, r, n, s, a, u;\n for (this.elements = {}, n = 0, a = t.length; a > n; n++) u = t[n], u.nodeType === Node.ELEMENT_NODE && (s = u.outerHTML, r = null != (e = this.elements)[s] ? e[s] : e[s] = {\n type: i(u),\n tracked: o(u),\n elements: []\n }, r.elements.push(u));\n }\n var e, r, n, o, i;\n return t.fromHeadElement = function (t) {\n var e;\n return new this(null != (e = null != t ? t.childNodes : void 0) ? e : []);\n }, t.prototype.hasElementWithKey = function (t) {\n return t in this.elements;\n }, t.prototype.getTrackedElementSignature = function () {\n var t, e;\n return function () {\n var r, n;\n r = this.elements, n = [];\n for (t in r) e = r[t].tracked, e && n.push(t);\n return n;\n }.call(this).join(\"\");\n }, t.prototype.getScriptElementsNotInDetails = function (t) {\n return this.getElementsMatchingTypeNotInDetails(\"script\", t);\n }, t.prototype.getStylesheetElementsNotInDetails = function (t) {\n return this.getElementsMatchingTypeNotInDetails(\"stylesheet\", t);\n }, t.prototype.getElementsMatchingTypeNotInDetails = function (t, e) {\n var r, n, o, i, s, a;\n o = this.elements, s = [];\n for (n in o) i = o[n], a = i.type, r = i.elements, a !== t || e.hasElementWithKey(n) || s.push(r[0]);\n return s;\n }, t.prototype.getProvisionalElements = function () {\n var t, e, r, n, o, i, s;\n r = [], n = this.elements;\n for (e in n) o = n[e], s = o.type, i = o.tracked, t = o.elements, null != s || i ? t.length > 1 && r.push.apply(r, t.slice(1)) : r.push.apply(r, t);\n return r;\n }, t.prototype.getMetaValue = function (t) {\n var e;\n return null != (e = this.findMetaElementByName(t)) ? e.getAttribute(\"content\") : void 0;\n }, t.prototype.findMetaElementByName = function (t) {\n var r, n, o, i;\n r = void 0, i = this.elements;\n for (o in i) n = i[o].elements, e(n[0], t) && (r = n[0]);\n return r;\n }, i = function (t) {\n return r(t) ? \"script\" : n(t) ? \"stylesheet\" : void 0;\n }, o = function (t) {\n return \"reload\" === t.getAttribute(\"data-turbolinks-track\");\n }, r = function (t) {\n var e;\n return e = t.tagName.toLowerCase(), \"script\" === e;\n }, n = function (t) {\n var e;\n return e = t.tagName.toLowerCase(), \"style\" === e || \"link\" === e && \"stylesheet\" === t.getAttribute(\"rel\");\n }, e = function (t, e) {\n var r;\n return r = t.tagName.toLowerCase(), \"meta\" === r && t.getAttribute(\"name\") === e;\n }, t;\n }();\n }.call(this), function () {\n e.Snapshot = function () {\n function t(t, e) {\n this.headDetails = t, this.bodyElement = e;\n }\n return t.wrap = function (t) {\n return t instanceof this ? t : \"string\" == typeof t ? this.fromHTMLString(t) : this.fromHTMLElement(t);\n }, t.fromHTMLString = function (t) {\n var e;\n return e = document.createElement(\"html\"), e.innerHTML = t, this.fromHTMLElement(e);\n }, t.fromHTMLElement = function (t) {\n var r, n, o, i;\n return o = t.querySelector(\"head\"), r = null != (i = t.querySelector(\"body\")) ? i : document.createElement(\"body\"), n = e.HeadDetails.fromHeadElement(o), new this(n, r);\n }, t.prototype.clone = function () {\n return new this.constructor(this.headDetails, this.bodyElement.cloneNode(!0));\n }, t.prototype.getRootLocation = function () {\n var t, r;\n return r = null != (t = this.getSetting(\"root\")) ? t : \"/\", new e.Location(r);\n }, t.prototype.getCacheControlValue = function () {\n return this.getSetting(\"cache-control\");\n }, t.prototype.getElementForAnchor = function (t) {\n try {\n return this.bodyElement.querySelector(\"[id='\" + t + \"'], a[name='\" + t + \"']\");\n } catch (e) {}\n }, t.prototype.getPermanentElements = function () {\n return this.bodyElement.querySelectorAll(\"[id][data-turbolinks-permanent]\");\n }, t.prototype.getPermanentElementById = function (t) {\n return this.bodyElement.querySelector(\"#\" + t + \"[data-turbolinks-permanent]\");\n }, t.prototype.getPermanentElementsPresentInSnapshot = function (t) {\n var e, r, n, o, i;\n for (o = this.getPermanentElements(), i = [], r = 0, n = o.length; n > r; r++) e = o[r], t.getPermanentElementById(e.id) && i.push(e);\n return i;\n }, t.prototype.findFirstAutofocusableElement = function () {\n return this.bodyElement.querySelector(\"[autofocus]\");\n }, t.prototype.hasAnchor = function (t) {\n return null != this.getElementForAnchor(t);\n }, t.prototype.isPreviewable = function () {\n return \"no-preview\" !== this.getCacheControlValue();\n }, t.prototype.isCacheable = function () {\n return \"no-cache\" !== this.getCacheControlValue();\n }, t.prototype.isVisitable = function () {\n return \"reload\" !== this.getSetting(\"visit-control\");\n }, t.prototype.getSetting = function (t) {\n return this.headDetails.getMetaValue(\"turbolinks-\" + t);\n }, t;\n }();\n }.call(this), function () {\n var t = [].slice;\n e.Renderer = function () {\n function e() {}\n var r;\n return e.render = function () {\n var e, r, n, o;\n return n = arguments[0], r = arguments[1], e = 3 <= arguments.length ? t.call(arguments, 2) : [], o = function (t, e, r) {\n r.prototype = t.prototype;\n var n = new r(),\n o = t.apply(n, e);\n return Object(o) === o ? o : n;\n }(this, e, function () {}), o.delegate = n, o.render(r), o;\n }, e.prototype.renderView = function (t) {\n return this.delegate.viewWillRender(this.newBody), t(), this.delegate.viewRendered(this.newBody);\n }, e.prototype.invalidateView = function () {\n return this.delegate.viewInvalidated();\n }, e.prototype.createScriptElement = function (t) {\n var e;\n return \"false\" === t.getAttribute(\"data-turbolinks-eval\") ? t : (e = document.createElement(\"script\"), e.textContent = t.textContent, e.async = !1, r(e, t), e);\n }, r = function (t, e) {\n var r, n, o, i, s, a, u;\n for (i = e.attributes, a = [], r = 0, n = i.length; n > r; r++) s = i[r], o = s.name, u = s.value, a.push(t.setAttribute(o, u));\n return a;\n }, e;\n }();\n }.call(this), function () {\n var t,\n r,\n n = function (t, e) {\n function r() {\n this.constructor = t;\n }\n for (var n in e) o.call(e, n) && (t[n] = e[n]);\n return r.prototype = e.prototype, t.prototype = new r(), t.__super__ = e.prototype, t;\n },\n o = {}.hasOwnProperty;\n e.SnapshotRenderer = function (e) {\n function o(t, e, r) {\n this.currentSnapshot = t, this.newSnapshot = e, this.isPreview = r, this.currentHeadDetails = this.currentSnapshot.headDetails, this.newHeadDetails = this.newSnapshot.headDetails, this.currentBody = this.currentSnapshot.bodyElement, this.newBody = this.newSnapshot.bodyElement;\n }\n return n(o, e), o.prototype.render = function (t) {\n return this.shouldRender() ? (this.mergeHead(), this.renderView(function (e) {\n return function () {\n return e.replaceBody(), e.isPreview || e.focusFirstAutofocusableElement(), t();\n };\n }(this))) : this.invalidateView();\n }, o.prototype.mergeHead = function () {\n return this.copyNewHeadStylesheetElements(), this.copyNewHeadScriptElements(), this.removeCurrentHeadProvisionalElements(), this.copyNewHeadProvisionalElements();\n }, o.prototype.replaceBody = function () {\n var t;\n return t = this.relocateCurrentBodyPermanentElements(), this.activateNewBodyScriptElements(), this.assignNewBody(), this.replacePlaceholderElementsWithClonedPermanentElements(t);\n }, o.prototype.shouldRender = function () {\n return this.newSnapshot.isVisitable() && this.trackedElementsAreIdentical();\n }, o.prototype.trackedElementsAreIdentical = function () {\n return this.currentHeadDetails.getTrackedElementSignature() === this.newHeadDetails.getTrackedElementSignature();\n }, o.prototype.copyNewHeadStylesheetElements = function () {\n var t, e, r, n, o;\n for (n = this.getNewHeadStylesheetElements(), o = [], e = 0, r = n.length; r > e; e++) t = n[e], o.push(document.head.appendChild(t));\n return o;\n }, o.prototype.copyNewHeadScriptElements = function () {\n var t, e, r, n, o;\n for (n = this.getNewHeadScriptElements(), o = [], e = 0, r = n.length; r > e; e++) t = n[e], o.push(document.head.appendChild(this.createScriptElement(t)));\n return o;\n }, o.prototype.removeCurrentHeadProvisionalElements = function () {\n var t, e, r, n, o;\n for (n = this.getCurrentHeadProvisionalElements(), o = [], e = 0, r = n.length; r > e; e++) t = n[e], o.push(document.head.removeChild(t));\n return o;\n }, o.prototype.copyNewHeadProvisionalElements = function () {\n var t, e, r, n, o;\n for (n = this.getNewHeadProvisionalElements(), o = [], e = 0, r = n.length; r > e; e++) t = n[e], o.push(document.head.appendChild(t));\n return o;\n }, o.prototype.relocateCurrentBodyPermanentElements = function () {\n var e, n, o, i, s, a, u;\n for (a = this.getCurrentBodyPermanentElements(), u = [], e = 0, n = a.length; n > e; e++) i = a[e], s = t(i), o = this.newSnapshot.getPermanentElementById(i.id), r(i, s.element), r(o, i), u.push(s);\n return u;\n }, o.prototype.replacePlaceholderElementsWithClonedPermanentElements = function (t) {\n var e, n, o, i, s, a, u;\n for (u = [], o = 0, i = t.length; i > o; o++) a = t[o], n = a.element, s = a.permanentElement, e = s.cloneNode(!0), u.push(r(n, e));\n return u;\n }, o.prototype.activateNewBodyScriptElements = function () {\n var t, e, n, o, i, s;\n for (i = this.getNewBodyScriptElements(), s = [], e = 0, o = i.length; o > e; e++) n = i[e], t = this.createScriptElement(n), s.push(r(n, t));\n return s;\n }, o.prototype.assignNewBody = function () {\n return document.body = this.newBody;\n }, o.prototype.focusFirstAutofocusableElement = function () {\n var t;\n return null != (t = this.newSnapshot.findFirstAutofocusableElement()) ? t.focus() : void 0;\n }, o.prototype.getNewHeadStylesheetElements = function () {\n return this.newHeadDetails.getStylesheetElementsNotInDetails(this.currentHeadDetails);\n }, o.prototype.getNewHeadScriptElements = function () {\n return this.newHeadDetails.getScriptElementsNotInDetails(this.currentHeadDetails);\n }, o.prototype.getCurrentHeadProvisionalElements = function () {\n return this.currentHeadDetails.getProvisionalElements();\n }, o.prototype.getNewHeadProvisionalElements = function () {\n return this.newHeadDetails.getProvisionalElements();\n }, o.prototype.getCurrentBodyPermanentElements = function () {\n return this.currentSnapshot.getPermanentElementsPresentInSnapshot(this.newSnapshot);\n }, o.prototype.getNewBodyScriptElements = function () {\n return this.newBody.querySelectorAll(\"script\");\n }, o;\n }(e.Renderer), t = function (t) {\n var e;\n return e = document.createElement(\"meta\"), e.setAttribute(\"name\", \"turbolinks-permanent-placeholder\"), e.setAttribute(\"content\", t.id), {\n element: e,\n permanentElement: t\n };\n }, r = function (t, e) {\n var r;\n return (r = t.parentNode) ? r.replaceChild(e, t) : void 0;\n };\n }.call(this), function () {\n var t = function (t, e) {\n function n() {\n this.constructor = t;\n }\n for (var o in e) r.call(e, o) && (t[o] = e[o]);\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n r = {}.hasOwnProperty;\n e.ErrorRenderer = function (e) {\n function r(t) {\n var e;\n e = document.createElement(\"html\"), e.innerHTML = t, this.newHead = e.querySelector(\"head\"), this.newBody = e.querySelector(\"body\");\n }\n return t(r, e), r.prototype.render = function (t) {\n return this.renderView(function (e) {\n return function () {\n return e.replaceHeadAndBody(), e.activateBodyScriptElements(), t();\n };\n }(this));\n }, r.prototype.replaceHeadAndBody = function () {\n var t, e;\n return e = document.head, t = document.body, e.parentNode.replaceChild(this.newHead, e), t.parentNode.replaceChild(this.newBody, t);\n }, r.prototype.activateBodyScriptElements = function () {\n var t, e, r, n, o, i;\n for (n = this.getScriptElements(), i = [], e = 0, r = n.length; r > e; e++) o = n[e], t = this.createScriptElement(o), i.push(o.parentNode.replaceChild(t, o));\n return i;\n }, r.prototype.getScriptElements = function () {\n return document.documentElement.querySelectorAll(\"script\");\n }, r;\n }(e.Renderer);\n }.call(this), function () {\n e.View = function () {\n function t(t) {\n this.delegate = t, this.htmlElement = document.documentElement;\n }\n return t.prototype.getRootLocation = function () {\n return this.getSnapshot().getRootLocation();\n }, t.prototype.getElementForAnchor = function (t) {\n return this.getSnapshot().getElementForAnchor(t);\n }, t.prototype.getSnapshot = function () {\n return e.Snapshot.fromHTMLElement(this.htmlElement);\n }, t.prototype.render = function (t, e) {\n var r, n, o;\n return o = t.snapshot, r = t.error, n = t.isPreview, this.markAsPreview(n), null != o ? this.renderSnapshot(o, n, e) : this.renderError(r, e);\n }, t.prototype.markAsPreview = function (t) {\n return t ? this.htmlElement.setAttribute(\"data-turbolinks-preview\", \"\") : this.htmlElement.removeAttribute(\"data-turbolinks-preview\");\n }, t.prototype.renderSnapshot = function (t, r, n) {\n return e.SnapshotRenderer.render(this.delegate, n, this.getSnapshot(), e.Snapshot.wrap(t), r);\n }, t.prototype.renderError = function (t, r) {\n return e.ErrorRenderer.render(this.delegate, r, t);\n }, t;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.ScrollManager = function () {\n function r(r) {\n this.delegate = r, this.onScroll = t(this.onScroll, this), this.onScroll = e.throttle(this.onScroll);\n }\n return r.prototype.start = function () {\n return this.started ? void 0 : (addEventListener(\"scroll\", this.onScroll, !1), this.onScroll(), this.started = !0);\n }, r.prototype.stop = function () {\n return this.started ? (removeEventListener(\"scroll\", this.onScroll, !1), this.started = !1) : void 0;\n }, r.prototype.scrollToElement = function (t) {\n return t.scrollIntoView();\n }, r.prototype.scrollToPosition = function (t) {\n var e, r;\n return e = t.x, r = t.y, window.scrollTo(e, r);\n }, r.prototype.onScroll = function (t) {\n return this.updatePosition({\n x: window.pageXOffset,\n y: window.pageYOffset\n });\n }, r.prototype.updatePosition = function (t) {\n var e;\n return this.position = t, null != (e = this.delegate) ? e.scrollPositionChanged(this.position) : void 0;\n }, r;\n }();\n }.call(this), function () {\n e.SnapshotCache = function () {\n function t(t) {\n this.size = t, this.keys = [], this.snapshots = {};\n }\n var r;\n return t.prototype.has = function (t) {\n var e;\n return e = r(t), e in this.snapshots;\n }, t.prototype.get = function (t) {\n var e;\n if (this.has(t)) return e = this.read(t), this.touch(t), e;\n }, t.prototype.put = function (t, e) {\n return this.write(t, e), this.touch(t), e;\n }, t.prototype.read = function (t) {\n var e;\n return e = r(t), this.snapshots[e];\n }, t.prototype.write = function (t, e) {\n var n;\n return n = r(t), this.snapshots[n] = e;\n }, t.prototype.touch = function (t) {\n var e, n;\n return n = r(t), e = this.keys.indexOf(n), e > -1 && this.keys.splice(e, 1), this.keys.unshift(n), this.trim();\n }, t.prototype.trim = function () {\n var t, e, r, n, o;\n for (n = this.keys.splice(this.size), o = [], t = 0, r = n.length; r > t; t++) e = n[t], o.push(delete this.snapshots[e]);\n return o;\n }, r = function (t) {\n return e.Location.wrap(t).toCacheKey();\n }, t;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.Visit = function () {\n function r(r, n, o) {\n this.controller = r, this.action = o, this.performScroll = t(this.performScroll, this), this.identifier = e.uuid(), this.location = e.Location.wrap(n), this.adapter = this.controller.adapter, this.state = \"initialized\", this.timingMetrics = {};\n }\n var n;\n return r.prototype.start = function () {\n return \"initialized\" === this.state ? (this.recordTimingMetric(\"visitStart\"), this.state = \"started\", this.adapter.visitStarted(this)) : void 0;\n }, r.prototype.cancel = function () {\n var t;\n return \"started\" === this.state ? (null != (t = this.request) && t.cancel(), this.cancelRender(), this.state = \"canceled\") : void 0;\n }, r.prototype.complete = function () {\n var t;\n return \"started\" === this.state ? (this.recordTimingMetric(\"visitEnd\"), this.state = \"completed\", \"function\" == typeof (t = this.adapter).visitCompleted && t.visitCompleted(this), this.controller.visitCompleted(this)) : void 0;\n }, r.prototype.fail = function () {\n var t;\n return \"started\" === this.state ? (this.state = \"failed\", \"function\" == typeof (t = this.adapter).visitFailed ? t.visitFailed(this) : void 0) : void 0;\n }, r.prototype.changeHistory = function () {\n var t, e;\n return this.historyChanged ? void 0 : (t = this.location.isEqualTo(this.referrer) ? \"replace\" : this.action, e = n(t), this.controller[e](this.location, this.restorationIdentifier), this.historyChanged = !0);\n }, r.prototype.issueRequest = function () {\n return this.shouldIssueRequest() && null == this.request ? (this.progress = 0, this.request = new e.HttpRequest(this, this.location, this.referrer), this.request.send()) : void 0;\n }, r.prototype.getCachedSnapshot = function () {\n var t;\n return !(t = this.controller.getCachedSnapshotForLocation(this.location)) || null != this.location.anchor && !t.hasAnchor(this.location.anchor) || \"restore\" !== this.action && !t.isPreviewable() ? void 0 : t;\n }, r.prototype.hasCachedSnapshot = function () {\n return null != this.getCachedSnapshot();\n }, r.prototype.loadCachedSnapshot = function () {\n var t, e;\n return (e = this.getCachedSnapshot()) ? (t = this.shouldIssueRequest(), this.render(function () {\n var r;\n return this.cacheSnapshot(), this.controller.render({\n snapshot: e,\n isPreview: t\n }, this.performScroll), \"function\" == typeof (r = this.adapter).visitRendered && r.visitRendered(this), t ? void 0 : this.complete();\n })) : void 0;\n }, r.prototype.loadResponse = function () {\n return null != this.response ? this.render(function () {\n var t, e;\n return this.cacheSnapshot(), this.request.failed ? (this.controller.render({\n error: this.response\n }, this.performScroll), \"function\" == typeof (t = this.adapter).visitRendered && t.visitRendered(this), this.fail()) : (this.controller.render({\n snapshot: this.response\n }, this.performScroll), \"function\" == typeof (e = this.adapter).visitRendered && e.visitRendered(this), this.complete());\n }) : void 0;\n }, r.prototype.followRedirect = function () {\n return this.redirectedToLocation && !this.followedRedirect ? (this.location = this.redirectedToLocation, this.controller.replaceHistoryWithLocationAndRestorationIdentifier(this.redirectedToLocation, this.restorationIdentifier), this.followedRedirect = !0) : void 0;\n }, r.prototype.requestStarted = function () {\n var t;\n return this.recordTimingMetric(\"requestStart\"), \"function\" == typeof (t = this.adapter).visitRequestStarted ? t.visitRequestStarted(this) : void 0;\n }, r.prototype.requestProgressed = function (t) {\n var e;\n return this.progress = t, \"function\" == typeof (e = this.adapter).visitRequestProgressed ? e.visitRequestProgressed(this) : void 0;\n }, r.prototype.requestCompletedWithResponse = function (t, r) {\n return this.response = t, null != r && (this.redirectedToLocation = e.Location.wrap(r)), this.adapter.visitRequestCompleted(this);\n }, r.prototype.requestFailedWithStatusCode = function (t, e) {\n return this.response = e, this.adapter.visitRequestFailedWithStatusCode(this, t);\n }, r.prototype.requestFinished = function () {\n var t;\n return this.recordTimingMetric(\"requestEnd\"), \"function\" == typeof (t = this.adapter).visitRequestFinished ? t.visitRequestFinished(this) : void 0;\n }, r.prototype.performScroll = function () {\n return this.scrolled ? void 0 : (\"restore\" === this.action ? this.scrollToRestoredPosition() || this.scrollToTop() : this.scrollToAnchor() || this.scrollToTop(), this.scrolled = !0);\n }, r.prototype.scrollToRestoredPosition = function () {\n var t, e;\n return t = null != (e = this.restorationData) ? e.scrollPosition : void 0, null != t ? (this.controller.scrollToPosition(t), !0) : void 0;\n }, r.prototype.scrollToAnchor = function () {\n return null != this.location.anchor ? (this.controller.scrollToAnchor(this.location.anchor), !0) : void 0;\n }, r.prototype.scrollToTop = function () {\n return this.controller.scrollToPosition({\n x: 0,\n y: 0\n });\n }, r.prototype.recordTimingMetric = function (t) {\n var e;\n return null != (e = this.timingMetrics)[t] ? e[t] : e[t] = new Date().getTime();\n }, r.prototype.getTimingMetrics = function () {\n return e.copyObject(this.timingMetrics);\n }, n = function (t) {\n switch (t) {\n case \"replace\":\n return \"replaceHistoryWithLocationAndRestorationIdentifier\";\n case \"advance\":\n case \"restore\":\n return \"pushHistoryWithLocationAndRestorationIdentifier\";\n }\n }, r.prototype.shouldIssueRequest = function () {\n return \"restore\" === this.action ? !this.hasCachedSnapshot() : !0;\n }, r.prototype.cacheSnapshot = function () {\n return this.snapshotCached ? void 0 : (this.controller.cacheSnapshot(), this.snapshotCached = !0);\n }, r.prototype.render = function (t) {\n return this.cancelRender(), this.frame = requestAnimationFrame(function (e) {\n return function () {\n return e.frame = null, t.call(e);\n };\n }(this));\n }, r.prototype.cancelRender = function () {\n return this.frame ? cancelAnimationFrame(this.frame) : void 0;\n }, r;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.Controller = function () {\n function r() {\n this.clickBubbled = t(this.clickBubbled, this), this.clickCaptured = t(this.clickCaptured, this), this.pageLoaded = t(this.pageLoaded, this), this.history = new e.History(this), this.view = new e.View(this), this.scrollManager = new e.ScrollManager(this), this.restorationData = {}, this.clearCache(), this.setProgressBarDelay(500);\n }\n return r.prototype.start = function () {\n return e.supported && !this.started ? (addEventListener(\"click\", this.clickCaptured, !0), addEventListener(\"DOMContentLoaded\", this.pageLoaded, !1), this.scrollManager.start(), this.startHistory(), this.started = !0, this.enabled = !0) : void 0;\n }, r.prototype.disable = function () {\n return this.enabled = !1;\n }, r.prototype.stop = function () {\n return this.started ? (removeEventListener(\"click\", this.clickCaptured, !0), removeEventListener(\"DOMContentLoaded\", this.pageLoaded, !1), this.scrollManager.stop(), this.stopHistory(), this.started = !1) : void 0;\n }, r.prototype.clearCache = function () {\n return this.cache = new e.SnapshotCache(10);\n }, r.prototype.visit = function (t, r) {\n var n, o;\n return null == r && (r = {}), t = e.Location.wrap(t), this.applicationAllowsVisitingLocation(t) ? this.locationIsVisitable(t) ? (n = null != (o = r.action) ? o : \"advance\", this.adapter.visitProposedToLocationWithAction(t, n)) : window.location = t : void 0;\n }, r.prototype.startVisitToLocationWithAction = function (t, r, n) {\n var o;\n return e.supported ? (o = this.getRestorationDataForIdentifier(n), this.startVisit(t, r, {\n restorationData: o\n })) : window.location = t;\n }, r.prototype.setProgressBarDelay = function (t) {\n return this.progressBarDelay = t;\n }, r.prototype.startHistory = function () {\n return this.location = e.Location.wrap(window.location), this.restorationIdentifier = e.uuid(), this.history.start(), this.history.replace(this.location, this.restorationIdentifier);\n }, r.prototype.stopHistory = function () {\n return this.history.stop();\n }, r.prototype.pushHistoryWithLocationAndRestorationIdentifier = function (t, r) {\n return this.restorationIdentifier = r, this.location = e.Location.wrap(t), this.history.push(this.location, this.restorationIdentifier);\n }, r.prototype.replaceHistoryWithLocationAndRestorationIdentifier = function (t, r) {\n return this.restorationIdentifier = r, this.location = e.Location.wrap(t), this.history.replace(this.location, this.restorationIdentifier);\n }, r.prototype.historyPoppedToLocationWithRestorationIdentifier = function (t, r) {\n var n;\n return this.restorationIdentifier = r, this.enabled ? (n = this.getRestorationDataForIdentifier(this.restorationIdentifier), this.startVisit(t, \"restore\", {\n restorationIdentifier: this.restorationIdentifier,\n restorationData: n,\n historyChanged: !0\n }), this.location = e.Location.wrap(t)) : this.adapter.pageInvalidated();\n }, r.prototype.getCachedSnapshotForLocation = function (t) {\n var e;\n return null != (e = this.cache.get(t)) ? e.clone() : void 0;\n }, r.prototype.shouldCacheSnapshot = function () {\n return this.view.getSnapshot().isCacheable();\n }, r.prototype.cacheSnapshot = function () {\n var t, r;\n return this.shouldCacheSnapshot() ? (this.notifyApplicationBeforeCachingSnapshot(), r = this.view.getSnapshot(), t = this.lastRenderedLocation, e.defer(function (e) {\n return function () {\n return e.cache.put(t, r.clone());\n };\n }(this))) : void 0;\n }, r.prototype.scrollToAnchor = function (t) {\n var e;\n return (e = this.view.getElementForAnchor(t)) ? this.scrollToElement(e) : this.scrollToPosition({\n x: 0,\n y: 0\n });\n }, r.prototype.scrollToElement = function (t) {\n return this.scrollManager.scrollToElement(t);\n }, r.prototype.scrollToPosition = function (t) {\n return this.scrollManager.scrollToPosition(t);\n }, r.prototype.scrollPositionChanged = function (t) {\n var e;\n return e = this.getCurrentRestorationData(), e.scrollPosition = t;\n }, r.prototype.render = function (t, e) {\n return this.view.render(t, e);\n }, r.prototype.viewInvalidated = function () {\n return this.adapter.pageInvalidated();\n }, r.prototype.viewWillRender = function (t) {\n return this.notifyApplicationBeforeRender(t);\n }, r.prototype.viewRendered = function () {\n return this.lastRenderedLocation = this.currentVisit.location, this.notifyApplicationAfterRender();\n }, r.prototype.pageLoaded = function () {\n return this.lastRenderedLocation = this.location, this.notifyApplicationAfterPageLoad();\n }, r.prototype.clickCaptured = function () {\n return removeEventListener(\"click\", this.clickBubbled, !1), addEventListener(\"click\", this.clickBubbled, !1);\n }, r.prototype.clickBubbled = function (t) {\n var e, r, n;\n return this.enabled && this.clickEventIsSignificant(t) && (r = this.getVisitableLinkForNode(t.target)) && (n = this.getVisitableLocationForLink(r)) && this.applicationAllowsFollowingLinkToLocation(r, n) ? (t.preventDefault(), e = this.getActionForLink(r), this.visit(n, {\n action: e\n })) : void 0;\n }, r.prototype.applicationAllowsFollowingLinkToLocation = function (t, e) {\n var r;\n return r = this.notifyApplicationAfterClickingLinkToLocation(t, e), !r.defaultPrevented;\n }, r.prototype.applicationAllowsVisitingLocation = function (t) {\n var e;\n return e = this.notifyApplicationBeforeVisitingLocation(t), !e.defaultPrevented;\n }, r.prototype.notifyApplicationAfterClickingLinkToLocation = function (t, r) {\n return e.dispatch(\"turbolinks:click\", {\n target: t,\n data: {\n url: r.absoluteURL\n },\n cancelable: !0\n });\n }, r.prototype.notifyApplicationBeforeVisitingLocation = function (t) {\n return e.dispatch(\"turbolinks:before-visit\", {\n data: {\n url: t.absoluteURL\n },\n cancelable: !0\n });\n }, r.prototype.notifyApplicationAfterVisitingLocation = function (t) {\n return e.dispatch(\"turbolinks:visit\", {\n data: {\n url: t.absoluteURL\n }\n });\n }, r.prototype.notifyApplicationBeforeCachingSnapshot = function () {\n return e.dispatch(\"turbolinks:before-cache\");\n }, r.prototype.notifyApplicationBeforeRender = function (t) {\n return e.dispatch(\"turbolinks:before-render\", {\n data: {\n newBody: t\n }\n });\n }, r.prototype.notifyApplicationAfterRender = function () {\n return e.dispatch(\"turbolinks:render\");\n }, r.prototype.notifyApplicationAfterPageLoad = function (t) {\n return null == t && (t = {}), e.dispatch(\"turbolinks:load\", {\n data: {\n url: this.location.absoluteURL,\n timing: t\n }\n });\n }, r.prototype.startVisit = function (t, e, r) {\n var n;\n return null != (n = this.currentVisit) && n.cancel(), this.currentVisit = this.createVisit(t, e, r), this.currentVisit.start(), this.notifyApplicationAfterVisitingLocation(t);\n }, r.prototype.createVisit = function (t, r, n) {\n var o, i, s, a, u;\n return i = null != n ? n : {}, a = i.restorationIdentifier, s = i.restorationData, o = i.historyChanged, u = new e.Visit(this, t, r), u.restorationIdentifier = null != a ? a : e.uuid(), u.restorationData = e.copyObject(s), u.historyChanged = o, u.referrer = this.location, u;\n }, r.prototype.visitCompleted = function (t) {\n return this.notifyApplicationAfterPageLoad(t.getTimingMetrics());\n }, r.prototype.clickEventIsSignificant = function (t) {\n return !(t.defaultPrevented || t.target.isContentEditable || t.which > 1 || t.altKey || t.ctrlKey || t.metaKey || t.shiftKey);\n }, r.prototype.getVisitableLinkForNode = function (t) {\n return this.nodeIsVisitable(t) ? e.closest(t, \"a[href]:not([target]):not([download])\") : void 0;\n }, r.prototype.getVisitableLocationForLink = function (t) {\n var r;\n return r = new e.Location(t.getAttribute(\"href\")), this.locationIsVisitable(r) ? r : void 0;\n }, r.prototype.getActionForLink = function (t) {\n var e;\n return null != (e = t.getAttribute(\"data-turbolinks-action\")) ? e : \"advance\";\n }, r.prototype.nodeIsVisitable = function (t) {\n var r;\n return (r = e.closest(t, \"[data-turbolinks]\")) ? \"false\" !== r.getAttribute(\"data-turbolinks\") : !0;\n }, r.prototype.locationIsVisitable = function (t) {\n return t.isPrefixedBy(this.view.getRootLocation()) && t.isHTML();\n }, r.prototype.getCurrentRestorationData = function () {\n return this.getRestorationDataForIdentifier(this.restorationIdentifier);\n }, r.prototype.getRestorationDataForIdentifier = function (t) {\n var e;\n return null != (e = this.restorationData)[t] ? e[t] : e[t] = {};\n }, r;\n }();\n }.call(this), function () {\n !function () {\n var t, e;\n if ((t = e = document.currentScript) && !e.hasAttribute(\"data-turbolinks-suppress-warning\")) for (; t = t.parentNode;) if (t === document.body) return console.warn(\"You are loading Turbolinks from a