{"version":3,"sources":["tether.js","bootstrap.js","ekko-lightbox.js","furillo.tagfilter.jquery.js","furillo.noreferrer.jquery.js","site.js"],"names":["setCookie","cookieName","cookieValue","daysToExpire","date","Date","setTime","getTime","document","cookie","toUTCString","getCookie","name","allCookieArray","split","i","length","temp","trim","indexOf","substring","root","factory","define","amd","exports","module","Tether","this","_createClass","defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","Constructor","protoProps","staticProps","prototype","_classCallCheck","instance","TypeError","TetherBase","undefined","modules","zeroElement","getActualBoundingClientRect","node","boundingRect","getBoundingClientRect","rect","k","ownerDocument","_frameElement","defaultView","frameElement","frameRect","top","bottom","left","right","err","getScrollParents","el","position","getComputedStyle","parents","parent","parentNode","nodeType","style","push","_style","overflow","overflowX","overflowY","test","body","id","uniqueId","zeroPosCache","getOrigin","contains","createElement","setAttribute","extend","appendChild","getAttribute","defer","removeUtilElements","removeChild","getBounds","doc","documentElement","docEl","box","origin","width","scrollWidth","height","scrollHeight","clientTop","clientLeft","clientWidth","clientHeight","getOffsetParent","offsetParent","_scrollBarSize","getScrollBarSize","inner","outer","pointerEvents","visibility","widthContained","offsetWidth","widthScroll","out","arguments","args","Array","apply","slice","forEach","obj","hasOwnProperty","call","removeClass","classList","cls","remove","regex","RegExp","join","className","getClassName","replace","setClassName","addClass","add","hasClass","SVGAnimatedString","baseVal","updateClasses","all","deferred","fn","flush","pop","Evented","value","event","handler","ctx","once","bindings","on","splice","_len","_key","_bindings$event$i","context","Utils","_slicedToArray","arr","isArray","Symbol","iterator","_arr","_n","_d","_e","_s","_i","next","done","sliceIterator","_get","_x6","_x7","_x8","_again","object","property","receiver","Function","desc","getOwnPropertyDescriptor","getter","get","getPrototypeOf","Error","_TetherBase$Utils","within","a","b","diff","lastCall","lastDuration","pendingTimeout","tick","transformKey","transforms","tethers","tether","now","performance","Math","min","setTimeout","clearTimeout","window","addEventListener","MIRROR_LR","center","MIRROR_TB","middle","OFFSET_MAP","attachmentToOffset","attachment","addOffset","offsets","_ref","parseFloat","offsetToPx","offset","size","parseOffset","_value$split","_value$split2","parseAttachment","TetherClass","_Evented","options","_this","bind","history","setOptions","initialize","subClass","superClass","create","constructor","setPrototypeOf","__proto__","_inherits","classes","classPrefix","_this2","pos","targetOffset","targetAttachment","_options","element","targetModifier","jquery","querySelector","getClass","addTargetClasses","scrollParents","disable","enabled","enable","pageYOffset","pageXOffset","innerHeight","innerWidth","bounds","scrollBottom","borderTopWidth","borderBottomWidth","borderLeftWidth","fitAdj","pow","max","scrollPercentage","scrollTop","_cache","_this3","_this4","removeEventListener","_this5","elementAttach","targetAttach","_this6","_addAttachClasses","side","_this7","flushChanges","clearCache","relativeToAttachment","autoToFixedAttachment","updateAttachClasses","elementPos","cache","lastSize","_lastSize","targetPos","getTargetBounds","targetSize","manualOffset","manualTargetOffset","ret","scrollbarSize","page","viewport","win","parentElement","optimizations","moveElement","offsetPosition","offsetParentStyle","offsetParentSize","offsetBorder","toLowerCase","scrollLeft","move","unshift","_this8","same","type","found","point","e","d","css","transcribe","_same","_pos","gpu","yPos","xPos","devicePixelRatio","round","moved","bodyElement","offsetParentIsBody","currentNode","tagName","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","writeCSS","write","val","trigger","BOUNDS_FORMAT","constraints","targetHeight","targetWidth","allClasses","constraint","outOfBoundsClass","pinnedClass","addClasses","tAttachment","eAttachment","to","pin","changeAttachX","changeAttachY","_attachment$split","_attachment$split2","toUpperCase","substr","getBoundingRect","map","p","oobClass","pinned","oob","abutted","targetPosSide","shift","shiftTop","shiftLeft","_shift2","global","require","globalThis","self","bootstrap","jQuery","Popper","$","_defineProperties","_extends","assign","source","TRANSITION_END","transitionEndEmulator","duration","called","one","Util","triggerTransitionEnd","getUID","prefix","random","getElementById","getSelectorFromElement","selector","hrefAttr","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","reflow","offsetHeight","supportsTransitionEnd","Boolean","isElement","typeCheckConfig","componentName","config","configTypes","expectedTypes","valueType","toString","match","findShadowRoot","attachShadow","getRootNode","ShadowRoot","jQueryDetection","version","emulateTransitionEnd","special","bindType","delegateType","handle","is","handleObj","JQUERY_NO_CONFLICT","Alert","_element","_proto","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","closest","closeEvent","Event","_destroyElement","detach","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","noConflict","JQUERY_NO_CONFLICT$1","Button","toggle","triggerChangeEvent","addAriaPressed","input","checked","activeElement","focus","hasAttribute","toggleClass","button","initialButton","inputBtn","buttons","querySelectorAll","len","_button","NAME$2","EVENT_KEY$2","JQUERY_NO_CONFLICT$2","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","SELECTOR_INDICATORS","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","setInterval","visibilityState","index","activeIndex","_getItemIndex","direction","off","_handleSwipe","absDeltax","abs","_keydown","_addTouchEventListeners","start","originalEvent","pointerType","clientX","touches","end","which","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","children","directionalClassName","orderClassName","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","nextElementInterval","parseInt","defaultInterval","CLASS_NAME_ACTIVE$1","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$3","JQUERY_NO_CONFLICT$3","Default$1","DefaultType$1","SELECTOR_DATA_TOGGLE$1","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","filter","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","attr","setTransitioning","scrollSize","CLASS_NAME_COLLAPSE","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","selectors","$target","NAME$4","JQUERY_NO_CONFLICT$4","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","Default$2","flip","boundary","reference","display","popperConfig","DefaultType$2","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","noop","hideEvent","destroy","update","scheduleUpdate","stopPropagation","_getPlacement","$parentDropdown","placement","_getOffset","modifiers","preventOverflow","boundariesElement","applyStyle","toggles","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","item","EVENT_CLICK_DATA_API$4","JQUERY_NO_CONFLICT$5","Default$3","backdrop","DefaultType$3","SELECTOR_DIALOG","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","defaultPrevented","isModalOverflowing","modalTransitionDuration","modalBody","Node","ELEMENT_NODE","removeAttribute","_enforceFocus","shownEvent","transitionComplete","has","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","_this9","animate","appendTo","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","paddingLeft","paddingRight","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","elements","margin","scrollDiv","scrollbarWidth","_this11","uriAttrs","DefaultWhitelist","*","area","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","pre","s","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","keys","_loop","elName","nodeName","attributeList","attributes","whitelistedAttributes","concat","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","allowedAttribute","innerHTML","NAME$6","JQUERY_NO_CONFLICT$6","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","DefaultType$4","animation","template","title","delay","html","container","fallbackPlacement","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$4","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","EVENT_KEY","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","NAME","setContent","_getAttachment","addAttachmentClass","_getContainer","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","CLASS_PREFIX","setElementContent","CLASS_NAME_FADE$2","content","text","empty","append","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","find","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","popperData","popper","initConfigAnimation","NAME$7","JQUERY_NO_CONFLICT$7","BSCLS_PREFIX_REGEX$1","Default$5","DefaultType$5","Event$1","Popover","_Tooltip","_getContent","CLASS_PREFIX$1","CLASS_NAME_FADE$3","NAME$8","JQUERY_NO_CONFLICT$8","Default$6","method","DefaultType$6","EVENT_SCROLL","SELECTOR_NAV_LINKS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN_ITEMS","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","sort","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","scrollSpys","$spy","JQUERY_NO_CONFLICT$9","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","JQUERY_NO_CONFLICT$a","DefaultType$7","autohide","Default$7","Toast","_clearTimeout","_close","Scrollspy","footer","maxWidth","maxHeight","showArrows","wrapping","alwaysShowClose","loadingMessage","leftArrow","rightArrow","strings","fail","onShow","onShown","onHide","onHidden","onNavigate","onContentLoaded","Lightbox","_$modalArrows","_galleryIndex","_galleryName","_padding","_border","_titleIsShown","_footerIsShown","_wantedWidth","_wantedHeight","_touchstartX","_touchendX","_modalId","floor","_$element","_isBootstrap3","modal","VERSION","btn","dialog","_$modal","_$modalDialog","first","_$modalContent","_$modalBody","_$modalHeader","_$modalFooter","_$lightboxContainer","_$lightboxBodyOne","_$lightboxBodyTwo","_calculateBorders","_calculatePadding","_$galleryItems","_navigationalBinder","navigateLeft","navigateRight","updateNavigation","_toggleLoading","_handle","_resize","changedTouches","screenX","_swipeGesure","navigateTo","$nav","keyCode","src","_isImage","_getYoutubeId","_getVimeoId","_getInstagramId","string","$toUse","$current","_containerToUse","_updateTitleAndFooter","currentRemote","currentType","_detectRemoteType","_error","_preloadImage","_preloadImageByIndex","_showYoutubeVideo","_showVimeoVideo","_showInstagramVideo","_showHtml5Video","_loadRemoteContent","matches","_totalCssByAttribute","attribute","caption","remote","$containerForElement","query","_showVideoIframe","url","disableExternalCheck","_isExternal","load","proxy","location","protocol","http:","https:","host","message","console","error","startIndex","numberOfTimes","$containerForImage","loadingTimeout","Image","onload","image","onerror","imageAspecRatio","widthBorderAndPadding","addMargin","discountMargin","headerHeight","footerHeight","outerHeight","borderPadding","margins","ceil","_handleUpdate","Exception","pluginName","defaults","Plugin","_defaults","_name","init","$base","hash","pushState","pathname","filterList","$listWrapper","siblings","$a","rel","ready","$navbarToggler","$navbar","collapse","timeoutId","initMenuOverrides","ekkoLightbox","isNaN","messages","tagfilter","noreferrer"],"mappings":"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","sourcesContent":["/*! tether 1.4.7 */\n\n(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.Tether = factory();\n }\n}(this, function() {\n\n'use strict';\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar TetherBase = undefined;\nif (typeof TetherBase === 'undefined') {\n TetherBase = { modules: [] };\n}\n\nvar zeroElement = null;\n\n// Same as native getBoundingClientRect, except it takes into account parent offsets\n// if the element lies within a nested document ( or -like).\nfunction getActualBoundingClientRect(node) {\n var boundingRect = node.getBoundingClientRect();\n\n // The original object returned by getBoundingClientRect is immutable, so we clone it\n // We can't use extend because the properties are not considered part of the object by hasOwnProperty in IE9\n var rect = {};\n for (var k in boundingRect) {\n rect[k] = boundingRect[k];\n }\n\n try {\n if (node.ownerDocument !== document) {\n var _frameElement = node.ownerDocument.defaultView.frameElement;\n if (_frameElement) {\n var frameRect = getActualBoundingClientRect(_frameElement);\n rect.top += frameRect.top;\n rect.bottom += frameRect.top;\n rect.left += frameRect.left;\n rect.right += frameRect.left;\n }\n }\n } catch (err) {\n // Ignore \"Access is denied\" in IE11/Edge\n }\n\n return rect;\n}\n\nfunction getScrollParents(el) {\n // In firefox if the el is inside an iframe with display: none; window.getComputedStyle() will return null;\n // https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n var computedStyle = getComputedStyle(el) || {};\n var position = computedStyle.position;\n var parents = [];\n\n if (position === 'fixed') {\n return [el];\n }\n\n var parent = el;\n while ((parent = parent.parentNode) && parent && parent.nodeType === 1) {\n var style = undefined;\n try {\n style = getComputedStyle(parent);\n } catch (err) {}\n\n if (typeof style === 'undefined' || style === null) {\n parents.push(parent);\n return parents;\n }\n\n var _style = style;\n var overflow = _style.overflow;\n var overflowX = _style.overflowX;\n var overflowY = _style.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n if (position !== 'absolute' || ['relative', 'absolute', 'fixed'].indexOf(style.position) >= 0) {\n parents.push(parent);\n }\n }\n }\n\n parents.push(el.ownerDocument.body);\n\n // If the node is within a frame, account for the parent window scroll\n if (el.ownerDocument !== document) {\n parents.push(el.ownerDocument.defaultView);\n }\n\n return parents;\n}\n\nvar uniqueId = (function () {\n var id = 0;\n return function () {\n return ++id;\n };\n})();\n\nvar zeroPosCache = {};\nvar getOrigin = function getOrigin() {\n // getBoundingClientRect is unfortunately too accurate. It introduces a pixel or two of\n // jitter as the user scrolls that messes with our ability to detect if two positions\n // are equivilant or not. We place an element at the top left of the page that will\n // get the same jitter, so we can cancel the two out.\n var node = zeroElement;\n if (!node || !document.body.contains(node)) {\n node = document.createElement('div');\n node.setAttribute('data-tether-id', uniqueId());\n extend(node.style, {\n top: 0,\n left: 0,\n position: 'absolute'\n });\n\n document.body.appendChild(node);\n\n zeroElement = node;\n }\n\n var id = node.getAttribute('data-tether-id');\n if (typeof zeroPosCache[id] === 'undefined') {\n zeroPosCache[id] = getActualBoundingClientRect(node);\n\n // Clear the cache when this position call is done\n defer(function () {\n delete zeroPosCache[id];\n });\n }\n\n return zeroPosCache[id];\n};\n\nfunction removeUtilElements() {\n if (zeroElement) {\n document.body.removeChild(zeroElement);\n }\n zeroElement = null;\n};\n\nfunction getBounds(el) {\n var doc = undefined;\n if (el === document) {\n doc = document;\n el = document.documentElement;\n } else {\n doc = el.ownerDocument;\n }\n\n var docEl = doc.documentElement;\n\n var box = getActualBoundingClientRect(el);\n\n var origin = getOrigin();\n\n box.top -= origin.top;\n box.left -= origin.left;\n\n if (typeof box.width === 'undefined') {\n box.width = document.body.scrollWidth - box.left - box.right;\n }\n if (typeof box.height === 'undefined') {\n box.height = document.body.scrollHeight - box.top - box.bottom;\n }\n\n box.top = box.top - docEl.clientTop;\n box.left = box.left - docEl.clientLeft;\n box.right = doc.body.clientWidth - box.width - box.left;\n box.bottom = doc.body.clientHeight - box.height - box.top;\n\n return box;\n}\n\nfunction getOffsetParent(el) {\n return el.offsetParent || document.documentElement;\n}\n\nvar _scrollBarSize = null;\nfunction getScrollBarSize() {\n if (_scrollBarSize) {\n return _scrollBarSize;\n }\n var inner = document.createElement('div');\n inner.style.width = '100%';\n inner.style.height = '200px';\n\n var outer = document.createElement('div');\n extend(outer.style, {\n position: 'absolute',\n top: 0,\n left: 0,\n pointerEvents: 'none',\n visibility: 'hidden',\n width: '200px',\n height: '150px',\n overflow: 'hidden'\n });\n\n outer.appendChild(inner);\n\n document.body.appendChild(outer);\n\n var widthContained = inner.offsetWidth;\n outer.style.overflow = 'scroll';\n var widthScroll = inner.offsetWidth;\n\n if (widthContained === widthScroll) {\n widthScroll = outer.clientWidth;\n }\n\n document.body.removeChild(outer);\n\n var width = widthContained - widthScroll;\n\n _scrollBarSize = { width: width, height: width };\n return _scrollBarSize;\n}\n\nfunction extend() {\n var out = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var args = [];\n\n Array.prototype.push.apply(args, arguments);\n\n args.slice(1).forEach(function (obj) {\n if (obj) {\n for (var key in obj) {\n if (({}).hasOwnProperty.call(obj, key)) {\n out[key] = obj[key];\n }\n }\n }\n });\n\n return out;\n}\n\nfunction removeClass(el, name) {\n if (typeof el.classList !== 'undefined') {\n name.split(' ').forEach(function (cls) {\n if (cls.trim()) {\n el.classList.remove(cls);\n }\n });\n } else {\n var regex = new RegExp('(^| )' + name.split(' ').join('|') + '( |$)', 'gi');\n var className = getClassName(el).replace(regex, ' ');\n setClassName(el, className);\n }\n}\n\nfunction addClass(el, name) {\n if (typeof el.classList !== 'undefined') {\n name.split(' ').forEach(function (cls) {\n if (cls.trim()) {\n el.classList.add(cls);\n }\n });\n } else {\n removeClass(el, name);\n var cls = getClassName(el) + (' ' + name);\n setClassName(el, cls);\n }\n}\n\nfunction hasClass(el, name) {\n if (typeof el.classList !== 'undefined') {\n return el.classList.contains(name);\n }\n var className = getClassName(el);\n return new RegExp('(^| )' + name + '( |$)', 'gi').test(className);\n}\n\nfunction getClassName(el) {\n // Can't use just SVGAnimatedString here since nodes within a Frame in IE have\n // completely separately SVGAnimatedString base classes\n if (el.className instanceof el.ownerDocument.defaultView.SVGAnimatedString) {\n return el.className.baseVal;\n }\n return el.className;\n}\n\nfunction setClassName(el, className) {\n el.setAttribute('class', className);\n}\n\nfunction updateClasses(el, add, all) {\n // Of the set of 'all' classes, we need the 'add' classes, and only the\n // 'add' classes to be set.\n all.forEach(function (cls) {\n if (add.indexOf(cls) === -1 && hasClass(el, cls)) {\n removeClass(el, cls);\n }\n });\n\n add.forEach(function (cls) {\n if (!hasClass(el, cls)) {\n addClass(el, cls);\n }\n });\n}\n\nvar deferred = [];\n\nvar defer = function defer(fn) {\n deferred.push(fn);\n};\n\nvar flush = function flush() {\n var fn = undefined;\n while (fn = deferred.pop()) {\n fn();\n }\n};\n\nvar Evented = (function () {\n function Evented() {\n _classCallCheck(this, Evented);\n }\n\n _createClass(Evented, [{\n key: 'on',\n value: function on(event, handler, ctx) {\n var once = arguments.length <= 3 || arguments[3] === undefined ? false : arguments[3];\n\n if (typeof this.bindings === 'undefined') {\n this.bindings = {};\n }\n if (typeof this.bindings[event] === 'undefined') {\n this.bindings[event] = [];\n }\n this.bindings[event].push({ handler: handler, ctx: ctx, once: once });\n }\n }, {\n key: 'once',\n value: function once(event, handler, ctx) {\n this.on(event, handler, ctx, true);\n }\n }, {\n key: 'off',\n value: function off(event, handler) {\n if (typeof this.bindings === 'undefined' || typeof this.bindings[event] === 'undefined') {\n return;\n }\n\n if (typeof handler === 'undefined') {\n delete this.bindings[event];\n } else {\n var i = 0;\n while (i < this.bindings[event].length) {\n if (this.bindings[event][i].handler === handler) {\n this.bindings[event].splice(i, 1);\n } else {\n ++i;\n }\n }\n }\n }\n }, {\n key: 'trigger',\n value: function trigger(event) {\n if (typeof this.bindings !== 'undefined' && this.bindings[event]) {\n var i = 0;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n while (i < this.bindings[event].length) {\n var _bindings$event$i = this.bindings[event][i];\n var handler = _bindings$event$i.handler;\n var ctx = _bindings$event$i.ctx;\n var once = _bindings$event$i.once;\n\n var context = ctx;\n if (typeof context === 'undefined') {\n context = this;\n }\n\n handler.apply(context, args);\n\n if (once) {\n this.bindings[event].splice(i, 1);\n } else {\n ++i;\n }\n }\n }\n }\n }]);\n\n return Evented;\n})();\n\nTetherBase.Utils = {\n getActualBoundingClientRect: getActualBoundingClientRect,\n getScrollParents: getScrollParents,\n getBounds: getBounds,\n getOffsetParent: getOffsetParent,\n extend: extend,\n addClass: addClass,\n removeClass: removeClass,\n hasClass: hasClass,\n updateClasses: updateClasses,\n defer: defer,\n flush: flush,\n uniqueId: uniqueId,\n Evented: Evented,\n getScrollBarSize: getScrollBarSize,\n removeUtilElements: removeUtilElements\n};\n/* globals TetherBase, performance */\n\n'use strict';\n\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x6, _x7, _x8) { var _again = true; _function: while (_again) { var object = _x6, property = _x7, receiver = _x8; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x6 = parent; _x7 = property; _x8 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nif (typeof TetherBase === 'undefined') {\n throw new Error('You must include the utils.js file before tether.js');\n}\n\nvar _TetherBase$Utils = TetherBase.Utils;\nvar getScrollParents = _TetherBase$Utils.getScrollParents;\nvar getBounds = _TetherBase$Utils.getBounds;\nvar getOffsetParent = _TetherBase$Utils.getOffsetParent;\nvar extend = _TetherBase$Utils.extend;\nvar addClass = _TetherBase$Utils.addClass;\nvar removeClass = _TetherBase$Utils.removeClass;\nvar updateClasses = _TetherBase$Utils.updateClasses;\nvar defer = _TetherBase$Utils.defer;\nvar flush = _TetherBase$Utils.flush;\nvar getScrollBarSize = _TetherBase$Utils.getScrollBarSize;\nvar removeUtilElements = _TetherBase$Utils.removeUtilElements;\n\nfunction within(a, b) {\n var diff = arguments.length <= 2 || arguments[2] === undefined ? 1 : arguments[2];\n\n return a + diff >= b && b >= a - diff;\n}\n\nvar transformKey = (function () {\n if (typeof document === 'undefined') {\n return '';\n }\n var el = document.createElement('div');\n\n var transforms = ['transform', 'WebkitTransform', 'OTransform', 'MozTransform', 'msTransform'];\n for (var i = 0; i < transforms.length; ++i) {\n var key = transforms[i];\n if (el.style[key] !== undefined) {\n return key;\n }\n }\n})();\n\nvar tethers = [];\n\nvar position = function position() {\n tethers.forEach(function (tether) {\n tether.position(false);\n });\n flush();\n};\n\nfunction now() {\n if (typeof performance === 'object' && typeof performance.now === 'function') {\n return performance.now();\n }\n return +new Date();\n}\n\n(function () {\n var lastCall = null;\n var lastDuration = null;\n var pendingTimeout = null;\n\n var tick = function tick() {\n if (typeof lastDuration !== 'undefined' && lastDuration > 16) {\n // We voluntarily throttle ourselves if we can't manage 60fps\n lastDuration = Math.min(lastDuration - 16, 250);\n\n // Just in case this is the last event, remember to position just once more\n pendingTimeout = setTimeout(tick, 250);\n return;\n }\n\n if (typeof lastCall !== 'undefined' && now() - lastCall < 10) {\n // Some browsers call events a little too frequently, refuse to run more than is reasonable\n return;\n }\n\n if (pendingTimeout != null) {\n clearTimeout(pendingTimeout);\n pendingTimeout = null;\n }\n\n lastCall = now();\n position();\n lastDuration = now() - lastCall;\n };\n\n if (typeof window !== 'undefined' && typeof window.addEventListener !== 'undefined') {\n ['resize', 'scroll', 'touchmove'].forEach(function (event) {\n window.addEventListener(event, tick);\n });\n }\n})();\n\nvar MIRROR_LR = {\n center: 'center',\n left: 'right',\n right: 'left'\n};\n\nvar MIRROR_TB = {\n middle: 'middle',\n top: 'bottom',\n bottom: 'top'\n};\n\nvar OFFSET_MAP = {\n top: 0,\n left: 0,\n middle: '50%',\n center: '50%',\n bottom: '100%',\n right: '100%'\n};\n\nvar autoToFixedAttachment = function autoToFixedAttachment(attachment, relativeToAttachment) {\n var left = attachment.left;\n var top = attachment.top;\n\n if (left === 'auto') {\n left = MIRROR_LR[relativeToAttachment.left];\n }\n\n if (top === 'auto') {\n top = MIRROR_TB[relativeToAttachment.top];\n }\n\n return { left: left, top: top };\n};\n\nvar attachmentToOffset = function attachmentToOffset(attachment) {\n var left = attachment.left;\n var top = attachment.top;\n\n if (typeof OFFSET_MAP[attachment.left] !== 'undefined') {\n left = OFFSET_MAP[attachment.left];\n }\n\n if (typeof OFFSET_MAP[attachment.top] !== 'undefined') {\n top = OFFSET_MAP[attachment.top];\n }\n\n return { left: left, top: top };\n};\n\nfunction addOffset() {\n var out = { top: 0, left: 0 };\n\n for (var _len = arguments.length, offsets = Array(_len), _key = 0; _key < _len; _key++) {\n offsets[_key] = arguments[_key];\n }\n\n offsets.forEach(function (_ref) {\n var top = _ref.top;\n var left = _ref.left;\n\n if (typeof top === 'string') {\n top = parseFloat(top, 10);\n }\n if (typeof left === 'string') {\n left = parseFloat(left, 10);\n }\n\n out.top += top;\n out.left += left;\n });\n\n return out;\n}\n\nfunction offsetToPx(offset, size) {\n if (typeof offset.left === 'string' && offset.left.indexOf('%') !== -1) {\n offset.left = parseFloat(offset.left, 10) / 100 * size.width;\n }\n if (typeof offset.top === 'string' && offset.top.indexOf('%') !== -1) {\n offset.top = parseFloat(offset.top, 10) / 100 * size.height;\n }\n\n return offset;\n}\n\nvar parseOffset = function parseOffset(value) {\n var _value$split = value.split(' ');\n\n var _value$split2 = _slicedToArray(_value$split, 2);\n\n var top = _value$split2[0];\n var left = _value$split2[1];\n\n return { top: top, left: left };\n};\nvar parseAttachment = parseOffset;\n\nvar TetherClass = (function (_Evented) {\n _inherits(TetherClass, _Evented);\n\n function TetherClass(options) {\n var _this = this;\n\n _classCallCheck(this, TetherClass);\n\n _get(Object.getPrototypeOf(TetherClass.prototype), 'constructor', this).call(this);\n this.position = this.position.bind(this);\n\n tethers.push(this);\n\n this.history = [];\n\n this.setOptions(options, false);\n\n TetherBase.modules.forEach(function (module) {\n if (typeof module.initialize !== 'undefined') {\n module.initialize.call(_this);\n }\n });\n\n this.position();\n }\n\n _createClass(TetherClass, [{\n key: 'getClass',\n value: function getClass() {\n var key = arguments.length <= 0 || arguments[0] === undefined ? '' : arguments[0];\n var classes = this.options.classes;\n\n if (typeof classes !== 'undefined' && classes[key]) {\n return this.options.classes[key];\n } else if (this.options.classPrefix) {\n return this.options.classPrefix + '-' + key;\n } else {\n return key;\n }\n }\n }, {\n key: 'setOptions',\n value: function setOptions(options) {\n var _this2 = this;\n\n var pos = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];\n\n var defaults = {\n offset: '0 0',\n targetOffset: '0 0',\n targetAttachment: 'auto auto',\n classPrefix: 'tether'\n };\n\n this.options = extend(defaults, options);\n\n var _options = this.options;\n var element = _options.element;\n var target = _options.target;\n var targetModifier = _options.targetModifier;\n\n this.element = element;\n this.target = target;\n this.targetModifier = targetModifier;\n\n if (this.target === 'viewport') {\n this.target = document.body;\n this.targetModifier = 'visible';\n } else if (this.target === 'scroll-handle') {\n this.target = document.body;\n this.targetModifier = 'scroll-handle';\n }\n\n ['element', 'target'].forEach(function (key) {\n if (typeof _this2[key] === 'undefined') {\n throw new Error('Tether Error: Both element and target must be defined');\n }\n\n if (typeof _this2[key].jquery !== 'undefined') {\n _this2[key] = _this2[key][0];\n } else if (typeof _this2[key] === 'string') {\n _this2[key] = document.querySelector(_this2[key]);\n }\n });\n\n addClass(this.element, this.getClass('element'));\n if (!(this.options.addTargetClasses === false)) {\n addClass(this.target, this.getClass('target'));\n }\n\n if (!this.options.attachment) {\n throw new Error('Tether Error: You must provide an attachment');\n }\n\n this.targetAttachment = parseAttachment(this.options.targetAttachment);\n this.attachment = parseAttachment(this.options.attachment);\n this.offset = parseOffset(this.options.offset);\n this.targetOffset = parseOffset(this.options.targetOffset);\n\n if (typeof this.scrollParents !== 'undefined') {\n this.disable();\n }\n\n if (this.targetModifier === 'scroll-handle') {\n this.scrollParents = [this.target];\n } else {\n this.scrollParents = getScrollParents(this.target);\n }\n\n if (!(this.options.enabled === false)) {\n this.enable(pos);\n }\n }\n }, {\n key: 'getTargetBounds',\n value: function getTargetBounds() {\n if (typeof this.targetModifier !== 'undefined') {\n if (this.targetModifier === 'visible') {\n if (this.target === document.body) {\n return { top: pageYOffset, left: pageXOffset, height: innerHeight, width: innerWidth };\n } else {\n var bounds = getBounds(this.target);\n\n var out = {\n height: bounds.height,\n width: bounds.width,\n top: bounds.top,\n left: bounds.left\n };\n\n out.height = Math.min(out.height, bounds.height - (pageYOffset - bounds.top));\n out.height = Math.min(out.height, bounds.height - (bounds.top + bounds.height - (pageYOffset + innerHeight)));\n out.height = Math.min(innerHeight, out.height);\n out.height -= 2;\n\n out.width = Math.min(out.width, bounds.width - (pageXOffset - bounds.left));\n out.width = Math.min(out.width, bounds.width - (bounds.left + bounds.width - (pageXOffset + innerWidth)));\n out.width = Math.min(innerWidth, out.width);\n out.width -= 2;\n\n if (out.top < pageYOffset) {\n out.top = pageYOffset;\n }\n if (out.left < pageXOffset) {\n out.left = pageXOffset;\n }\n\n return out;\n }\n } else if (this.targetModifier === 'scroll-handle') {\n var bounds = undefined;\n var target = this.target;\n if (target === document.body) {\n target = document.documentElement;\n\n bounds = {\n left: pageXOffset,\n top: pageYOffset,\n height: innerHeight,\n width: innerWidth\n };\n } else {\n bounds = getBounds(target);\n }\n\n var style = getComputedStyle(target);\n\n var hasBottomScroll = target.scrollWidth > target.clientWidth || [style.overflow, style.overflowX].indexOf('scroll') >= 0 || this.target !== document.body;\n\n var scrollBottom = 0;\n if (hasBottomScroll) {\n scrollBottom = 15;\n }\n\n var height = bounds.height - parseFloat(style.borderTopWidth) - parseFloat(style.borderBottomWidth) - scrollBottom;\n\n var out = {\n width: 15,\n height: height * 0.975 * (height / target.scrollHeight),\n left: bounds.left + bounds.width - parseFloat(style.borderLeftWidth) - 15\n };\n\n var fitAdj = 0;\n if (height < 408 && this.target === document.body) {\n fitAdj = -0.00011 * Math.pow(height, 2) - 0.00727 * height + 22.58;\n }\n\n if (this.target !== document.body) {\n out.height = Math.max(out.height, 24);\n }\n\n var scrollPercentage = this.target.scrollTop / (target.scrollHeight - height);\n out.top = scrollPercentage * (height - out.height - fitAdj) + bounds.top + parseFloat(style.borderTopWidth);\n\n if (this.target === document.body) {\n out.height = Math.max(out.height, 24);\n }\n\n return out;\n }\n } else {\n return getBounds(this.target);\n }\n }\n }, {\n key: 'clearCache',\n value: function clearCache() {\n this._cache = {};\n }\n }, {\n key: 'cache',\n value: function cache(k, getter) {\n // More than one module will often need the same DOM info, so\n // we keep a cache which is cleared on each position call\n if (typeof this._cache === 'undefined') {\n this._cache = {};\n }\n\n if (typeof this._cache[k] === 'undefined') {\n this._cache[k] = getter.call(this);\n }\n\n return this._cache[k];\n }\n }, {\n key: 'enable',\n value: function enable() {\n var _this3 = this;\n\n var pos = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];\n\n if (!(this.options.addTargetClasses === false)) {\n addClass(this.target, this.getClass('enabled'));\n }\n addClass(this.element, this.getClass('enabled'));\n this.enabled = true;\n\n this.scrollParents.forEach(function (parent) {\n if (parent !== _this3.target.ownerDocument) {\n parent.addEventListener('scroll', _this3.position);\n }\n });\n\n if (pos) {\n this.position();\n }\n }\n }, {\n key: 'disable',\n value: function disable() {\n var _this4 = this;\n\n removeClass(this.target, this.getClass('enabled'));\n removeClass(this.element, this.getClass('enabled'));\n this.enabled = false;\n\n if (typeof this.scrollParents !== 'undefined') {\n this.scrollParents.forEach(function (parent) {\n parent.removeEventListener('scroll', _this4.position);\n });\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this5 = this;\n\n this.disable();\n\n tethers.forEach(function (tether, i) {\n if (tether === _this5) {\n tethers.splice(i, 1);\n }\n });\n\n // Remove any elements we were using for convenience from the DOM\n if (tethers.length === 0) {\n removeUtilElements();\n }\n }\n }, {\n key: 'updateAttachClasses',\n value: function updateAttachClasses(elementAttach, targetAttach) {\n var _this6 = this;\n\n elementAttach = elementAttach || this.attachment;\n targetAttach = targetAttach || this.targetAttachment;\n var sides = ['left', 'top', 'bottom', 'right', 'middle', 'center'];\n\n if (typeof this._addAttachClasses !== 'undefined' && this._addAttachClasses.length) {\n // updateAttachClasses can be called more than once in a position call, so\n // we need to clean up after ourselves such that when the last defer gets\n // ran it doesn't add any extra classes from previous calls.\n this._addAttachClasses.splice(0, this._addAttachClasses.length);\n }\n\n if (typeof this._addAttachClasses === 'undefined') {\n this._addAttachClasses = [];\n }\n var add = this._addAttachClasses;\n\n if (elementAttach.top) {\n add.push(this.getClass('element-attached') + '-' + elementAttach.top);\n }\n if (elementAttach.left) {\n add.push(this.getClass('element-attached') + '-' + elementAttach.left);\n }\n if (targetAttach.top) {\n add.push(this.getClass('target-attached') + '-' + targetAttach.top);\n }\n if (targetAttach.left) {\n add.push(this.getClass('target-attached') + '-' + targetAttach.left);\n }\n\n var all = [];\n sides.forEach(function (side) {\n all.push(_this6.getClass('element-attached') + '-' + side);\n all.push(_this6.getClass('target-attached') + '-' + side);\n });\n\n defer(function () {\n if (!(typeof _this6._addAttachClasses !== 'undefined')) {\n return;\n }\n\n updateClasses(_this6.element, _this6._addAttachClasses, all);\n if (!(_this6.options.addTargetClasses === false)) {\n updateClasses(_this6.target, _this6._addAttachClasses, all);\n }\n\n delete _this6._addAttachClasses;\n });\n }\n }, {\n key: 'position',\n value: function position() {\n var _this7 = this;\n\n var flushChanges = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];\n\n // flushChanges commits the changes immediately, leave true unless you are positioning multiple\n // tethers (in which case call Tether.Utils.flush yourself when you're done)\n\n if (!this.enabled) {\n return;\n }\n\n this.clearCache();\n\n // Turn 'auto' attachments into the appropriate corner or edge\n var targetAttachment = autoToFixedAttachment(this.targetAttachment, this.attachment);\n\n this.updateAttachClasses(this.attachment, targetAttachment);\n\n var elementPos = this.cache('element-bounds', function () {\n return getBounds(_this7.element);\n });\n\n var width = elementPos.width;\n var height = elementPos.height;\n\n if (width === 0 && height === 0 && typeof this.lastSize !== 'undefined') {\n var _lastSize = this.lastSize;\n\n // We cache the height and width to make it possible to position elements that are\n // getting hidden.\n width = _lastSize.width;\n height = _lastSize.height;\n } else {\n this.lastSize = { width: width, height: height };\n }\n\n var targetPos = this.cache('target-bounds', function () {\n return _this7.getTargetBounds();\n });\n var targetSize = targetPos;\n\n // Get an actual px offset from the attachment\n var offset = offsetToPx(attachmentToOffset(this.attachment), { width: width, height: height });\n var targetOffset = offsetToPx(attachmentToOffset(targetAttachment), targetSize);\n\n var manualOffset = offsetToPx(this.offset, { width: width, height: height });\n var manualTargetOffset = offsetToPx(this.targetOffset, targetSize);\n\n // Add the manually provided offset\n offset = addOffset(offset, manualOffset);\n targetOffset = addOffset(targetOffset, manualTargetOffset);\n\n // It's now our goal to make (element position + offset) == (target position + target offset)\n var left = targetPos.left + targetOffset.left - offset.left;\n var top = targetPos.top + targetOffset.top - offset.top;\n\n for (var i = 0; i < TetherBase.modules.length; ++i) {\n var _module2 = TetherBase.modules[i];\n var ret = _module2.position.call(this, {\n left: left,\n top: top,\n targetAttachment: targetAttachment,\n targetPos: targetPos,\n elementPos: elementPos,\n offset: offset,\n targetOffset: targetOffset,\n manualOffset: manualOffset,\n manualTargetOffset: manualTargetOffset,\n scrollbarSize: scrollbarSize,\n attachment: this.attachment\n });\n\n if (ret === false) {\n return false;\n } else if (typeof ret === 'undefined' || typeof ret !== 'object') {\n continue;\n } else {\n top = ret.top;\n left = ret.left;\n }\n }\n\n // We describe the position three different ways to give the optimizer\n // a chance to decide the best possible way to position the element\n // with the fewest repaints.\n var next = {\n // It's position relative to the page (absolute positioning when\n // the element is a child of the body)\n page: {\n top: top,\n left: left\n },\n\n // It's position relative to the viewport (fixed positioning)\n viewport: {\n top: top - pageYOffset,\n bottom: pageYOffset - top - height + innerHeight,\n left: left - pageXOffset,\n right: pageXOffset - left - width + innerWidth\n }\n };\n\n var doc = this.target.ownerDocument;\n var win = doc.defaultView;\n\n var scrollbarSize = undefined;\n if (win.innerHeight > doc.documentElement.clientHeight) {\n scrollbarSize = this.cache('scrollbar-size', getScrollBarSize);\n next.viewport.bottom -= scrollbarSize.height;\n }\n\n if (win.innerWidth > doc.documentElement.clientWidth) {\n scrollbarSize = this.cache('scrollbar-size', getScrollBarSize);\n next.viewport.right -= scrollbarSize.width;\n }\n\n if (['', 'static'].indexOf(doc.body.style.position) === -1 || ['', 'static'].indexOf(doc.body.parentElement.style.position) === -1) {\n // Absolute positioning in the body will be relative to the page, not the 'initial containing block'\n next.page.bottom = doc.body.scrollHeight - top - height;\n next.page.right = doc.body.scrollWidth - left - width;\n }\n\n if (typeof this.options.optimizations !== 'undefined' && this.options.optimizations.moveElement !== false && !(typeof this.targetModifier !== 'undefined')) {\n (function () {\n var offsetParent = _this7.cache('target-offsetparent', function () {\n return getOffsetParent(_this7.target);\n });\n var offsetPosition = _this7.cache('target-offsetparent-bounds', function () {\n return getBounds(offsetParent);\n });\n var offsetParentStyle = getComputedStyle(offsetParent);\n var offsetParentSize = offsetPosition;\n\n var offsetBorder = {};\n ['Top', 'Left', 'Bottom', 'Right'].forEach(function (side) {\n offsetBorder[side.toLowerCase()] = parseFloat(offsetParentStyle['border' + side + 'Width']);\n });\n\n offsetPosition.right = doc.body.scrollWidth - offsetPosition.left - offsetParentSize.width + offsetBorder.right;\n offsetPosition.bottom = doc.body.scrollHeight - offsetPosition.top - offsetParentSize.height + offsetBorder.bottom;\n\n if (next.page.top >= offsetPosition.top + offsetBorder.top && next.page.bottom >= offsetPosition.bottom) {\n if (next.page.left >= offsetPosition.left + offsetBorder.left && next.page.right >= offsetPosition.right) {\n // We're within the visible part of the target's scroll parent\n var scrollTop = offsetParent.scrollTop;\n var scrollLeft = offsetParent.scrollLeft;\n\n // It's position relative to the target's offset parent (absolute positioning when\n // the element is moved to be a child of the target's offset parent).\n next.offset = {\n top: next.page.top - offsetPosition.top + scrollTop - offsetBorder.top,\n left: next.page.left - offsetPosition.left + scrollLeft - offsetBorder.left\n };\n }\n }\n })();\n }\n\n // We could also travel up the DOM and try each containing context, rather than only\n // looking at the body, but we're gonna get diminishing returns.\n\n this.move(next);\n\n this.history.unshift(next);\n\n if (this.history.length > 3) {\n this.history.pop();\n }\n\n if (flushChanges) {\n flush();\n }\n\n return true;\n }\n\n // THE ISSUE\n }, {\n key: 'move',\n value: function move(pos) {\n var _this8 = this;\n\n if (!(typeof this.element.parentNode !== 'undefined')) {\n return;\n }\n\n var same = {};\n\n for (var type in pos) {\n same[type] = {};\n\n for (var key in pos[type]) {\n var found = false;\n\n for (var i = 0; i < this.history.length; ++i) {\n var point = this.history[i];\n if (typeof point[type] !== 'undefined' && !within(point[type][key], pos[type][key])) {\n found = true;\n break;\n }\n }\n\n if (!found) {\n same[type][key] = true;\n }\n }\n }\n\n var css = { top: '', left: '', right: '', bottom: '' };\n\n var transcribe = function transcribe(_same, _pos) {\n var hasOptimizations = typeof _this8.options.optimizations !== 'undefined';\n var gpu = hasOptimizations ? _this8.options.optimizations.gpu : null;\n if (gpu !== false) {\n var yPos = undefined,\n xPos = undefined;\n if (_same.top) {\n css.top = 0;\n yPos = _pos.top;\n } else {\n css.bottom = 0;\n yPos = -_pos.bottom;\n }\n\n if (_same.left) {\n css.left = 0;\n xPos = _pos.left;\n } else {\n css.right = 0;\n xPos = -_pos.right;\n }\n\n if (typeof window.devicePixelRatio === 'number' && devicePixelRatio % 1 === 0) {\n xPos = Math.round(xPos * devicePixelRatio) / devicePixelRatio;\n yPos = Math.round(yPos * devicePixelRatio) / devicePixelRatio;\n }\n\n css[transformKey] = 'translateX(' + xPos + 'px) translateY(' + yPos + 'px)';\n\n if (transformKey !== 'msTransform') {\n // The Z transform will keep this in the GPU (faster, and prevents artifacts),\n // but IE9 doesn't support 3d transforms and will choke.\n css[transformKey] += \" translateZ(0)\";\n }\n } else {\n if (_same.top) {\n css.top = _pos.top + 'px';\n } else {\n css.bottom = _pos.bottom + 'px';\n }\n\n if (_same.left) {\n css.left = _pos.left + 'px';\n } else {\n css.right = _pos.right + 'px';\n }\n }\n };\n\n var moved = false;\n if ((same.page.top || same.page.bottom) && (same.page.left || same.page.right)) {\n css.position = 'absolute';\n transcribe(same.page, pos.page);\n } else if ((same.viewport.top || same.viewport.bottom) && (same.viewport.left || same.viewport.right)) {\n css.position = 'fixed';\n transcribe(same.viewport, pos.viewport);\n } else if (typeof same.offset !== 'undefined' && same.offset.top && same.offset.left) {\n (function () {\n css.position = 'absolute';\n var offsetParent = _this8.cache('target-offsetparent', function () {\n return getOffsetParent(_this8.target);\n });\n\n if (getOffsetParent(_this8.element) !== offsetParent) {\n defer(function () {\n _this8.element.parentNode.removeChild(_this8.element);\n offsetParent.appendChild(_this8.element);\n });\n }\n\n transcribe(same.offset, pos.offset);\n moved = true;\n })();\n } else {\n css.position = 'absolute';\n transcribe({ top: true, left: true }, pos.page);\n }\n\n if (!moved) {\n if (this.options.bodyElement) {\n if (this.element.parentNode !== this.options.bodyElement) {\n this.options.bodyElement.appendChild(this.element);\n }\n } else {\n var isFullscreenElement = function isFullscreenElement(e) {\n var d = e.ownerDocument;\n var fe = d.fullscreenElement || d.webkitFullscreenElement || d.mozFullScreenElement || d.msFullscreenElement;\n return fe === e;\n };\n\n var offsetParentIsBody = true;\n\n var currentNode = this.element.parentNode;\n while (currentNode && currentNode.nodeType === 1 && currentNode.tagName !== 'BODY' && !isFullscreenElement(currentNode)) {\n if (getComputedStyle(currentNode).position !== 'static') {\n offsetParentIsBody = false;\n break;\n }\n\n currentNode = currentNode.parentNode;\n }\n\n if (!offsetParentIsBody) {\n this.element.parentNode.removeChild(this.element);\n this.element.ownerDocument.body.appendChild(this.element);\n }\n }\n }\n\n // Any css change will trigger a repaint, so let's avoid one if nothing changed\n var writeCSS = {};\n var write = false;\n for (var key in css) {\n var val = css[key];\n var elVal = this.element.style[key];\n\n if (elVal !== val) {\n write = true;\n writeCSS[key] = val;\n }\n }\n\n if (write) {\n defer(function () {\n extend(_this8.element.style, writeCSS);\n _this8.trigger('repositioned');\n });\n }\n }\n }]);\n\n return TetherClass;\n})(Evented);\n\nTetherClass.modules = [];\n\nTetherBase.position = position;\n\nvar Tether = extend(TetherClass, TetherBase);\n/* globals TetherBase */\n\n'use strict';\n\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\n\nvar _TetherBase$Utils = TetherBase.Utils;\nvar getBounds = _TetherBase$Utils.getBounds;\nvar extend = _TetherBase$Utils.extend;\nvar updateClasses = _TetherBase$Utils.updateClasses;\nvar defer = _TetherBase$Utils.defer;\n\nvar BOUNDS_FORMAT = ['left', 'top', 'right', 'bottom'];\n\nfunction getBoundingRect(tether, to) {\n if (to === 'scrollParent') {\n to = tether.scrollParents[0];\n } else if (to === 'window') {\n to = [pageXOffset, pageYOffset, innerWidth + pageXOffset, innerHeight + pageYOffset];\n }\n\n if (to === document) {\n to = to.documentElement;\n }\n\n if (typeof to.nodeType !== 'undefined') {\n (function () {\n var node = to;\n var size = getBounds(to);\n var pos = size;\n var style = getComputedStyle(to);\n\n to = [pos.left, pos.top, size.width + pos.left, size.height + pos.top];\n\n // Account any parent Frames scroll offset\n if (node.ownerDocument !== document) {\n var win = node.ownerDocument.defaultView;\n to[0] += win.pageXOffset;\n to[1] += win.pageYOffset;\n to[2] += win.pageXOffset;\n to[3] += win.pageYOffset;\n }\n\n BOUNDS_FORMAT.forEach(function (side, i) {\n side = side[0].toUpperCase() + side.substr(1);\n if (side === 'Top' || side === 'Left') {\n to[i] += parseFloat(style['border' + side + 'Width']);\n } else {\n to[i] -= parseFloat(style['border' + side + 'Width']);\n }\n });\n })();\n }\n\n return to;\n}\n\nTetherBase.modules.push({\n position: function position(_ref) {\n var _this = this;\n\n var top = _ref.top;\n var left = _ref.left;\n var targetAttachment = _ref.targetAttachment;\n\n if (!this.options.constraints) {\n return true;\n }\n\n var _cache = this.cache('element-bounds', function () {\n return getBounds(_this.element);\n });\n\n var height = _cache.height;\n var width = _cache.width;\n\n if (width === 0 && height === 0 && typeof this.lastSize !== 'undefined') {\n var _lastSize = this.lastSize;\n\n // Handle the item getting hidden as a result of our positioning without glitching\n // the classes in and out\n width = _lastSize.width;\n height = _lastSize.height;\n }\n\n var targetSize = this.cache('target-bounds', function () {\n return _this.getTargetBounds();\n });\n\n var targetHeight = targetSize.height;\n var targetWidth = targetSize.width;\n\n var allClasses = [this.getClass('pinned'), this.getClass('out-of-bounds')];\n\n this.options.constraints.forEach(function (constraint) {\n var outOfBoundsClass = constraint.outOfBoundsClass;\n var pinnedClass = constraint.pinnedClass;\n\n if (outOfBoundsClass) {\n allClasses.push(outOfBoundsClass);\n }\n if (pinnedClass) {\n allClasses.push(pinnedClass);\n }\n });\n\n allClasses.forEach(function (cls) {\n ['left', 'top', 'right', 'bottom'].forEach(function (side) {\n allClasses.push(cls + '-' + side);\n });\n });\n\n var addClasses = [];\n\n var tAttachment = extend({}, targetAttachment);\n var eAttachment = extend({}, this.attachment);\n\n this.options.constraints.forEach(function (constraint) {\n var to = constraint.to;\n var attachment = constraint.attachment;\n var pin = constraint.pin;\n\n if (typeof attachment === 'undefined') {\n attachment = '';\n }\n\n var changeAttachX = undefined,\n changeAttachY = undefined;\n if (attachment.indexOf(' ') >= 0) {\n var _attachment$split = attachment.split(' ');\n\n var _attachment$split2 = _slicedToArray(_attachment$split, 2);\n\n changeAttachY = _attachment$split2[0];\n changeAttachX = _attachment$split2[1];\n } else {\n changeAttachX = changeAttachY = attachment;\n }\n\n var bounds = getBoundingRect(_this, to);\n\n if (changeAttachY === 'target' || changeAttachY === 'both') {\n if (top < bounds[1] && tAttachment.top === 'top') {\n top += targetHeight;\n tAttachment.top = 'bottom';\n }\n\n if (top + height > bounds[3] && tAttachment.top === 'bottom') {\n top -= targetHeight;\n tAttachment.top = 'top';\n }\n }\n\n if (changeAttachY === 'together') {\n if (tAttachment.top === 'top') {\n if (eAttachment.top === 'bottom' && top < bounds[1]) {\n top += targetHeight;\n tAttachment.top = 'bottom';\n\n top += height;\n eAttachment.top = 'top';\n } else if (eAttachment.top === 'top' && top + height > bounds[3] && top - (height - targetHeight) >= bounds[1]) {\n top -= height - targetHeight;\n tAttachment.top = 'bottom';\n\n eAttachment.top = 'bottom';\n }\n }\n\n if (tAttachment.top === 'bottom') {\n if (eAttachment.top === 'top' && top + height > bounds[3]) {\n top -= targetHeight;\n tAttachment.top = 'top';\n\n top -= height;\n eAttachment.top = 'bottom';\n } else if (eAttachment.top === 'bottom' && top < bounds[1] && top + (height * 2 - targetHeight) <= bounds[3]) {\n top += height - targetHeight;\n tAttachment.top = 'top';\n\n eAttachment.top = 'top';\n }\n }\n\n if (tAttachment.top === 'middle') {\n if (top + height > bounds[3] && eAttachment.top === 'top') {\n top -= height;\n eAttachment.top = 'bottom';\n } else if (top < bounds[1] && eAttachment.top === 'bottom') {\n top += height;\n eAttachment.top = 'top';\n }\n }\n }\n\n if (changeAttachX === 'target' || changeAttachX === 'both') {\n if (left < bounds[0] && tAttachment.left === 'left') {\n left += targetWidth;\n tAttachment.left = 'right';\n }\n\n if (left + width > bounds[2] && tAttachment.left === 'right') {\n left -= targetWidth;\n tAttachment.left = 'left';\n }\n }\n\n if (changeAttachX === 'together') {\n if (left < bounds[0] && tAttachment.left === 'left') {\n if (eAttachment.left === 'right') {\n left += targetWidth;\n tAttachment.left = 'right';\n\n left += width;\n eAttachment.left = 'left';\n } else if (eAttachment.left === 'left') {\n left += targetWidth;\n tAttachment.left = 'right';\n\n left -= width;\n eAttachment.left = 'right';\n }\n } else if (left + width > bounds[2] && tAttachment.left === 'right') {\n if (eAttachment.left === 'left') {\n left -= targetWidth;\n tAttachment.left = 'left';\n\n left -= width;\n eAttachment.left = 'right';\n } else if (eAttachment.left === 'right') {\n left -= targetWidth;\n tAttachment.left = 'left';\n\n left += width;\n eAttachment.left = 'left';\n }\n } else if (tAttachment.left === 'center') {\n if (left + width > bounds[2] && eAttachment.left === 'left') {\n left -= width;\n eAttachment.left = 'right';\n } else if (left < bounds[0] && eAttachment.left === 'right') {\n left += width;\n eAttachment.left = 'left';\n }\n }\n }\n\n if (changeAttachY === 'element' || changeAttachY === 'both') {\n if (top < bounds[1] && eAttachment.top === 'bottom') {\n top += height;\n eAttachment.top = 'top';\n }\n\n if (top + height > bounds[3] && eAttachment.top === 'top') {\n top -= height;\n eAttachment.top = 'bottom';\n }\n }\n\n if (changeAttachX === 'element' || changeAttachX === 'both') {\n if (left < bounds[0]) {\n if (eAttachment.left === 'right') {\n left += width;\n eAttachment.left = 'left';\n } else if (eAttachment.left === 'center') {\n left += width / 2;\n eAttachment.left = 'left';\n }\n }\n\n if (left + width > bounds[2]) {\n if (eAttachment.left === 'left') {\n left -= width;\n eAttachment.left = 'right';\n } else if (eAttachment.left === 'center') {\n left -= width / 2;\n eAttachment.left = 'right';\n }\n }\n }\n\n if (typeof pin === 'string') {\n pin = pin.split(',').map(function (p) {\n return p.trim();\n });\n } else if (pin === true) {\n pin = ['top', 'left', 'right', 'bottom'];\n }\n\n pin = pin || [];\n\n var pinned = [];\n var oob = [];\n\n if (top < bounds[1]) {\n if (pin.indexOf('top') >= 0) {\n top = bounds[1];\n pinned.push('top');\n } else {\n oob.push('top');\n }\n }\n\n if (top + height > bounds[3]) {\n if (pin.indexOf('bottom') >= 0) {\n top = bounds[3] - height;\n pinned.push('bottom');\n } else {\n oob.push('bottom');\n }\n }\n\n if (left < bounds[0]) {\n if (pin.indexOf('left') >= 0) {\n left = bounds[0];\n pinned.push('left');\n } else {\n oob.push('left');\n }\n }\n\n if (left + width > bounds[2]) {\n if (pin.indexOf('right') >= 0) {\n left = bounds[2] - width;\n pinned.push('right');\n } else {\n oob.push('right');\n }\n }\n\n if (pinned.length) {\n (function () {\n var pinnedClass = undefined;\n if (typeof _this.options.pinnedClass !== 'undefined') {\n pinnedClass = _this.options.pinnedClass;\n } else {\n pinnedClass = _this.getClass('pinned');\n }\n\n addClasses.push(pinnedClass);\n pinned.forEach(function (side) {\n addClasses.push(pinnedClass + '-' + side);\n });\n })();\n }\n\n if (oob.length) {\n (function () {\n var oobClass = undefined;\n if (typeof _this.options.outOfBoundsClass !== 'undefined') {\n oobClass = _this.options.outOfBoundsClass;\n } else {\n oobClass = _this.getClass('out-of-bounds');\n }\n\n addClasses.push(oobClass);\n oob.forEach(function (side) {\n addClasses.push(oobClass + '-' + side);\n });\n })();\n }\n\n if (pinned.indexOf('left') >= 0 || pinned.indexOf('right') >= 0) {\n eAttachment.left = tAttachment.left = false;\n }\n if (pinned.indexOf('top') >= 0 || pinned.indexOf('bottom') >= 0) {\n eAttachment.top = tAttachment.top = false;\n }\n\n if (tAttachment.top !== targetAttachment.top || tAttachment.left !== targetAttachment.left || eAttachment.top !== _this.attachment.top || eAttachment.left !== _this.attachment.left) {\n _this.updateAttachClasses(eAttachment, tAttachment);\n _this.trigger('update', {\n attachment: eAttachment,\n targetAttachment: tAttachment\n });\n }\n });\n\n defer(function () {\n if (!(_this.options.addTargetClasses === false)) {\n updateClasses(_this.target, addClasses, allClasses);\n }\n updateClasses(_this.element, addClasses, allClasses);\n });\n\n return { top: top, left: left };\n }\n});\n/* globals TetherBase */\n\n'use strict';\n\nvar _TetherBase$Utils = TetherBase.Utils;\nvar getBounds = _TetherBase$Utils.getBounds;\nvar updateClasses = _TetherBase$Utils.updateClasses;\nvar defer = _TetherBase$Utils.defer;\n\nTetherBase.modules.push({\n position: function position(_ref) {\n var _this = this;\n\n var top = _ref.top;\n var left = _ref.left;\n\n var _cache = this.cache('element-bounds', function () {\n return getBounds(_this.element);\n });\n\n var height = _cache.height;\n var width = _cache.width;\n\n var targetPos = this.getTargetBounds();\n\n var bottom = top + height;\n var right = left + width;\n\n var abutted = [];\n if (top <= targetPos.bottom && bottom >= targetPos.top) {\n ['left', 'right'].forEach(function (side) {\n var targetPosSide = targetPos[side];\n if (targetPosSide === left || targetPosSide === right) {\n abutted.push(side);\n }\n });\n }\n\n if (left <= targetPos.right && right >= targetPos.left) {\n ['top', 'bottom'].forEach(function (side) {\n var targetPosSide = targetPos[side];\n if (targetPosSide === top || targetPosSide === bottom) {\n abutted.push(side);\n }\n });\n }\n\n var allClasses = [];\n var addClasses = [];\n\n var sides = ['left', 'top', 'right', 'bottom'];\n allClasses.push(this.getClass('abutted'));\n sides.forEach(function (side) {\n allClasses.push(_this.getClass('abutted') + '-' + side);\n });\n\n if (abutted.length) {\n addClasses.push(this.getClass('abutted'));\n }\n\n abutted.forEach(function (side) {\n addClasses.push(_this.getClass('abutted') + '-' + side);\n });\n\n defer(function () {\n if (!(_this.options.addTargetClasses === false)) {\n updateClasses(_this.target, addClasses, allClasses);\n }\n updateClasses(_this.element, addClasses, allClasses);\n });\n\n return true;\n }\n});\n/* globals TetherBase */\n\n'use strict';\n\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\n\nTetherBase.modules.push({\n position: function position(_ref) {\n var top = _ref.top;\n var left = _ref.left;\n\n if (!this.options.shift) {\n return;\n }\n\n var shift = this.options.shift;\n if (typeof this.options.shift === 'function') {\n shift = this.options.shift.call(this, { top: top, left: left });\n }\n\n var shiftTop = undefined,\n shiftLeft = undefined;\n if (typeof shift === 'string') {\n shift = shift.split(' ');\n shift[1] = shift[1] || shift[0];\n\n var _shift = shift;\n\n var _shift2 = _slicedToArray(_shift, 2);\n\n shiftTop = _shift2[0];\n shiftLeft = _shift2[1];\n\n shiftTop = parseFloat(shiftTop, 10);\n shiftLeft = parseFloat(shiftLeft, 10);\n } else {\n shiftTop = shift.top;\n shiftLeft = shift.left;\n }\n\n top += shiftTop;\n left += shiftLeft;\n\n return { top: top, left: left };\n }\n});\nreturn Tether;\n\n}));\n","/*!\n * Bootstrap v4.5.2 (https://getbootstrap.com/)\n * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :\n typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n}(this, (function (exports, $, Popper) { 'use strict';\n\n $ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $;\n Popper = Popper && Object.prototype.hasOwnProperty.call(Popper, 'default') ? Popper['default'] : Popper;\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\n var TRANSITION_END = 'transitionend';\n var MAX_UID = 1000000;\n var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return \"\" + obj;\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle: function handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n\n return undefined;\n }\n };\n }\n\n function transitionEndEmulator(duration) {\n var _this = this;\n\n var called = false;\n $(this).one(Util.TRANSITION_END, function () {\n called = true;\n });\n setTimeout(function () {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n\n function setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator;\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n\n var Util = {\n TRANSITION_END: 'bsTransitionEnd',\n getUID: function getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix));\n\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n var selector = element.getAttribute('data-target');\n\n if (!selector || selector === '#') {\n var hrefAttr = element.getAttribute('href');\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n }\n\n try {\n return document.querySelector(selector) ? selector : null;\n } catch (err) {\n return null;\n }\n },\n getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n var transitionDuration = $(element).css('transition-duration');\n var transitionDelay = $(element).css('transition-delay');\n var floatTransitionDuration = parseFloat(transitionDuration);\n var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END);\n },\n // TODO: Remove in v5\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n }\n }\n }\n },\n findShadowRoot: function findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n var root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return Util.findShadowRoot(element.parentNode);\n },\n jQueryDetection: function jQueryDetection() {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n }\n\n var version = $.fn.jquery.split(' ')[0].split('.');\n var minMajor = 1;\n var ltMajor = 2;\n var minMinor = 9;\n var minPatch = 1;\n var maxMajor = 4;\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n }\n }\n };\n Util.jQueryDetection();\n setTransitionEndSupport();\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME = 'alert';\n var VERSION = '4.5.2';\n var DATA_KEY = 'bs.alert';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $.fn[NAME];\n var SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n var EVENT_CLOSE = \"close\" + EVENT_KEY;\n var EVENT_CLOSED = \"closed\" + EVENT_KEY;\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n var CLASS_NAME_ALERT = 'alert';\n var CLASS_NAME_FADE = 'fade';\n var CLASS_NAME_SHOW = 'show';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Alert = /*#__PURE__*/function () {\n function Alert(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Alert.prototype;\n\n // Public\n _proto.close = function close(element) {\n var rootElement = this._element;\n\n if (element) {\n rootElement = this._getRootElement(element);\n }\n\n var customEvent = this._triggerCloseEvent(rootElement);\n\n if (customEvent.isDefaultPrevented()) {\n return;\n }\n\n this._removeElement(rootElement);\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY);\n this._element = null;\n } // Private\n ;\n\n _proto._getRootElement = function _getRootElement(element) {\n var selector = Util.getSelectorFromElement(element);\n var parent = false;\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n if (!parent) {\n parent = $(element).closest(\".\" + CLASS_NAME_ALERT)[0];\n }\n\n return parent;\n };\n\n _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n var closeEvent = $.Event(EVENT_CLOSE);\n $(element).trigger(closeEvent);\n return closeEvent;\n };\n\n _proto._removeElement = function _removeElement(element) {\n var _this = this;\n\n $(element).removeClass(CLASS_NAME_SHOW);\n\n if (!$(element).hasClass(CLASS_NAME_FADE)) {\n this._destroyElement(element);\n\n return;\n }\n\n var transitionDuration = Util.getTransitionDurationFromElement(element);\n $(element).one(Util.TRANSITION_END, function (event) {\n return _this._destroyElement(element, event);\n }).emulateTransitionEnd(transitionDuration);\n };\n\n _proto._destroyElement = function _destroyElement(element) {\n $(element).detach().trigger(EVENT_CLOSED).remove();\n } // Static\n ;\n\n Alert._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $(this);\n var data = $element.data(DATA_KEY);\n\n if (!data) {\n data = new Alert(this);\n $element.data(DATA_KEY, data);\n }\n\n if (config === 'close') {\n data[config](this);\n }\n });\n };\n\n Alert._handleDismiss = function _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n\n alertInstance.close(this);\n };\n };\n\n _createClass(Alert, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }]);\n\n return Alert;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Alert._jQueryInterface;\n $.fn[NAME].Constructor = Alert;\n\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return Alert._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$1 = 'button';\n var VERSION$1 = '4.5.2';\n var DATA_KEY$1 = 'bs.button';\n var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n var DATA_API_KEY$1 = '.data-api';\n var JQUERY_NO_CONFLICT$1 = $.fn[NAME$1];\n var CLASS_NAME_ACTIVE = 'active';\n var CLASS_NAME_BUTTON = 'btn';\n var CLASS_NAME_FOCUS = 'focus';\n var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]';\n var SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]';\n var SELECTOR_DATA_TOGGLE = '[data-toggle=\"button\"]';\n var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn';\n var SELECTOR_INPUT = 'input:not([type=\"hidden\"])';\n var SELECTOR_ACTIVE = '.active';\n var SELECTOR_BUTTON = '.btn';\n var EVENT_CLICK_DATA_API$1 = \"click\" + EVENT_KEY$1 + DATA_API_KEY$1;\n var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY$1 + DATA_API_KEY$1 + \" \" + (\"blur\" + EVENT_KEY$1 + DATA_API_KEY$1);\n var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY$1 + DATA_API_KEY$1;\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Button = /*#__PURE__*/function () {\n function Button(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Button.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n var triggerChangeEvent = true;\n var addAriaPressed = true;\n var rootElement = $(this._element).closest(SELECTOR_DATA_TOGGLES)[0];\n\n if (rootElement) {\n var input = this._element.querySelector(SELECTOR_INPUT);\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n triggerChangeEvent = false;\n } else {\n var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);\n\n if (activeElement) {\n $(activeElement).removeClass(CLASS_NAME_ACTIVE);\n }\n }\n }\n\n if (triggerChangeEvent) {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n if (input.type === 'checkbox' || input.type === 'radio') {\n input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE);\n }\n\n $(input).trigger('change');\n }\n\n input.focus();\n addAriaPressed = false;\n }\n }\n\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE));\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(CLASS_NAME_ACTIVE);\n }\n }\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$1);\n this._element = null;\n } // Static\n ;\n\n Button._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$1);\n\n if (!data) {\n data = new Button(this);\n $(this).data(DATA_KEY$1, data);\n }\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n };\n\n _createClass(Button, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$1;\n }\n }]);\n\n return Button;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = event.target;\n var initialButton = button;\n\n if (!$(button).hasClass(CLASS_NAME_BUTTON)) {\n button = $(button).closest(SELECTOR_BUTTON)[0];\n }\n\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault(); // work around Firefox bug #1540995\n } else {\n var inputBtn = button.querySelector(SELECTOR_INPUT);\n\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault(); // work around Firefox bug #1540995\n\n return;\n }\n\n if (initialButton.tagName !== 'LABEL' || inputBtn && inputBtn.type !== 'checkbox') {\n Button._jQueryInterface.call($(button), 'toggle');\n }\n }\n }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = $(event.target).closest(SELECTOR_BUTTON)[0];\n $(button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n });\n $(window).on(EVENT_LOAD_DATA_API, function () {\n // ensure correct active class is set to match the controls' actual values/states\n // find all checkboxes/readio buttons inside data-toggle groups\n var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));\n\n for (var i = 0, len = buttons.length; i < len; i++) {\n var button = buttons[i];\n var input = button.querySelector(SELECTOR_INPUT);\n\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(CLASS_NAME_ACTIVE);\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE);\n }\n } // find all button toggles\n\n\n buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));\n\n for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n var _button = buttons[_i];\n\n if (_button.getAttribute('aria-pressed') === 'true') {\n _button.classList.add(CLASS_NAME_ACTIVE);\n } else {\n _button.classList.remove(CLASS_NAME_ACTIVE);\n }\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$1] = Button._jQueryInterface;\n $.fn[NAME$1].Constructor = Button;\n\n $.fn[NAME$1].noConflict = function () {\n $.fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n return Button._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$2 = 'carousel';\n var VERSION$2 = '4.5.2';\n var DATA_KEY$2 = 'bs.carousel';\n var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n var DATA_API_KEY$2 = '.data-api';\n var JQUERY_NO_CONFLICT$2 = $.fn[NAME$2];\n var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n var SWIPE_THRESHOLD = 40;\n var Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n };\n var DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n };\n var DIRECTION_NEXT = 'next';\n var DIRECTION_PREV = 'prev';\n var DIRECTION_LEFT = 'left';\n var DIRECTION_RIGHT = 'right';\n var EVENT_SLIDE = \"slide\" + EVENT_KEY$2;\n var EVENT_SLID = \"slid\" + EVENT_KEY$2;\n var EVENT_KEYDOWN = \"keydown\" + EVENT_KEY$2;\n var EVENT_MOUSEENTER = \"mouseenter\" + EVENT_KEY$2;\n var EVENT_MOUSELEAVE = \"mouseleave\" + EVENT_KEY$2;\n var EVENT_TOUCHSTART = \"touchstart\" + EVENT_KEY$2;\n var EVENT_TOUCHMOVE = \"touchmove\" + EVENT_KEY$2;\n var EVENT_TOUCHEND = \"touchend\" + EVENT_KEY$2;\n var EVENT_POINTERDOWN = \"pointerdown\" + EVENT_KEY$2;\n var EVENT_POINTERUP = \"pointerup\" + EVENT_KEY$2;\n var EVENT_DRAG_START = \"dragstart\" + EVENT_KEY$2;\n var EVENT_LOAD_DATA_API$1 = \"load\" + EVENT_KEY$2 + DATA_API_KEY$2;\n var EVENT_CLICK_DATA_API$2 = \"click\" + EVENT_KEY$2 + DATA_API_KEY$2;\n var CLASS_NAME_CAROUSEL = 'carousel';\n var CLASS_NAME_ACTIVE$1 = 'active';\n var CLASS_NAME_SLIDE = 'slide';\n var CLASS_NAME_RIGHT = 'carousel-item-right';\n var CLASS_NAME_LEFT = 'carousel-item-left';\n var CLASS_NAME_NEXT = 'carousel-item-next';\n var CLASS_NAME_PREV = 'carousel-item-prev';\n var CLASS_NAME_POINTER_EVENT = 'pointer-event';\n var SELECTOR_ACTIVE$1 = '.active';\n var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n var SELECTOR_ITEM = '.carousel-item';\n var SELECTOR_ITEM_IMG = '.carousel-item img';\n var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n var SELECTOR_INDICATORS = '.carousel-indicators';\n var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';\n var SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]';\n var PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Carousel = /*#__PURE__*/function () {\n function Carousel(element, config) {\n this._items = null;\n this._interval = null;\n this._activeElement = null;\n this._isPaused = false;\n this._isSliding = false;\n this.touchTimeout = null;\n this.touchStartX = 0;\n this.touchDeltaX = 0;\n this._config = this._getConfig(config);\n this._element = element;\n this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Carousel.prototype;\n\n // Public\n _proto.next = function next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT);\n }\n };\n\n _proto.nextWhenVisible = function nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {\n this.next();\n }\n };\n\n _proto.prev = function prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV);\n }\n };\n\n _proto.pause = function pause(event) {\n if (!event) {\n this._isPaused = true;\n }\n\n if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element);\n this.cycle(true);\n }\n\n clearInterval(this._interval);\n this._interval = null;\n };\n\n _proto.cycle = function cycle(event) {\n if (!event) {\n this._isPaused = false;\n }\n\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n }\n };\n\n _proto.to = function to(index) {\n var _this = this;\n\n this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n var activeIndex = this._getItemIndex(this._activeElement);\n\n if (index > this._items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n $(this._element).one(EVENT_SLID, function () {\n return _this.to(index);\n });\n return;\n }\n\n if (activeIndex === index) {\n this.pause();\n this.cycle();\n return;\n }\n\n var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;\n\n this._slide(direction, this._items[index]);\n };\n\n _proto.dispose = function dispose() {\n $(this._element).off(EVENT_KEY$2);\n $.removeData(this._element, DATA_KEY$2);\n this._items = null;\n this._config = null;\n this._element = null;\n this._interval = null;\n this._isPaused = null;\n this._isSliding = null;\n this._activeElement = null;\n this._indicatorsElement = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default, config);\n Util.typeCheckConfig(NAME$2, config, DefaultType);\n return config;\n };\n\n _proto._handleSwipe = function _handleSwipe() {\n var absDeltax = Math.abs(this.touchDeltaX);\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return;\n }\n\n var direction = absDeltax / this.touchDeltaX;\n this.touchDeltaX = 0; // swipe left\n\n if (direction > 0) {\n this.prev();\n } // swipe right\n\n\n if (direction < 0) {\n this.next();\n }\n };\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this2 = this;\n\n if (this._config.keyboard) {\n $(this._element).on(EVENT_KEYDOWN, function (event) {\n return _this2._keydown(event);\n });\n }\n\n if (this._config.pause === 'hover') {\n $(this._element).on(EVENT_MOUSEENTER, function (event) {\n return _this2.pause(event);\n }).on(EVENT_MOUSELEAVE, function (event) {\n return _this2.cycle(event);\n });\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners();\n }\n };\n\n _proto._addTouchEventListeners = function _addTouchEventListeners() {\n var _this3 = this;\n\n if (!this._touchSupported) {\n return;\n }\n\n var start = function start(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchStartX = event.originalEvent.clientX;\n } else if (!_this3._pointerEvent) {\n _this3.touchStartX = event.originalEvent.touches[0].clientX;\n }\n };\n\n var move = function move(event) {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n _this3.touchDeltaX = 0;\n } else {\n _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;\n }\n };\n\n var end = function end(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n }\n\n _this3._handleSwipe();\n\n if (_this3._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n _this3.pause();\n\n if (_this3.touchTimeout) {\n clearTimeout(_this3.touchTimeout);\n }\n\n _this3.touchTimeout = setTimeout(function (event) {\n return _this3.cycle(event);\n }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n }\n };\n\n $(this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {\n return e.preventDefault();\n });\n\n if (this._pointerEvent) {\n $(this._element).on(EVENT_POINTERDOWN, function (event) {\n return start(event);\n });\n $(this._element).on(EVENT_POINTERUP, function (event) {\n return end(event);\n });\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n $(this._element).on(EVENT_TOUCHSTART, function (event) {\n return start(event);\n });\n $(this._element).on(EVENT_TOUCHMOVE, function (event) {\n return move(event);\n });\n $(this._element).on(EVENT_TOUCHEND, function (event) {\n return end(event);\n });\n }\n };\n\n _proto._keydown = function _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault();\n this.prev();\n break;\n\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault();\n this.next();\n break;\n }\n };\n\n _proto._getItemIndex = function _getItemIndex(element) {\n this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];\n return this._items.indexOf(element);\n };\n\n _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n var isNextDirection = direction === DIRECTION_NEXT;\n var isPrevDirection = direction === DIRECTION_PREV;\n\n var activeIndex = this._getItemIndex(activeElement);\n\n var lastItemIndex = this._items.length - 1;\n var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement;\n }\n\n var delta = direction === DIRECTION_PREV ? -1 : 1;\n var itemIndex = (activeIndex + delta) % this._items.length;\n return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n };\n\n _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n var targetIndex = this._getItemIndex(relatedTarget);\n\n var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));\n\n var slideEvent = $.Event(EVENT_SLIDE, {\n relatedTarget: relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n });\n $(this._element).trigger(slideEvent);\n return slideEvent;\n };\n\n _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));\n $(indicators).removeClass(CLASS_NAME_ACTIVE$1);\n\n var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n if (nextIndicator) {\n $(nextIndicator).addClass(CLASS_NAME_ACTIVE$1);\n }\n }\n };\n\n _proto._slide = function _slide(direction, element) {\n var _this4 = this;\n\n var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n var activeElementIndex = this._getItemIndex(activeElement);\n\n var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n var nextElementIndex = this._getItemIndex(nextElement);\n\n var isCycling = Boolean(this._interval);\n var directionalClassName;\n var orderClassName;\n var eventDirectionName;\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_LEFT;\n orderClassName = CLASS_NAME_NEXT;\n eventDirectionName = DIRECTION_LEFT;\n } else {\n directionalClassName = CLASS_NAME_RIGHT;\n orderClassName = CLASS_NAME_PREV;\n eventDirectionName = DIRECTION_RIGHT;\n }\n\n if (nextElement && $(nextElement).hasClass(CLASS_NAME_ACTIVE$1)) {\n this._isSliding = false;\n return;\n }\n\n var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n if (slideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return;\n }\n\n this._isSliding = true;\n\n if (isCycling) {\n this.pause();\n }\n\n this._setActiveIndicatorElement(nextElement);\n\n var slidEvent = $.Event(EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n });\n\n if ($(this._element).hasClass(CLASS_NAME_SLIDE)) {\n $(nextElement).addClass(orderClassName);\n Util.reflow(nextElement);\n $(activeElement).addClass(directionalClassName);\n $(nextElement).addClass(directionalClassName);\n var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);\n\n if (nextElementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n this._config.interval = nextElementInterval;\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval;\n }\n\n var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n $(activeElement).one(Util.TRANSITION_END, function () {\n $(nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(CLASS_NAME_ACTIVE$1);\n $(activeElement).removeClass(CLASS_NAME_ACTIVE$1 + \" \" + orderClassName + \" \" + directionalClassName);\n _this4._isSliding = false;\n setTimeout(function () {\n return $(_this4._element).trigger(slidEvent);\n }, 0);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n $(activeElement).removeClass(CLASS_NAME_ACTIVE$1);\n $(nextElement).addClass(CLASS_NAME_ACTIVE$1);\n this._isSliding = false;\n $(this._element).trigger(slidEvent);\n }\n\n if (isCycling) {\n this.cycle();\n }\n } // Static\n ;\n\n Carousel._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$2);\n\n var _config = _extends({}, Default, $(this).data());\n\n if (typeof config === 'object') {\n _config = _extends({}, _config, config);\n }\n\n var action = typeof config === 'string' ? config : _config.slide;\n\n if (!data) {\n data = new Carousel(this, _config);\n $(this).data(DATA_KEY$2, data);\n }\n\n if (typeof config === 'number') {\n data.to(config);\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n }\n\n data[action]();\n } else if (_config.interval && _config.ride) {\n data.pause();\n data.cycle();\n }\n });\n };\n\n Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n var selector = Util.getSelectorFromElement(this);\n\n if (!selector) {\n return;\n }\n\n var target = $(selector)[0];\n\n if (!target || !$(target).hasClass(CLASS_NAME_CAROUSEL)) {\n return;\n }\n\n var config = _extends({}, $(target).data(), $(this).data());\n\n var slideIndex = this.getAttribute('data-slide-to');\n\n if (slideIndex) {\n config.interval = false;\n }\n\n Carousel._jQueryInterface.call($(target), config);\n\n if (slideIndex) {\n $(target).data(DATA_KEY$2).to(slideIndex);\n }\n\n event.preventDefault();\n };\n\n _createClass(Carousel, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$2;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n\n return Carousel;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);\n $(window).on(EVENT_LOAD_DATA_API$1, function () {\n var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));\n\n for (var i = 0, len = carousels.length; i < len; i++) {\n var $carousel = $(carousels[i]);\n\n Carousel._jQueryInterface.call($carousel, $carousel.data());\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$2] = Carousel._jQueryInterface;\n $.fn[NAME$2].Constructor = Carousel;\n\n $.fn[NAME$2].noConflict = function () {\n $.fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n return Carousel._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$3 = 'collapse';\n var VERSION$3 = '4.5.2';\n var DATA_KEY$3 = 'bs.collapse';\n var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n var DATA_API_KEY$3 = '.data-api';\n var JQUERY_NO_CONFLICT$3 = $.fn[NAME$3];\n var Default$1 = {\n toggle: true,\n parent: ''\n };\n var DefaultType$1 = {\n toggle: 'boolean',\n parent: '(string|element)'\n };\n var EVENT_SHOW = \"show\" + EVENT_KEY$3;\n var EVENT_SHOWN = \"shown\" + EVENT_KEY$3;\n var EVENT_HIDE = \"hide\" + EVENT_KEY$3;\n var EVENT_HIDDEN = \"hidden\" + EVENT_KEY$3;\n var EVENT_CLICK_DATA_API$3 = \"click\" + EVENT_KEY$3 + DATA_API_KEY$3;\n var CLASS_NAME_SHOW$1 = 'show';\n var CLASS_NAME_COLLAPSE = 'collapse';\n var CLASS_NAME_COLLAPSING = 'collapsing';\n var CLASS_NAME_COLLAPSED = 'collapsed';\n var DIMENSION_WIDTH = 'width';\n var DIMENSION_HEIGHT = 'height';\n var SELECTOR_ACTIVES = '.show, .collapsing';\n var SELECTOR_DATA_TOGGLE$1 = '[data-toggle=\"collapse\"]';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Collapse = /*#__PURE__*/function () {\n function Collapse(element, config) {\n this._isTransitioning = false;\n this._element = element;\n this._config = this._getConfig(config);\n this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$1));\n\n for (var i = 0, len = toggleList.length; i < len; i++) {\n var elem = toggleList[i];\n var selector = Util.getSelectorFromElement(elem);\n var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n return foundElem === element;\n });\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector;\n\n this._triggerArray.push(elem);\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null;\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n var _proto = Collapse.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if ($(this._element).hasClass(CLASS_NAME_SHOW$1)) {\n this.hide();\n } else {\n this.show();\n }\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if (this._isTransitioning || $(this._element).hasClass(CLASS_NAME_SHOW$1)) {\n return;\n }\n\n var actives;\n var activesData;\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {\n if (typeof _this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === _this._config.parent;\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE);\n });\n\n if (actives.length === 0) {\n actives = null;\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY$3);\n\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n\n var startEvent = $.Event(EVENT_SHOW);\n $(this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');\n\n if (!activesData) {\n $(actives).data(DATA_KEY$3, null);\n }\n }\n\n var dimension = this._getDimension();\n\n $(this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n\n if (this._triggerArray.length) {\n $(this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n $(_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$1);\n _this._element.style[dimension] = '';\n\n _this.setTransitioning(false);\n\n $(_this._element).trigger(EVENT_SHOWN);\n };\n\n var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n var scrollSize = \"scroll\" + capitalizedDimension;\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n this._element.style[dimension] = this._element[scrollSize] + \"px\";\n };\n\n _proto.hide = function hide() {\n var _this2 = this;\n\n if (this._isTransitioning || !$(this._element).hasClass(CLASS_NAME_SHOW$1)) {\n return;\n }\n\n var startEvent = $.Event(EVENT_HIDE);\n $(this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n var dimension = this._getDimension();\n\n this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n Util.reflow(this._element);\n $(this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$1);\n var triggerArrayLength = this._triggerArray.length;\n\n if (triggerArrayLength > 0) {\n for (var i = 0; i < triggerArrayLength; i++) {\n var trigger = this._triggerArray[i];\n var selector = Util.getSelectorFromElement(trigger);\n\n if (selector !== null) {\n var $elem = $([].slice.call(document.querySelectorAll(selector)));\n\n if (!$elem.hasClass(CLASS_NAME_SHOW$1)) {\n $(trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);\n }\n }\n }\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n _this2.setTransitioning(false);\n\n $(_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN);\n };\n\n this._element.style[dimension] = '';\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n };\n\n _proto.setTransitioning = function setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning;\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$3);\n this._config = null;\n this._parent = null;\n this._element = null;\n this._triggerArray = null;\n this._isTransitioning = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$1, config);\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n Util.typeCheckConfig(NAME$3, config, DefaultType$1);\n return config;\n };\n\n _proto._getDimension = function _getDimension() {\n var hasWidth = $(this._element).hasClass(DIMENSION_WIDTH);\n return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;\n };\n\n _proto._getParent = function _getParent() {\n var _this3 = this;\n\n var parent;\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent; // It's a jQuery object\n\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0];\n }\n } else {\n parent = document.querySelector(this._config.parent);\n }\n\n var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n var children = [].slice.call(parent.querySelectorAll(selector));\n $(children).each(function (i, element) {\n _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n });\n return parent;\n };\n\n _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n var isOpen = $(element).hasClass(CLASS_NAME_SHOW$1);\n\n if (triggerArray.length) {\n $(triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n }\n } // Static\n ;\n\n Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n var selector = Util.getSelectorFromElement(element);\n return selector ? document.querySelector(selector) : null;\n };\n\n Collapse._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data(DATA_KEY$3);\n\n var _config = _extends({}, Default$1, $this.data(), typeof config === 'object' && config ? config : {});\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n if (!data) {\n data = new Collapse(this, _config);\n $this.data(DATA_KEY$3, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Collapse, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$3;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$1;\n }\n }]);\n\n return Collapse;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n var $trigger = $(this);\n var selector = Util.getSelectorFromElement(this);\n var selectors = [].slice.call(document.querySelectorAll(selector));\n $(selectors).each(function () {\n var $target = $(this);\n var data = $target.data(DATA_KEY$3);\n var config = data ? 'toggle' : $trigger.data();\n\n Collapse._jQueryInterface.call($target, config);\n });\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$3] = Collapse._jQueryInterface;\n $.fn[NAME$3].Constructor = Collapse;\n\n $.fn[NAME$3].noConflict = function () {\n $.fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n return Collapse._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$4 = 'dropdown';\n var VERSION$4 = '4.5.2';\n var DATA_KEY$4 = 'bs.dropdown';\n var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n var DATA_API_KEY$4 = '.data-api';\n var JQUERY_NO_CONFLICT$4 = $.fn[NAME$4];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE);\n var EVENT_HIDE$1 = \"hide\" + EVENT_KEY$4;\n var EVENT_HIDDEN$1 = \"hidden\" + EVENT_KEY$4;\n var EVENT_SHOW$1 = \"show\" + EVENT_KEY$4;\n var EVENT_SHOWN$1 = \"shown\" + EVENT_KEY$4;\n var EVENT_CLICK = \"click\" + EVENT_KEY$4;\n var EVENT_CLICK_DATA_API$4 = \"click\" + EVENT_KEY$4 + DATA_API_KEY$4;\n var EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY$4 + DATA_API_KEY$4;\n var EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY$4 + DATA_API_KEY$4;\n var CLASS_NAME_DISABLED = 'disabled';\n var CLASS_NAME_SHOW$2 = 'show';\n var CLASS_NAME_DROPUP = 'dropup';\n var CLASS_NAME_DROPRIGHT = 'dropright';\n var CLASS_NAME_DROPLEFT = 'dropleft';\n var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';\n var CLASS_NAME_POSITION_STATIC = 'position-static';\n var SELECTOR_DATA_TOGGLE$2 = '[data-toggle=\"dropdown\"]';\n var SELECTOR_FORM_CHILD = '.dropdown form';\n var SELECTOR_MENU = '.dropdown-menu';\n var SELECTOR_NAVBAR_NAV = '.navbar-nav';\n var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n var PLACEMENT_TOP = 'top-start';\n var PLACEMENT_TOPEND = 'top-end';\n var PLACEMENT_BOTTOM = 'bottom-start';\n var PLACEMENT_BOTTOMEND = 'bottom-end';\n var PLACEMENT_RIGHT = 'right-start';\n var PLACEMENT_LEFT = 'left-start';\n var Default$2 = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n };\n var DefaultType$2 = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Dropdown = /*#__PURE__*/function () {\n function Dropdown(element, config) {\n this._element = element;\n this._popper = null;\n this._config = this._getConfig(config);\n this._menu = this._getMenuElement();\n this._inNavbar = this._detectNavbar();\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Dropdown.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED)) {\n return;\n }\n\n var isActive = $(this._menu).hasClass(CLASS_NAME_SHOW$2);\n\n Dropdown._clearMenus();\n\n if (isActive) {\n return;\n }\n\n this.show(true);\n };\n\n _proto.show = function show(usePopper) {\n if (usePopper === void 0) {\n usePopper = false;\n }\n\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || $(this._menu).hasClass(CLASS_NAME_SHOW$2)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $.Event(EVENT_SHOW$1, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $(parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n } // Disable totally Popper.js for Dropdown in Navbar\n\n\n if (!this._inNavbar && usePopper) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper.js (https://popper.js.org/)');\n }\n\n var referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = parent;\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference; // Check if it's jQuery element\n\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0];\n }\n } // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n\n\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(CLASS_NAME_POSITION_STATIC);\n }\n\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());\n } // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && $(parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop);\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n $(this._menu).toggleClass(CLASS_NAME_SHOW$2);\n $(parent).toggleClass(CLASS_NAME_SHOW$2).trigger($.Event(EVENT_SHOWN$1, relatedTarget));\n };\n\n _proto.hide = function hide() {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || !$(this._menu).hasClass(CLASS_NAME_SHOW$2)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var hideEvent = $.Event(EVENT_HIDE$1, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $(parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n $(this._menu).toggleClass(CLASS_NAME_SHOW$2);\n $(parent).toggleClass(CLASS_NAME_SHOW$2).trigger($.Event(EVENT_HIDDEN$1, relatedTarget));\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$4);\n $(this._element).off(EVENT_KEY$4);\n this._element = null;\n this._menu = null;\n\n if (this._popper !== null) {\n this._popper.destroy();\n\n this._popper = null;\n }\n };\n\n _proto.update = function update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Private\n ;\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this = this;\n\n $(this._element).on(EVENT_CLICK, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.toggle();\n });\n };\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, this.constructor.Default, $(this._element).data(), config);\n Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._getMenuElement = function _getMenuElement() {\n if (!this._menu) {\n var parent = Dropdown._getParentFromElement(this._element);\n\n if (parent) {\n this._menu = parent.querySelector(SELECTOR_MENU);\n }\n }\n\n return this._menu;\n };\n\n _proto._getPlacement = function _getPlacement() {\n var $parentDropdown = $(this._element.parentNode);\n var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n placement = $(this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n placement = PLACEMENT_RIGHT;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n placement = PLACEMENT_LEFT;\n } else if ($(this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND;\n }\n\n return placement;\n };\n\n _proto._detectNavbar = function _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0;\n };\n\n _proto._getOffset = function _getOffset() {\n var _this2 = this;\n\n var offset = {};\n\n if (typeof this._config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});\n return data;\n };\n } else {\n offset.offset = this._config.offset;\n }\n\n return offset;\n };\n\n _proto._getPopperConfig = function _getPopperConfig() {\n var popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }; // Disable Popper.js if we have a static display\n\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n };\n }\n\n return _extends({}, popperConfig, this._config.popperConfig);\n } // Static\n ;\n\n Dropdown._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$4);\n\n var _config = typeof config === 'object' ? config : null;\n\n if (!data) {\n data = new Dropdown(this, _config);\n $(this).data(DATA_KEY$4, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n Dropdown._clearMenus = function _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return;\n }\n\n var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));\n\n for (var i = 0, len = toggles.length; i < len; i++) {\n var parent = Dropdown._getParentFromElement(toggles[i]);\n\n var context = $(toggles[i]).data(DATA_KEY$4);\n var relatedTarget = {\n relatedTarget: toggles[i]\n };\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n\n if (!context) {\n continue;\n }\n\n var dropdownMenu = context._menu;\n\n if (!$(parent).hasClass(CLASS_NAME_SHOW$2)) {\n continue;\n }\n\n if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {\n continue;\n }\n\n var hideEvent = $.Event(EVENT_HIDE$1, relatedTarget);\n $(parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n continue;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop);\n }\n\n toggles[i].setAttribute('aria-expanded', 'false');\n\n if (context._popper) {\n context._popper.destroy();\n }\n\n $(dropdownMenu).removeClass(CLASS_NAME_SHOW$2);\n $(parent).removeClass(CLASS_NAME_SHOW$2).trigger($.Event(EVENT_HIDDEN$1, relatedTarget));\n }\n };\n\n Dropdown._getParentFromElement = function _getParentFromElement(element) {\n var parent;\n var selector = Util.getSelectorFromElement(element);\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n return parent || element.parentNode;\n } // eslint-disable-next-line complexity\n ;\n\n Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return;\n }\n\n if (this.disabled || $(this).hasClass(CLASS_NAME_DISABLED)) {\n return;\n }\n\n var parent = Dropdown._getParentFromElement(this);\n\n var isActive = $(parent).hasClass(CLASS_NAME_SHOW$2);\n\n if (!isActive && event.which === ESCAPE_KEYCODE) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n $(parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');\n }\n\n $(this).trigger('click');\n return;\n }\n\n var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {\n return $(item).is(':visible');\n });\n\n if (items.length === 0) {\n return;\n }\n\n var index = items.indexOf(event.target);\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) {\n // Up\n index--;\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n // Down\n index++;\n }\n\n if (index < 0) {\n index = 0;\n }\n\n items[index].focus();\n };\n\n _createClass(Dropdown, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$4;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$2;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$2;\n }\n }]);\n\n return Dropdown;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$4 + \" \" + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n Dropdown._jQueryInterface.call($(this), 'toggle');\n }).on(EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) {\n e.stopPropagation();\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$4] = Dropdown._jQueryInterface;\n $.fn[NAME$4].Constructor = Dropdown;\n\n $.fn[NAME$4].noConflict = function () {\n $.fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n return Dropdown._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$5 = 'modal';\n var VERSION$5 = '4.5.2';\n var DATA_KEY$5 = 'bs.modal';\n var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n var DATA_API_KEY$5 = '.data-api';\n var JQUERY_NO_CONFLICT$5 = $.fn[NAME$5];\n var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var Default$3 = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n };\n var DefaultType$3 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n };\n var EVENT_HIDE$2 = \"hide\" + EVENT_KEY$5;\n var EVENT_HIDE_PREVENTED = \"hidePrevented\" + EVENT_KEY$5;\n var EVENT_HIDDEN$2 = \"hidden\" + EVENT_KEY$5;\n var EVENT_SHOW$2 = \"show\" + EVENT_KEY$5;\n var EVENT_SHOWN$2 = \"shown\" + EVENT_KEY$5;\n var EVENT_FOCUSIN = \"focusin\" + EVENT_KEY$5;\n var EVENT_RESIZE = \"resize\" + EVENT_KEY$5;\n var EVENT_CLICK_DISMISS = \"click.dismiss\" + EVENT_KEY$5;\n var EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEUP_DISMISS = \"mouseup.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\" + EVENT_KEY$5;\n var EVENT_CLICK_DATA_API$5 = \"click\" + EVENT_KEY$5 + DATA_API_KEY$5;\n var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';\n var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';\n var CLASS_NAME_BACKDROP = 'modal-backdrop';\n var CLASS_NAME_OPEN = 'modal-open';\n var CLASS_NAME_FADE$1 = 'fade';\n var CLASS_NAME_SHOW$3 = 'show';\n var CLASS_NAME_STATIC = 'modal-static';\n var SELECTOR_DIALOG = '.modal-dialog';\n var SELECTOR_MODAL_BODY = '.modal-body';\n var SELECTOR_DATA_TOGGLE$3 = '[data-toggle=\"modal\"]';\n var SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]';\n var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n var SELECTOR_STICKY_CONTENT = '.sticky-top';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Modal = /*#__PURE__*/function () {\n function Modal(element, config) {\n this._config = this._getConfig(config);\n this._element = element;\n this._dialog = element.querySelector(SELECTOR_DIALOG);\n this._backdrop = null;\n this._isShown = false;\n this._isBodyOverflowing = false;\n this._ignoreBackdropClick = false;\n this._isTransitioning = false;\n this._scrollbarWidth = 0;\n } // Getters\n\n\n var _proto = Modal.prototype;\n\n // Public\n _proto.toggle = function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n };\n\n _proto.show = function show(relatedTarget) {\n var _this = this;\n\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n if ($(this._element).hasClass(CLASS_NAME_FADE$1)) {\n this._isTransitioning = true;\n }\n\n var showEvent = $.Event(EVENT_SHOW$2, {\n relatedTarget: relatedTarget\n });\n $(this._element).trigger(showEvent);\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = true;\n\n this._checkScrollbar();\n\n this._setScrollbar();\n\n this._adjustDialog();\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $(this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {\n return _this.hide(event);\n });\n $(this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {\n $(_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {\n if ($(event.target).is(_this._element)) {\n _this._ignoreBackdropClick = true;\n }\n });\n });\n\n this._showBackdrop(function () {\n return _this._showElement(relatedTarget);\n });\n };\n\n _proto.hide = function hide(event) {\n var _this2 = this;\n\n if (event) {\n event.preventDefault();\n }\n\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n var hideEvent = $.Event(EVENT_HIDE$2);\n $(this._element).trigger(hideEvent);\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = false;\n var transition = $(this._element).hasClass(CLASS_NAME_FADE$1);\n\n if (transition) {\n this._isTransitioning = true;\n }\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $(document).off(EVENT_FOCUSIN);\n $(this._element).removeClass(CLASS_NAME_SHOW$3);\n $(this._element).off(EVENT_CLICK_DISMISS);\n $(this._dialog).off(EVENT_MOUSEDOWN_DISMISS);\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, function (event) {\n return _this2._hideModal(event);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n this._hideModal();\n }\n };\n\n _proto.dispose = function dispose() {\n [window, this._element, this._dialog].forEach(function (htmlElement) {\n return $(htmlElement).off(EVENT_KEY$5);\n });\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n\n $(document).off(EVENT_FOCUSIN);\n $.removeData(this._element, DATA_KEY$5);\n this._config = null;\n this._element = null;\n this._dialog = null;\n this._backdrop = null;\n this._isShown = null;\n this._isBodyOverflowing = null;\n this._ignoreBackdropClick = null;\n this._isTransitioning = null;\n this._scrollbarWidth = null;\n };\n\n _proto.handleUpdate = function handleUpdate() {\n this._adjustDialog();\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$3, config);\n Util.typeCheckConfig(NAME$5, config, DefaultType$3);\n return config;\n };\n\n _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n var _this3 = this;\n\n if (this._config.backdrop === 'static') {\n var hideEventPrevented = $.Event(EVENT_HIDE_PREVENTED);\n $(this._element).trigger(hideEventPrevented);\n\n if (hideEventPrevented.defaultPrevented) {\n return;\n }\n\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n\n this._element.classList.add(CLASS_NAME_STATIC);\n\n var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $(this._element).off(Util.TRANSITION_END);\n $(this._element).one(Util.TRANSITION_END, function () {\n _this3._element.classList.remove(CLASS_NAME_STATIC);\n\n if (!isModalOverflowing) {\n $(_this3._element).one(Util.TRANSITION_END, function () {\n _this3._element.style.overflowY = '';\n }).emulateTransitionEnd(_this3._element, modalTransitionDuration);\n }\n }).emulateTransitionEnd(modalTransitionDuration);\n\n this._element.focus();\n } else {\n this.hide();\n }\n };\n\n _proto._showElement = function _showElement(relatedTarget) {\n var _this4 = this;\n\n var transition = $(this._element).hasClass(CLASS_NAME_FADE$1);\n var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n if ($(this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0;\n } else {\n this._element.scrollTop = 0;\n }\n\n if (transition) {\n Util.reflow(this._element);\n }\n\n $(this._element).addClass(CLASS_NAME_SHOW$3);\n\n if (this._config.focus) {\n this._enforceFocus();\n }\n\n var shownEvent = $.Event(EVENT_SHOWN$2, {\n relatedTarget: relatedTarget\n });\n\n var transitionComplete = function transitionComplete() {\n if (_this4._config.focus) {\n _this4._element.focus();\n }\n\n _this4._isTransitioning = false;\n $(_this4._element).trigger(shownEvent);\n };\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n } else {\n transitionComplete();\n }\n };\n\n _proto._enforceFocus = function _enforceFocus() {\n var _this5 = this;\n\n $(document).off(EVENT_FOCUSIN) // Guard against infinite focus loop\n .on(EVENT_FOCUSIN, function (event) {\n if (document !== event.target && _this5._element !== event.target && $(_this5._element).has(event.target).length === 0) {\n _this5._element.focus();\n }\n });\n };\n\n _proto._setEscapeEvent = function _setEscapeEvent() {\n var _this6 = this;\n\n if (this._isShown) {\n $(this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {\n if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) {\n event.preventDefault();\n\n _this6.hide();\n } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) {\n _this6._triggerBackdropTransition();\n }\n });\n } else if (!this._isShown) {\n $(this._element).off(EVENT_KEYDOWN_DISMISS);\n }\n };\n\n _proto._setResizeEvent = function _setResizeEvent() {\n var _this7 = this;\n\n if (this._isShown) {\n $(window).on(EVENT_RESIZE, function (event) {\n return _this7.handleUpdate(event);\n });\n } else {\n $(window).off(EVENT_RESIZE);\n }\n };\n\n _proto._hideModal = function _hideModal() {\n var _this8 = this;\n\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n this._isTransitioning = false;\n\n this._showBackdrop(function () {\n $(document.body).removeClass(CLASS_NAME_OPEN);\n\n _this8._resetAdjustments();\n\n _this8._resetScrollbar();\n\n $(_this8._element).trigger(EVENT_HIDDEN$2);\n });\n };\n\n _proto._removeBackdrop = function _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove();\n this._backdrop = null;\n }\n };\n\n _proto._showBackdrop = function _showBackdrop(callback) {\n var _this9 = this;\n\n var animate = $(this._element).hasClass(CLASS_NAME_FADE$1) ? CLASS_NAME_FADE$1 : '';\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div');\n this._backdrop.className = CLASS_NAME_BACKDROP;\n\n if (animate) {\n this._backdrop.classList.add(animate);\n }\n\n $(this._backdrop).appendTo(document.body);\n $(this._element).on(EVENT_CLICK_DISMISS, function (event) {\n if (_this9._ignoreBackdropClick) {\n _this9._ignoreBackdropClick = false;\n return;\n }\n\n if (event.target !== event.currentTarget) {\n return;\n }\n\n _this9._triggerBackdropTransition();\n });\n\n if (animate) {\n Util.reflow(this._backdrop);\n }\n\n $(this._backdrop).addClass(CLASS_NAME_SHOW$3);\n\n if (!callback) {\n return;\n }\n\n if (!animate) {\n callback();\n return;\n }\n\n var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(CLASS_NAME_SHOW$3);\n\n var callbackRemove = function callbackRemove() {\n _this9._removeBackdrop();\n\n if (callback) {\n callback();\n }\n };\n\n if ($(this._element).hasClass(CLASS_NAME_FADE$1)) {\n var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n } // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n ;\n\n _proto._adjustDialog = function _adjustDialog() {\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n }\n };\n\n _proto._resetAdjustments = function _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n };\n\n _proto._checkScrollbar = function _checkScrollbar() {\n var rect = document.body.getBoundingClientRect();\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;\n this._scrollbarWidth = this._getScrollbarWidth();\n };\n\n _proto._setScrollbar = function _setScrollbar() {\n var _this10 = this;\n\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding\n\n $(fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight;\n var calculatedPadding = $(element).css('padding-right');\n $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\");\n }); // Adjust sticky content margin\n\n $(stickyContent).each(function (index, element) {\n var actualMargin = element.style.marginRight;\n var calculatedMargin = $(element).css('margin-right');\n $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + \"px\");\n }); // Adjust body padding\n\n var actualPadding = document.body.style.paddingRight;\n var calculatedPadding = $(document.body).css('padding-right');\n $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n }\n\n $(document.body).addClass(CLASS_NAME_OPEN);\n };\n\n _proto._resetScrollbar = function _resetScrollbar() {\n // Restore fixed content padding\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n $(fixedContent).each(function (index, element) {\n var padding = $(element).data('padding-right');\n $(element).removeData('padding-right');\n element.style.paddingRight = padding ? padding : '';\n }); // Restore sticky content\n\n var elements = [].slice.call(document.querySelectorAll(\"\" + SELECTOR_STICKY_CONTENT));\n $(elements).each(function (index, element) {\n var margin = $(element).data('margin-right');\n\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right');\n }\n }); // Restore body padding\n\n var padding = $(document.body).data('padding-right');\n $(document.body).removeData('padding-right');\n document.body.style.paddingRight = padding ? padding : '';\n };\n\n _proto._getScrollbarWidth = function _getScrollbarWidth() {\n // thx d.walsh\n var scrollDiv = document.createElement('div');\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n } // Static\n ;\n\n Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$5);\n\n var _config = _extends({}, Default$3, $(this).data(), typeof config === 'object' && config ? config : {});\n\n if (!data) {\n data = new Modal(this, _config);\n $(this).data(DATA_KEY$5, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](relatedTarget);\n } else if (_config.show) {\n data.show(relatedTarget);\n }\n });\n };\n\n _createClass(Modal, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$5;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$3;\n }\n }]);\n\n return Modal;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function (event) {\n var _this11 = this;\n\n var target;\n var selector = Util.getSelectorFromElement(this);\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n var config = $(target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $(target).data(), $(this).data());\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault();\n }\n\n var $target = $(target).one(EVENT_SHOW$2, function (showEvent) {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return;\n }\n\n $target.one(EVENT_HIDDEN$2, function () {\n if ($(_this11).is(':visible')) {\n _this11.focus();\n }\n });\n });\n\n Modal._jQueryInterface.call($(target), config, this);\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$5] = Modal._jQueryInterface;\n $.fn[NAME$5].Constructor = Modal;\n\n $.fn[NAME$5].noConflict = function () {\n $.fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n return Modal._jQueryInterface;\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.2): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n };\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi;\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase();\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));\n }\n\n return true;\n }\n\n var regExp = allowedAttributeList.filter(function (attrRegex) {\n return attrRegex instanceof RegExp;\n }); // Check if a regular expression validates the attribute.\n\n for (var i = 0, len = regExp.length; i < len; i++) {\n if (attrName.match(regExp[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml;\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml);\n }\n\n var domParser = new window.DOMParser();\n var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n var whitelistKeys = Object.keys(whiteList);\n var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n\n var _loop = function _loop(i, len) {\n var el = elements[i];\n var elName = el.nodeName.toLowerCase();\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el);\n return \"continue\";\n }\n\n var attributeList = [].slice.call(el.attributes);\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n attributeList.forEach(function (attr) {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName);\n }\n });\n };\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var _ret = _loop(i);\n\n if (_ret === \"continue\") continue;\n }\n\n return createdDocument.body.innerHTML;\n }\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$6 = 'tooltip';\n var VERSION$6 = '4.5.2';\n var DATA_KEY$6 = 'bs.tooltip';\n var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];\n var CLASS_PREFIX = 'bs-tooltip';\n var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n var DefaultType$4 = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n whiteList: 'object',\n popperConfig: '(null|object)'\n };\n var AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n };\n var Default$4 = {\n animation: true,\n template: '' + '' + '',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist,\n popperConfig: null\n };\n var HOVER_STATE_SHOW = 'show';\n var HOVER_STATE_OUT = 'out';\n var Event = {\n HIDE: \"hide\" + EVENT_KEY$6,\n HIDDEN: \"hidden\" + EVENT_KEY$6,\n SHOW: \"show\" + EVENT_KEY$6,\n SHOWN: \"shown\" + EVENT_KEY$6,\n INSERTED: \"inserted\" + EVENT_KEY$6,\n CLICK: \"click\" + EVENT_KEY$6,\n FOCUSIN: \"focusin\" + EVENT_KEY$6,\n FOCUSOUT: \"focusout\" + EVENT_KEY$6,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$6,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$6\n };\n var CLASS_NAME_FADE$2 = 'fade';\n var CLASS_NAME_SHOW$4 = 'show';\n var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n var SELECTOR_ARROW = '.arrow';\n var TRIGGER_HOVER = 'hover';\n var TRIGGER_FOCUS = 'focus';\n var TRIGGER_CLICK = 'click';\n var TRIGGER_MANUAL = 'manual';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Tooltip = /*#__PURE__*/function () {\n function Tooltip(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org/)');\n } // private\n\n\n this._isEnabled = true;\n this._timeout = 0;\n this._hoverState = '';\n this._activeTrigger = {};\n this._popper = null; // Protected\n\n this.element = element;\n this.config = this._getConfig(config);\n this.tip = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Tooltip.prototype;\n\n // Public\n _proto.enable = function enable() {\n this._isEnabled = true;\n };\n\n _proto.disable = function disable() {\n this._isEnabled = false;\n };\n\n _proto.toggleEnabled = function toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n };\n\n _proto.toggle = function toggle(event) {\n if (!this._isEnabled) {\n return;\n }\n\n if (event) {\n var dataKey = this.constructor.DATA_KEY;\n var context = $(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $(event.currentTarget).data(dataKey, context);\n }\n\n context._activeTrigger.click = !context._activeTrigger.click;\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context);\n } else {\n context._leave(null, context);\n }\n } else {\n if ($(this.getTipElement()).hasClass(CLASS_NAME_SHOW$4)) {\n this._leave(null, this);\n\n return;\n }\n\n this._enter(null, this);\n }\n };\n\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n $.removeData(this.element, this.constructor.DATA_KEY);\n $(this.element).off(this.constructor.EVENT_KEY);\n $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);\n\n if (this.tip) {\n $(this.tip).remove();\n }\n\n this._isEnabled = null;\n this._timeout = null;\n this._hoverState = null;\n this._activeTrigger = null;\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n this._popper = null;\n this.element = null;\n this.config = null;\n this.tip = null;\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n var showEvent = $.Event(this.constructor.Event.SHOW);\n\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent);\n var shadowRoot = Util.findShadowRoot(this.element);\n var isInTheDom = $.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return;\n }\n\n var tip = this.getTipElement();\n var tipId = Util.getUID(this.constructor.NAME);\n tip.setAttribute('id', tipId);\n this.element.setAttribute('aria-describedby', tipId);\n this.setContent();\n\n if (this.config.animation) {\n $(tip).addClass(CLASS_NAME_FADE$2);\n }\n\n var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n var attachment = this._getAttachment(placement);\n\n this.addAttachmentClass(attachment);\n\n var container = this._getContainer();\n\n $(tip).data(this.constructor.DATA_KEY, this);\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container);\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED);\n this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment));\n $(tip).addClass(CLASS_NAME_SHOW$4); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop);\n }\n\n var complete = function complete() {\n if (_this.config.animation) {\n _this._fixTransition();\n }\n\n var prevHoverState = _this._hoverState;\n _this._hoverState = null;\n $(_this.element).trigger(_this.constructor.Event.SHOWN);\n\n if (prevHoverState === HOVER_STATE_OUT) {\n _this._leave(null, _this);\n }\n };\n\n if ($(this.tip).hasClass(CLASS_NAME_FADE$2)) {\n var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n }\n };\n\n _proto.hide = function hide(callback) {\n var _this2 = this;\n\n var tip = this.getTipElement();\n var hideEvent = $.Event(this.constructor.Event.HIDE);\n\n var complete = function complete() {\n if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip);\n }\n\n _this2._cleanTipClass();\n\n _this2.element.removeAttribute('aria-describedby');\n\n $(_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n if (_this2._popper !== null) {\n _this2._popper.destroy();\n }\n\n if (callback) {\n callback();\n }\n };\n\n $(this.element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n $(tip).removeClass(CLASS_NAME_SHOW$4); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop);\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n\n if ($(this.tip).hasClass(CLASS_NAME_FADE$2)) {\n var transitionDuration = Util.getTransitionDurationFromElement(tip);\n $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n\n this._hoverState = '';\n };\n\n _proto.update = function update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Protected\n ;\n\n _proto.isWithContent = function isWithContent() {\n return Boolean(this.getTitle());\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $(this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var tip = this.getTipElement();\n this.setElementContent($(tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());\n $(tip).removeClass(CLASS_NAME_FADE$2 + \" \" + CLASS_NAME_SHOW$4);\n };\n\n _proto.setElementContent = function setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content);\n }\n } else {\n $element.text($(content).text());\n }\n\n return;\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n }\n\n $element.html(content);\n } else {\n $element.text(content);\n }\n };\n\n _proto.getTitle = function getTitle() {\n var title = this.element.getAttribute('data-original-title');\n\n if (!title) {\n title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n }\n\n return title;\n } // Private\n ;\n\n _proto._getPopperConfig = function _getPopperConfig(attachment) {\n var _this3 = this;\n\n var defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: SELECTOR_ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: function onCreate(data) {\n if (data.originalPlacement !== data.placement) {\n _this3._handlePopperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n return _this3._handlePopperPlacementChange(data);\n }\n };\n return _extends({}, defaultBsConfig, this.config.popperConfig);\n };\n\n _proto._getOffset = function _getOffset() {\n var _this4 = this;\n\n var offset = {};\n\n if (typeof this.config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element) || {});\n return data;\n };\n } else {\n offset.offset = this.config.offset;\n }\n\n return offset;\n };\n\n _proto._getContainer = function _getContainer() {\n if (this.config.container === false) {\n return document.body;\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container);\n }\n\n return $(document).find(this.config.container);\n };\n\n _proto._getAttachment = function _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()];\n };\n\n _proto._setListeners = function _setListeners() {\n var _this5 = this;\n\n var triggers = this.config.trigger.split(' ');\n triggers.forEach(function (trigger) {\n if (trigger === 'click') {\n $(_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n return _this5.toggle(event);\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n $(_this5.element).on(eventIn, _this5.config.selector, function (event) {\n return _this5._enter(event);\n }).on(eventOut, _this5.config.selector, function (event) {\n return _this5._leave(event);\n });\n }\n });\n\n this._hideModalHandler = function () {\n if (_this5.element) {\n _this5.hide();\n }\n };\n\n $(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);\n\n if (this.config.selector) {\n this.config = _extends({}, this.config, {\n trigger: 'manual',\n selector: ''\n });\n } else {\n this._fixTitle();\n }\n };\n\n _proto._fixTitle = function _fixTitle() {\n var titleType = typeof this.element.getAttribute('data-original-title');\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n this.element.setAttribute('title', '');\n }\n };\n\n _proto._enter = function _enter(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $(event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n }\n\n if ($(context.getTipElement()).hasClass(CLASS_NAME_SHOW$4) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW;\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_SHOW;\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show();\n }\n }, context.config.delay.show);\n };\n\n _proto._leave = function _leave(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $(event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;\n }\n\n if (context._isWithActiveTrigger()) {\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_OUT;\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide();\n }\n }, context.config.delay.hide);\n };\n\n _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n for (var trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n };\n\n _proto._getConfig = function _getConfig(config) {\n var dataAttributes = $(this.element).data();\n Object.keys(dataAttributes).forEach(function (dataAttr) {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr];\n }\n });\n config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n }\n\n return config;\n };\n\n _proto._getDelegateConfig = function _getDelegateConfig() {\n var config = {};\n\n if (this.config) {\n for (var key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key];\n }\n }\n }\n\n return config;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $(this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''));\n }\n };\n\n _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper;\n\n this._cleanTipClass();\n\n this.addAttachmentClass(this._getAttachment(popperData.placement));\n };\n\n _proto._fixTransition = function _fixTransition() {\n var tip = this.getTipElement();\n var initConfigAnimation = this.config.animation;\n\n if (tip.getAttribute('x-placement') !== null) {\n return;\n }\n\n $(tip).removeClass(CLASS_NAME_FADE$2);\n this.config.animation = false;\n this.hide();\n this.show();\n this.config.animation = initConfigAnimation;\n } // Static\n ;\n\n Tooltip._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$6);\n\n var _config = typeof config === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Tooltip(this, _config);\n $(this).data(DATA_KEY$6, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tooltip, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$6;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$4;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$6;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$6;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$6;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$4;\n }\n }]);\n\n return Tooltip;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $.fn[NAME$6] = Tooltip._jQueryInterface;\n $.fn[NAME$6].Constructor = Tooltip;\n\n $.fn[NAME$6].noConflict = function () {\n $.fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n return Tooltip._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$7 = 'popover';\n var VERSION$7 = '4.5.2';\n var DATA_KEY$7 = 'bs.popover';\n var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];\n var CLASS_PREFIX$1 = 'bs-popover';\n var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n\n var Default$5 = _extends({}, Tooltip.Default, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '' + '' + '' + ''\n });\n\n var DefaultType$5 = _extends({}, Tooltip.DefaultType, {\n content: '(string|element|function)'\n });\n\n var CLASS_NAME_FADE$3 = 'fade';\n var CLASS_NAME_SHOW$5 = 'show';\n var SELECTOR_TITLE = '.popover-header';\n var SELECTOR_CONTENT = '.popover-body';\n var Event$1 = {\n HIDE: \"hide\" + EVENT_KEY$7,\n HIDDEN: \"hidden\" + EVENT_KEY$7,\n SHOW: \"show\" + EVENT_KEY$7,\n SHOWN: \"shown\" + EVENT_KEY$7,\n INSERTED: \"inserted\" + EVENT_KEY$7,\n CLICK: \"click\" + EVENT_KEY$7,\n FOCUSIN: \"focusin\" + EVENT_KEY$7,\n FOCUSOUT: \"focusout\" + EVENT_KEY$7,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$7,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$7\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Popover = /*#__PURE__*/function (_Tooltip) {\n _inheritsLoose(Popover, _Tooltip);\n\n function Popover() {\n return _Tooltip.apply(this, arguments) || this;\n }\n\n var _proto = Popover.prototype;\n\n // Overrides\n _proto.isWithContent = function isWithContent() {\n return this.getTitle() || this._getContent();\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $(this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events\n\n this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());\n\n var content = this._getContent();\n\n if (typeof content === 'function') {\n content = content.call(this.element);\n }\n\n this.setElementContent($tip.find(SELECTOR_CONTENT), content);\n $tip.removeClass(CLASS_NAME_FADE$3 + \" \" + CLASS_NAME_SHOW$5);\n } // Private\n ;\n\n _proto._getContent = function _getContent() {\n return this.element.getAttribute('data-content') || this.config.content;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $(this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''));\n }\n } // Static\n ;\n\n Popover._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$7);\n\n var _config = typeof config === 'object' ? config : null;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Popover(this, _config);\n $(this).data(DATA_KEY$7, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Popover, null, [{\n key: \"VERSION\",\n // Getters\n get: function get() {\n return VERSION$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$5;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$7;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$7;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event$1;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$7;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$5;\n }\n }]);\n\n return Popover;\n }(Tooltip);\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $.fn[NAME$7] = Popover._jQueryInterface;\n $.fn[NAME$7].Constructor = Popover;\n\n $.fn[NAME$7].noConflict = function () {\n $.fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n return Popover._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$8 = 'scrollspy';\n var VERSION$8 = '4.5.2';\n var DATA_KEY$8 = 'bs.scrollspy';\n var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n var DATA_API_KEY$6 = '.data-api';\n var JQUERY_NO_CONFLICT$8 = $.fn[NAME$8];\n var Default$6 = {\n offset: 10,\n method: 'auto',\n target: ''\n };\n var DefaultType$6 = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n };\n var EVENT_ACTIVATE = \"activate\" + EVENT_KEY$8;\n var EVENT_SCROLL = \"scroll\" + EVENT_KEY$8;\n var EVENT_LOAD_DATA_API$2 = \"load\" + EVENT_KEY$8 + DATA_API_KEY$6;\n var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n var CLASS_NAME_ACTIVE$2 = 'active';\n var SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]';\n var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n var SELECTOR_NAV_LINKS = '.nav-link';\n var SELECTOR_NAV_ITEMS = '.nav-item';\n var SELECTOR_LIST_ITEMS = '.list-group-item';\n var SELECTOR_DROPDOWN = '.dropdown';\n var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\n var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n var METHOD_OFFSET = 'offset';\n var METHOD_POSITION = 'position';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var ScrollSpy = /*#__PURE__*/function () {\n function ScrollSpy(element, config) {\n var _this = this;\n\n this._element = element;\n this._scrollElement = element.tagName === 'BODY' ? window : element;\n this._config = this._getConfig(config);\n this._selector = this._config.target + \" \" + SELECTOR_NAV_LINKS + \",\" + (this._config.target + \" \" + SELECTOR_LIST_ITEMS + \",\") + (this._config.target + \" \" + SELECTOR_DROPDOWN_ITEMS);\n this._offsets = [];\n this._targets = [];\n this._activeTarget = null;\n this._scrollHeight = 0;\n $(this._scrollElement).on(EVENT_SCROLL, function (event) {\n return _this._process(event);\n });\n this.refresh();\n\n this._process();\n } // Getters\n\n\n var _proto = ScrollSpy.prototype;\n\n // Public\n _proto.refresh = function refresh() {\n var _this2 = this;\n\n var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n this._offsets = [];\n this._targets = [];\n this._scrollHeight = this._getScrollHeight();\n var targets = [].slice.call(document.querySelectorAll(this._selector));\n targets.map(function (element) {\n var target;\n var targetSelector = Util.getSelectorFromElement(element);\n\n if (targetSelector) {\n target = document.querySelector(targetSelector);\n }\n\n if (target) {\n var targetBCR = target.getBoundingClientRect();\n\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [$(target)[offsetMethod]().top + offsetBase, targetSelector];\n }\n }\n\n return null;\n }).filter(function (item) {\n return item;\n }).sort(function (a, b) {\n return a[0] - b[0];\n }).forEach(function (item) {\n _this2._offsets.push(item[0]);\n\n _this2._targets.push(item[1]);\n });\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$8);\n $(this._scrollElement).off(EVENT_KEY$8);\n this._element = null;\n this._scrollElement = null;\n this._config = null;\n this._selector = null;\n this._offsets = null;\n this._targets = null;\n this._activeTarget = null;\n this._scrollHeight = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$6, typeof config === 'object' && config ? config : {});\n\n if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n var id = $(config.target).attr('id');\n\n if (!id) {\n id = Util.getUID(NAME$8);\n $(config.target).attr('id', id);\n }\n\n config.target = \"#\" + id;\n }\n\n Util.typeCheckConfig(NAME$8, config, DefaultType$6);\n return config;\n };\n\n _proto._getScrollTop = function _getScrollTop() {\n return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n };\n\n _proto._getScrollHeight = function _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n };\n\n _proto._getOffsetHeight = function _getOffsetHeight() {\n return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n };\n\n _proto._process = function _process() {\n var scrollTop = this._getScrollTop() + this._config.offset;\n\n var scrollHeight = this._getScrollHeight();\n\n var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh();\n }\n\n if (scrollTop >= maxScroll) {\n var target = this._targets[this._targets.length - 1];\n\n if (this._activeTarget !== target) {\n this._activate(target);\n }\n\n return;\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null;\n\n this._clear();\n\n return;\n }\n\n for (var i = this._offsets.length; i--;) {\n var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n if (isActiveTarget) {\n this._activate(this._targets[i]);\n }\n }\n };\n\n _proto._activate = function _activate(target) {\n this._activeTarget = target;\n\n this._clear();\n\n var queries = this._selector.split(',').map(function (selector) {\n return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n });\n\n var $link = $([].slice.call(document.querySelectorAll(queries.join(','))));\n\n if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n $link.closest(SELECTOR_DROPDOWN).find(SELECTOR_DROPDOWN_TOGGLE).addClass(CLASS_NAME_ACTIVE$2);\n $link.addClass(CLASS_NAME_ACTIVE$2);\n } else {\n // Set triggered link as active\n $link.addClass(CLASS_NAME_ACTIVE$2); // Set triggered links parents as active\n // With both and markup a parent is the previous sibling of any nav ancestor\n\n $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_LINKS + \", \" + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$2); // Handle special case when .nav-link is inside .nav-item\n\n $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$2);\n }\n\n $(this._scrollElement).trigger(EVENT_ACTIVATE, {\n relatedTarget: target\n });\n };\n\n _proto._clear = function _clear() {\n [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {\n return node.classList.contains(CLASS_NAME_ACTIVE$2);\n }).forEach(function (node) {\n return node.classList.remove(CLASS_NAME_ACTIVE$2);\n });\n } // Static\n ;\n\n ScrollSpy._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$8);\n\n var _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new ScrollSpy(this, _config);\n $(this).data(DATA_KEY$8, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(ScrollSpy, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$8;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$6;\n }\n }]);\n\n return ScrollSpy;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(window).on(EVENT_LOAD_DATA_API$2, function () {\n var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));\n var scrollSpysLength = scrollSpys.length;\n\n for (var i = scrollSpysLength; i--;) {\n var $spy = $(scrollSpys[i]);\n\n ScrollSpy._jQueryInterface.call($spy, $spy.data());\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$8] = ScrollSpy._jQueryInterface;\n $.fn[NAME$8].Constructor = ScrollSpy;\n\n $.fn[NAME$8].noConflict = function () {\n $.fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n return ScrollSpy._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$9 = 'tab';\n var VERSION$9 = '4.5.2';\n var DATA_KEY$9 = 'bs.tab';\n var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n var DATA_API_KEY$7 = '.data-api';\n var JQUERY_NO_CONFLICT$9 = $.fn[NAME$9];\n var EVENT_HIDE$3 = \"hide\" + EVENT_KEY$9;\n var EVENT_HIDDEN$3 = \"hidden\" + EVENT_KEY$9;\n var EVENT_SHOW$3 = \"show\" + EVENT_KEY$9;\n var EVENT_SHOWN$3 = \"shown\" + EVENT_KEY$9;\n var EVENT_CLICK_DATA_API$6 = \"click\" + EVENT_KEY$9 + DATA_API_KEY$7;\n var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n var CLASS_NAME_ACTIVE$3 = 'active';\n var CLASS_NAME_DISABLED$1 = 'disabled';\n var CLASS_NAME_FADE$4 = 'fade';\n var CLASS_NAME_SHOW$6 = 'show';\n var SELECTOR_DROPDOWN$1 = '.dropdown';\n var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';\n var SELECTOR_ACTIVE$2 = '.active';\n var SELECTOR_ACTIVE_UL = '> li > .active';\n var SELECTOR_DATA_TOGGLE$4 = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]';\n var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\n var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Tab = /*#__PURE__*/function () {\n function Tab(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Tab.prototype;\n\n // Public\n _proto.show = function show() {\n var _this = this;\n\n if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(CLASS_NAME_ACTIVE$3) || $(this._element).hasClass(CLASS_NAME_DISABLED$1)) {\n return;\n }\n\n var target;\n var previous;\n var listElement = $(this._element).closest(SELECTOR_NAV_LIST_GROUP$1)[0];\n var selector = Util.getSelectorFromElement(this._element);\n\n if (listElement) {\n var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE$2;\n previous = $.makeArray($(listElement).find(itemSelector));\n previous = previous[previous.length - 1];\n }\n\n var hideEvent = $.Event(EVENT_HIDE$3, {\n relatedTarget: this._element\n });\n var showEvent = $.Event(EVENT_SHOW$3, {\n relatedTarget: previous\n });\n\n if (previous) {\n $(previous).trigger(hideEvent);\n }\n\n $(this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n this._activate(this._element, listElement);\n\n var complete = function complete() {\n var hiddenEvent = $.Event(EVENT_HIDDEN$3, {\n relatedTarget: _this._element\n });\n var shownEvent = $.Event(EVENT_SHOWN$3, {\n relatedTarget: previous\n });\n $(previous).trigger(hiddenEvent);\n $(_this._element).trigger(shownEvent);\n };\n\n if (target) {\n this._activate(target, target.parentNode, complete);\n } else {\n complete();\n }\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$9);\n this._element = null;\n } // Private\n ;\n\n _proto._activate = function _activate(element, container, callback) {\n var _this2 = this;\n\n var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $(container).find(SELECTOR_ACTIVE_UL) : $(container).children(SELECTOR_ACTIVE$2);\n var active = activeElements[0];\n var isTransitioning = callback && active && $(active).hasClass(CLASS_NAME_FADE$4);\n\n var complete = function complete() {\n return _this2._transitionComplete(element, active, callback);\n };\n\n if (active && isTransitioning) {\n var transitionDuration = Util.getTransitionDurationFromElement(active);\n $(active).removeClass(CLASS_NAME_SHOW$6).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n if (active) {\n $(active).removeClass(CLASS_NAME_ACTIVE$3);\n var dropdownChild = $(active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];\n\n if (dropdownChild) {\n $(dropdownChild).removeClass(CLASS_NAME_ACTIVE$3);\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false);\n }\n }\n\n $(element).addClass(CLASS_NAME_ACTIVE$3);\n\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true);\n }\n\n Util.reflow(element);\n\n if (element.classList.contains(CLASS_NAME_FADE$4)) {\n element.classList.add(CLASS_NAME_SHOW$6);\n }\n\n if (element.parentNode && $(element.parentNode).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n var dropdownElement = $(element).closest(SELECTOR_DROPDOWN$1)[0];\n\n if (dropdownElement) {\n var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE$1));\n $(dropdownToggleList).addClass(CLASS_NAME_ACTIVE$3);\n }\n\n element.setAttribute('aria-expanded', true);\n }\n\n if (callback) {\n callback();\n }\n } // Static\n ;\n\n Tab._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data(DATA_KEY$9);\n\n if (!data) {\n data = new Tab(this);\n $this.data(DATA_KEY$9, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tab, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$9;\n }\n }]);\n\n return Tab;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$4, function (event) {\n event.preventDefault();\n\n Tab._jQueryInterface.call($(this), 'show');\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$9] = Tab._jQueryInterface;\n $.fn[NAME$9].Constructor = Tab;\n\n $.fn[NAME$9].noConflict = function () {\n $.fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n return Tab._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$a = 'toast';\n var VERSION$a = '4.5.2';\n var DATA_KEY$a = 'bs.toast';\n var EVENT_KEY$a = \".\" + DATA_KEY$a;\n var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];\n var EVENT_CLICK_DISMISS$1 = \"click.dismiss\" + EVENT_KEY$a;\n var EVENT_HIDE$4 = \"hide\" + EVENT_KEY$a;\n var EVENT_HIDDEN$4 = \"hidden\" + EVENT_KEY$a;\n var EVENT_SHOW$4 = \"show\" + EVENT_KEY$a;\n var EVENT_SHOWN$4 = \"shown\" + EVENT_KEY$a;\n var CLASS_NAME_FADE$5 = 'fade';\n var CLASS_NAME_HIDE = 'hide';\n var CLASS_NAME_SHOW$7 = 'show';\n var CLASS_NAME_SHOWING = 'showing';\n var DefaultType$7 = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n };\n var Default$7 = {\n animation: true,\n autohide: true,\n delay: 500\n };\n var SELECTOR_DATA_DISMISS$1 = '[data-dismiss=\"toast\"]';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Toast = /*#__PURE__*/function () {\n function Toast(element, config) {\n this._element = element;\n this._config = this._getConfig(config);\n this._timeout = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Toast.prototype;\n\n // Public\n _proto.show = function show() {\n var _this = this;\n\n var showEvent = $.Event(EVENT_SHOW$4);\n $(this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._clearTimeout();\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE$5);\n }\n\n var complete = function complete() {\n _this._element.classList.remove(CLASS_NAME_SHOWING);\n\n _this._element.classList.add(CLASS_NAME_SHOW$7);\n\n $(_this._element).trigger(EVENT_SHOWN$4);\n\n if (_this._config.autohide) {\n _this._timeout = setTimeout(function () {\n _this.hide();\n }, _this._config.delay);\n }\n };\n\n this._element.classList.remove(CLASS_NAME_HIDE);\n\n Util.reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_SHOWING);\n\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto.hide = function hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW$7)) {\n return;\n }\n\n var hideEvent = $.Event(EVENT_HIDE$4);\n $(this._element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._close();\n };\n\n _proto.dispose = function dispose() {\n this._clearTimeout();\n\n if (this._element.classList.contains(CLASS_NAME_SHOW$7)) {\n this._element.classList.remove(CLASS_NAME_SHOW$7);\n }\n\n $(this._element).off(EVENT_CLICK_DISMISS$1);\n $.removeData(this._element, DATA_KEY$a);\n this._element = null;\n this._config = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {});\n Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._setListeners = function _setListeners() {\n var _this2 = this;\n\n $(this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function () {\n return _this2.hide();\n });\n };\n\n _proto._close = function _close() {\n var _this3 = this;\n\n var complete = function complete() {\n _this3._element.classList.add(CLASS_NAME_HIDE);\n\n $(_this3._element).trigger(EVENT_HIDDEN$4);\n };\n\n this._element.classList.remove(CLASS_NAME_SHOW$7);\n\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto._clearTimeout = function _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n } // Static\n ;\n\n Toast._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $(this);\n var data = $element.data(DATA_KEY$a);\n\n var _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Toast(this, _config);\n $element.data(DATA_KEY$a, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](this);\n }\n });\n };\n\n _createClass(Toast, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$a;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$7;\n }\n }]);\n\n return Toast;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $.fn[NAME$a] = Toast._jQueryInterface;\n $.fn[NAME$a].Constructor = Toast;\n\n $.fn[NAME$a].noConflict = function () {\n $.fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n return Toast._jQueryInterface;\n };\n\n exports.Alert = Alert;\n exports.Button = Button;\n exports.Carousel = Carousel;\n exports.Collapse = Collapse;\n exports.Dropdown = Dropdown;\n exports.Modal = Modal;\n exports.Popover = Popover;\n exports.Scrollspy = ScrollSpy;\n exports.Tab = Tab;\n exports.Toast = Toast;\n exports.Tooltip = Tooltip;\n exports.Util = Util;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=bootstrap.js.map\n","/*!\n * Lightbox for Bootstrap by @ashleydw\n * https://github.com/ashleydw/lightbox\n *\n * License: https://github.com/ashleydw/lightbox/blob/master/LICENSE\n */\n+function ($) {\n\n'use strict';\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar Lightbox = (function ($) {\n\n\tvar NAME = 'ekkoLightbox';\n\tvar JQUERY_NO_CONFLICT = $.fn[NAME];\n\n\tvar Default = {\n\t\ttitle: '',\n\t\tfooter: '',\n\t\tmaxWidth: 9999,\n\t\tmaxHeight: 9999,\n\t\tshowArrows: true, //display the left / right arrows or not\n\t\twrapping: true, //if true, gallery loops infinitely\n\t\ttype: null, //force the lightbox into image / youtube mode. if null, or not image|youtube|vimeo; detect it\n\t\talwaysShowClose: false, //always show the close button, even if there is no title\n\t\tloadingMessage: '', // http://tobiasahlin.com/spinkit/\n\t\tleftArrow: '❮',\n\t\trightArrow: '❯',\n\t\tstrings: {\n\t\t\tclose: 'Close',\n\t\t\tfail: 'Failed to load image:',\n\t\t\ttype: 'Could not detect remote target type. Force the type using data-type'\n\t\t},\n\t\tdoc: document, // if in an iframe can specify top.document\n\t\tonShow: function onShow() {},\n\t\tonShown: function onShown() {},\n\t\tonHide: function onHide() {},\n\t\tonHidden: function onHidden() {},\n\t\tonNavigate: function onNavigate() {},\n\t\tonContentLoaded: function onContentLoaded() {}\n\t};\n\n\tvar Lightbox = (function () {\n\t\t_createClass(Lightbox, null, [{\n\t\t\tkey: 'Default',\n\n\t\t\t/**\n Class properties:\n \t _$element: null -> the element currently being displayed\n _$modal: The bootstrap modal generated\n _$modalDialog: The .modal-dialog\n _$modalContent: The .modal-content\n _$modalBody: The .modal-body\n _$modalHeader: The .modal-header\n _$modalFooter: The .modal-footer\n _$lightboxContainerOne: Container of the first lightbox element\n _$lightboxContainerTwo: Container of the second lightbox element\n _$lightboxBody: First element in the container\n _$modalArrows: The overlayed arrows container\n \t _$galleryItems: Other 's available for this gallery\n _galleryName: Name of the current data('gallery') showing\n _galleryIndex: The current index of the _$galleryItems being shown\n \t _config: {} the options for the modal\n _modalId: unique id for the current lightbox\n _padding / _border: CSS properties for the modal container; these are used to calculate the available space for the content\n \t */\n\n\t\t\tget: function get() {\n\t\t\t\treturn Default;\n\t\t\t}\n\t\t}]);\n\n\t\tfunction Lightbox($element, config) {\n\t\t\tvar _this = this;\n\n\t\t\t_classCallCheck(this, Lightbox);\n\n\t\t\tthis._config = $.extend({}, Default, config);\n\t\t\tthis._$modalArrows = null;\n\t\t\tthis._galleryIndex = 0;\n\t\t\tthis._galleryName = null;\n\t\t\tthis._padding = null;\n\t\t\tthis._border = null;\n\t\t\tthis._titleIsShown = false;\n\t\t\tthis._footerIsShown = false;\n\t\t\tthis._wantedWidth = 0;\n\t\t\tthis._wantedHeight = 0;\n\t\t\tthis._touchstartX = 0;\n\t\t\tthis._touchendX = 0;\n\n\t\t\tthis._modalId = 'ekkoLightbox-' + Math.floor(Math.random() * 1000 + 1);\n\t\t\tthis._$element = $element instanceof jQuery ? $element : $($element);\n\n\t\t\tthis._isBootstrap3 = $.fn.modal.Constructor.VERSION[0] == 3;\n\n\t\t\tvar h4 = '' + (this._config.title || \" \") + '';\n\t\t\tvar btn = '×';\n\n\t\t\tvar header = '' + (this._isBootstrap3 ? btn + h4 : h4 + btn) + '';\n\t\t\tvar footer = '';\n\t\t\tvar body = '';\n\t\t\tvar dialog = '' + header + body + footer + '';\n\t\t\t$(this._config.doc.body).append('' + dialog + '');\n\n\t\t\tthis._$modal = $('#' + this._modalId, this._config.doc);\n\t\t\tthis._$modalDialog = this._$modal.find('.modal-dialog').first();\n\t\t\tthis._$modalContent = this._$modal.find('.modal-content').first();\n\t\t\tthis._$modalBody = this._$modal.find('.modal-body').first();\n\t\t\tthis._$modalHeader = this._$modal.find('.modal-header').first();\n\t\t\tthis._$modalFooter = this._$modal.find('.modal-footer').first();\n\n\t\t\tthis._$lightboxContainer = this._$modalBody.find('.ekko-lightbox-container').first();\n\t\t\tthis._$lightboxBodyOne = this._$lightboxContainer.find('> div:first-child').first();\n\t\t\tthis._$lightboxBodyTwo = this._$lightboxContainer.find('> div:last-child').first();\n\n\t\t\tthis._border = this._calculateBorders();\n\t\t\tthis._padding = this._calculatePadding();\n\n\t\t\tthis._galleryName = this._$element.data('gallery');\n\t\t\tif (this._galleryName) {\n\t\t\t\tthis._$galleryItems = $(document.body).find('*[data-gallery=\"' + this._galleryName + '\"]');\n\t\t\t\tthis._galleryIndex = this._$galleryItems.index(this._$element);\n\t\t\t\t$(document).on('keydown.ekkoLightbox', this._navigationalBinder.bind(this));\n\n\t\t\t\t// add the directional arrows to the modal\n\t\t\t\tif (this._config.showArrows && this._$galleryItems.length > 1) {\n\t\t\t\t\tthis._$lightboxContainer.append('' + this._config.leftArrow + '' + this._config.rightArrow + '');\n\t\t\t\t\tthis._$modalArrows = this._$lightboxContainer.find('div.ekko-lightbox-nav-overlay').first();\n\t\t\t\t\tthis._$lightboxContainer.on('click', 'a:first-child', function (event) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn _this.navigateLeft();\n\t\t\t\t\t});\n\t\t\t\t\tthis._$lightboxContainer.on('click', 'a:last-child', function (event) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn _this.navigateRight();\n\t\t\t\t\t});\n\t\t\t\t\tthis.updateNavigation();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._$modal.on('show.bs.modal', this._config.onShow.bind(this)).on('shown.bs.modal', function () {\n\t\t\t\t_this._toggleLoading(true);\n\t\t\t\t_this._handle();\n\t\t\t\treturn _this._config.onShown.call(_this);\n\t\t\t}).on('hide.bs.modal', this._config.onHide.bind(this)).on('hidden.bs.modal', function () {\n\t\t\t\tif (_this._galleryName) {\n\t\t\t\t\t$(document).off('keydown.ekkoLightbox');\n\t\t\t\t\t$(window).off('resize.ekkoLightbox');\n\t\t\t\t}\n\t\t\t\t_this._$modal.remove();\n\t\t\t\treturn _this._config.onHidden.call(_this);\n\t\t\t}).modal(this._config);\n\n\t\t\t$(window).on('resize.ekkoLightbox', function () {\n\t\t\t\t_this._resize(_this._wantedWidth, _this._wantedHeight);\n\t\t\t});\n\t\t\tthis._$lightboxContainer.on('touchstart', function () {\n\t\t\t\t_this._touchstartX = event.changedTouches[0].screenX;\n\t\t\t}).on('touchend', function () {\n\t\t\t\t_this._touchendX = event.changedTouches[0].screenX;\n\t\t\t\t_this._swipeGesure();\n\t\t\t});\n\t\t}\n\n\t\t_createClass(Lightbox, [{\n\t\t\tkey: 'element',\n\t\t\tvalue: function element() {\n\t\t\t\treturn this._$element;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'modal',\n\t\t\tvalue: function modal() {\n\t\t\t\treturn this._$modal;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'navigateTo',\n\t\t\tvalue: function navigateTo(index) {\n\n\t\t\t\tif (index < 0 || index > this._$galleryItems.length - 1) return this;\n\n\t\t\t\tthis._galleryIndex = index;\n\n\t\t\t\tthis.updateNavigation();\n\n\t\t\t\tthis._$element = $(this._$galleryItems.get(this._galleryIndex));\n\t\t\t\tthis._handle();\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'navigateLeft',\n\t\t\tvalue: function navigateLeft() {\n\n\t\t\t\tif (!this._$galleryItems) return;\n\n\t\t\t\tif (this._$galleryItems.length === 1) return;\n\n\t\t\t\tif (this._galleryIndex === 0) {\n\t\t\t\t\tif (this._config.wrapping) this._galleryIndex = this._$galleryItems.length - 1;else return;\n\t\t\t\t} else //circular\n\t\t\t\t\tthis._galleryIndex--;\n\n\t\t\t\tthis._config.onNavigate.call(this, 'left', this._galleryIndex);\n\t\t\t\treturn this.navigateTo(this._galleryIndex);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'navigateRight',\n\t\t\tvalue: function navigateRight() {\n\n\t\t\t\tif (!this._$galleryItems) return;\n\n\t\t\t\tif (this._$galleryItems.length === 1) return;\n\n\t\t\t\tif (this._galleryIndex === this._$galleryItems.length - 1) {\n\t\t\t\t\tif (this._config.wrapping) this._galleryIndex = 0;else return;\n\t\t\t\t} else //circular\n\t\t\t\t\tthis._galleryIndex++;\n\n\t\t\t\tthis._config.onNavigate.call(this, 'right', this._galleryIndex);\n\t\t\t\treturn this.navigateTo(this._galleryIndex);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'updateNavigation',\n\t\t\tvalue: function updateNavigation() {\n\t\t\t\tif (!this._config.wrapping) {\n\t\t\t\t\tvar $nav = this._$lightboxContainer.find('div.ekko-lightbox-nav-overlay');\n\t\t\t\t\tif (this._galleryIndex === 0) $nav.find('a:first-child').addClass('disabled');else $nav.find('a:first-child').removeClass('disabled');\n\n\t\t\t\t\tif (this._galleryIndex === this._$galleryItems.length - 1) $nav.find('a:last-child').addClass('disabled');else $nav.find('a:last-child').removeClass('disabled');\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'close',\n\t\t\tvalue: function close() {\n\t\t\t\treturn this._$modal.modal('hide');\n\t\t\t}\n\n\t\t\t// helper private methods\n\t\t}, {\n\t\t\tkey: '_navigationalBinder',\n\t\t\tvalue: function _navigationalBinder(event) {\n\t\t\t\tevent = event || window.event;\n\t\t\t\tif (event.keyCode === 39) return this.navigateRight();\n\t\t\t\tif (event.keyCode === 37) return this.navigateLeft();\n\t\t\t}\n\n\t\t\t// type detection private methods\n\t\t}, {\n\t\t\tkey: '_detectRemoteType',\n\t\t\tvalue: function _detectRemoteType(src, type) {\n\n\t\t\t\ttype = type || false;\n\n\t\t\t\tif (!type && this._isImage(src)) type = 'image';\n\t\t\t\tif (!type && this._getYoutubeId(src)) type = 'youtube';\n\t\t\t\tif (!type && this._getVimeoId(src)) type = 'vimeo';\n\t\t\t\tif (!type && this._getInstagramId(src)) type = 'instagram';\n\n\t\t\t\tif (!type || ['image', 'youtube', 'vimeo', 'instagram', 'video', 'url'].indexOf(type) < 0) type = 'url';\n\n\t\t\t\treturn type;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_isImage',\n\t\t\tvalue: function _isImage(string) {\n\t\t\t\treturn string && string.match(/(^data:image\\/.*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\\?|#).*)?$)/i);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_containerToUse',\n\t\t\tvalue: function _containerToUse() {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\t// if currently showing an image, fade it out and remove\n\t\t\t\tvar $toUse = this._$lightboxBodyTwo;\n\t\t\t\tvar $current = this._$lightboxBodyOne;\n\n\t\t\t\tif (this._$lightboxBodyTwo.hasClass('in')) {\n\t\t\t\t\t$toUse = this._$lightboxBodyOne;\n\t\t\t\t\t$current = this._$lightboxBodyTwo;\n\t\t\t\t}\n\n\t\t\t\t$current.removeClass('in show');\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tif (!_this2._$lightboxBodyTwo.hasClass('in')) _this2._$lightboxBodyTwo.empty();\n\t\t\t\t\tif (!_this2._$lightboxBodyOne.hasClass('in')) _this2._$lightboxBodyOne.empty();\n\t\t\t\t}, 500);\n\n\t\t\t\t$toUse.addClass('in show');\n\t\t\t\treturn $toUse;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_handle',\n\t\t\tvalue: function _handle() {\n\n\t\t\t\tvar $toUse = this._containerToUse();\n\t\t\t\tthis._updateTitleAndFooter();\n\n\t\t\t\tvar currentRemote = this._$element.attr('data-remote') || this._$element.attr('href');\n\t\t\t\tvar currentType = this._detectRemoteType(currentRemote, this._$element.attr('data-type') || false);\n\n\t\t\t\tif (['image', 'youtube', 'vimeo', 'instagram', 'video', 'url'].indexOf(currentType) < 0) return this._error(this._config.strings.type);\n\n\t\t\t\tswitch (currentType) {\n\t\t\t\t\tcase 'image':\n\t\t\t\t\t\tthis._preloadImage(currentRemote, $toUse);\n\t\t\t\t\t\tthis._preloadImageByIndex(this._galleryIndex, 3);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'youtube':\n\t\t\t\t\t\tthis._showYoutubeVideo(currentRemote, $toUse);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'vimeo':\n\t\t\t\t\t\tthis._showVimeoVideo(this._getVimeoId(currentRemote), $toUse);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'instagram':\n\t\t\t\t\t\tthis._showInstagramVideo(this._getInstagramId(currentRemote), $toUse);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'video':\n\t\t\t\t\t\tthis._showHtml5Video(currentRemote, $toUse);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t// url\n\t\t\t\t\t\tthis._loadRemoteContent(currentRemote, $toUse);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_getYoutubeId',\n\t\t\tvalue: function _getYoutubeId(string) {\n\t\t\t\tif (!string) return false;\n\t\t\t\tvar matches = string.match(/^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/);\n\t\t\t\treturn matches && matches[2].length === 11 ? matches[2] : false;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_getVimeoId',\n\t\t\tvalue: function _getVimeoId(string) {\n\t\t\t\treturn string && string.indexOf('vimeo') > 0 ? string : false;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_getInstagramId',\n\t\t\tvalue: function _getInstagramId(string) {\n\t\t\t\treturn string && string.indexOf('instagram') > 0 ? string : false;\n\t\t\t}\n\n\t\t\t// layout private methods\n\t\t}, {\n\t\t\tkey: '_toggleLoading',\n\t\t\tvalue: function _toggleLoading(show) {\n\t\t\t\tshow = show || false;\n\t\t\t\tif (show) {\n\t\t\t\t\tthis._$modalDialog.css('display', 'none');\n\t\t\t\t\tthis._$modal.removeClass('in show');\n\t\t\t\t\t$('.modal-backdrop').append(this._config.loadingMessage);\n\t\t\t\t} else {\n\t\t\t\t\tthis._$modalDialog.css('display', 'block');\n\t\t\t\t\tthis._$modal.addClass('in show');\n\t\t\t\t\t$('.modal-backdrop').find('.ekko-lightbox-loader').remove();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_calculateBorders',\n\t\t\tvalue: function _calculateBorders() {\n\t\t\t\treturn {\n\t\t\t\t\ttop: this._totalCssByAttribute('border-top-width'),\n\t\t\t\t\tright: this._totalCssByAttribute('border-right-width'),\n\t\t\t\t\tbottom: this._totalCssByAttribute('border-bottom-width'),\n\t\t\t\t\tleft: this._totalCssByAttribute('border-left-width')\n\t\t\t\t};\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_calculatePadding',\n\t\t\tvalue: function _calculatePadding() {\n\t\t\t\treturn {\n\t\t\t\t\ttop: this._totalCssByAttribute('padding-top'),\n\t\t\t\t\tright: this._totalCssByAttribute('padding-right'),\n\t\t\t\t\tbottom: this._totalCssByAttribute('padding-bottom'),\n\t\t\t\t\tleft: this._totalCssByAttribute('padding-left')\n\t\t\t\t};\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_totalCssByAttribute',\n\t\t\tvalue: function _totalCssByAttribute(attribute) {\n\t\t\t\treturn parseInt(this._$modalDialog.css(attribute), 10) + parseInt(this._$modalContent.css(attribute), 10) + parseInt(this._$modalBody.css(attribute), 10);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_updateTitleAndFooter',\n\t\t\tvalue: function _updateTitleAndFooter() {\n\t\t\t\tvar title = this._$element.data('title') || \"\";\n\t\t\t\tvar caption = this._$element.data('footer') || \"\";\n\n\t\t\t\tthis._titleIsShown = false;\n\t\t\t\tif (title || this._config.alwaysShowClose) {\n\t\t\t\t\tthis._titleIsShown = true;\n\t\t\t\t\tthis._$modalHeader.css('display', '').find('.modal-title').html(title || \" \");\n\t\t\t\t} else this._$modalHeader.css('display', 'none');\n\n\t\t\t\tthis._footerIsShown = false;\n\t\t\t\tif (caption) {\n\t\t\t\t\tthis._footerIsShown = true;\n\t\t\t\t\tthis._$modalFooter.css('display', '').html(caption);\n\t\t\t\t} else this._$modalFooter.css('display', 'none');\n\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_showYoutubeVideo',\n\t\t\tvalue: function _showYoutubeVideo(remote, $containerForElement) {\n\t\t\t\tvar id = this._getYoutubeId(remote);\n\t\t\t\tvar query = remote.indexOf('&') > 0 ? remote.substr(remote.indexOf('&')) : '';\n\t\t\t\tvar width = this._$element.data('width') || 560;\n\t\t\t\tvar height = this._$element.data('height') || width / (560 / 315);\n\t\t\t\treturn this._showVideoIframe('//www.youtube.com/embed/' + id + '?badge=0&autoplay=1&html5=1' + query, width, height, $containerForElement);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_showVimeoVideo',\n\t\t\tvalue: function _showVimeoVideo(id, $containerForElement) {\n\t\t\t\tvar width = this._$element.data('width') || 500;\n\t\t\t\tvar height = this._$element.data('height') || width / (560 / 315);\n\t\t\t\treturn this._showVideoIframe(id + '?autoplay=1', width, height, $containerForElement);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_showInstagramVideo',\n\t\t\tvalue: function _showInstagramVideo(id, $containerForElement) {\n\t\t\t\t// instagram load their content into iframe's so this can be put straight into the element\n\t\t\t\tvar width = this._$element.data('width') || 612;\n\t\t\t\tvar height = width + 80;\n\t\t\t\tid = id.substr(-1) !== '/' ? id + '/' : id; // ensure id has trailing slash\n\t\t\t\t$containerForElement.html('');\n\t\t\t\tthis._resize(width, height);\n\t\t\t\tthis._config.onContentLoaded.call(this);\n\t\t\t\tif (this._$modalArrows) //hide the arrows when showing video\n\t\t\t\t\tthis._$modalArrows.css('display', 'none');\n\t\t\t\tthis._toggleLoading(false);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_showVideoIframe',\n\t\t\tvalue: function _showVideoIframe(url, width, height, $containerForElement) {\n\t\t\t\t// should be used for videos only. for remote content use loadRemoteContent (data-type=url)\n\t\t\t\theight = height || width; // default to square\n\t\t\t\t$containerForElement.html('');\n\t\t\t\tthis._resize(width, height);\n\t\t\t\tthis._config.onContentLoaded.call(this);\n\t\t\t\tif (this._$modalArrows) this._$modalArrows.css('display', 'none'); //hide the arrows when showing video\n\t\t\t\tthis._toggleLoading(false);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_showHtml5Video',\n\t\t\tvalue: function _showHtml5Video(url, $containerForElement) {\n\t\t\t\t// should be used for videos only. for remote content use loadRemoteContent (data-type=url)\n\t\t\t\tvar width = this._$element.data('width') || 560;\n\t\t\t\tvar height = this._$element.data('height') || width / (560 / 315);\n\t\t\t\t$containerForElement.html('');\n\t\t\t\tthis._resize(width, height);\n\t\t\t\tthis._config.onContentLoaded.call(this);\n\t\t\t\tif (this._$modalArrows) this._$modalArrows.css('display', 'none'); //hide the arrows when showing video\n\t\t\t\tthis._toggleLoading(false);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_loadRemoteContent',\n\t\t\tvalue: function _loadRemoteContent(url, $containerForElement) {\n\t\t\t\tvar _this3 = this;\n\n\t\t\t\tvar width = this._$element.data('width') || 560;\n\t\t\t\tvar height = this._$element.data('height') || 560;\n\n\t\t\t\tvar disableExternalCheck = this._$element.data('disableExternalCheck') || false;\n\t\t\t\tthis._toggleLoading(false);\n\n\t\t\t\t// external urls are loading into an iframe\n\t\t\t\t// local ajax can be loaded into the container itself\n\t\t\t\tif (!disableExternalCheck && !this._isExternal(url)) {\n\t\t\t\t\t$containerForElement.load(url, $.proxy(function () {\n\t\t\t\t\t\treturn _this3._$element.trigger('loaded.bs.modal');l;\n\t\t\t\t\t}));\n\t\t\t\t} else {\n\t\t\t\t\t$containerForElement.html('');\n\t\t\t\t\tthis._config.onContentLoaded.call(this);\n\t\t\t\t}\n\n\t\t\t\tif (this._$modalArrows) //hide the arrows when remote content\n\t\t\t\t\tthis._$modalArrows.css('display', 'none');\n\n\t\t\t\tthis._resize(width, height);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_isExternal',\n\t\t\tvalue: function _isExternal(url) {\n\t\t\t\tvar match = url.match(/^([^:\\/?#]+:)?(?:\\/\\/([^\\/?#]*))?([^?#]+)?(\\?[^#]*)?(#.*)?/);\n\t\t\t\tif (typeof match[1] === \"string\" && match[1].length > 0 && match[1].toLowerCase() !== location.protocol) return true;\n\n\t\t\t\tif (typeof match[2] === \"string\" && match[2].length > 0 && match[2].replace(new RegExp(':(' + ({\n\t\t\t\t\t\"http:\": 80,\n\t\t\t\t\t\"https:\": 443\n\t\t\t\t})[location.protocol] + ')?$'), \"\") !== location.host) return true;\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_error',\n\t\t\tvalue: function _error(message) {\n\t\t\t\tconsole.error(message);\n\t\t\t\tthis._containerToUse().html(message);\n\t\t\t\tthis._resize(300, 300);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_preloadImageByIndex',\n\t\t\tvalue: function _preloadImageByIndex(startIndex, numberOfTimes) {\n\n\t\t\t\tif (!this._$galleryItems) return;\n\n\t\t\t\tvar next = $(this._$galleryItems.get(startIndex), false);\n\t\t\t\tif (typeof next == 'undefined') return;\n\n\t\t\t\tvar src = next.attr('data-remote') || next.attr('href');\n\t\t\t\tif (next.attr('data-type') === 'image' || this._isImage(src)) this._preloadImage(src, false);\n\n\t\t\t\tif (numberOfTimes > 0) return this._preloadImageByIndex(startIndex + 1, numberOfTimes - 1);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_preloadImage',\n\t\t\tvalue: function _preloadImage(src, $containerForImage) {\n\t\t\t\tvar _this4 = this;\n\n\t\t\t\t$containerForImage = $containerForImage || false;\n\n\t\t\t\tvar img = new Image();\n\t\t\t\tif ($containerForImage) {\n\t\t\t\t\t(function () {\n\n\t\t\t\t\t\t// if loading takes > 200ms show a loader\n\t\t\t\t\t\tvar loadingTimeout = setTimeout(function () {\n\t\t\t\t\t\t\t$containerForImage.append(_this4._config.loadingMessage);\n\t\t\t\t\t\t}, 200);\n\n\t\t\t\t\t\timg.onload = function () {\n\t\t\t\t\t\t\tif (loadingTimeout) clearTimeout(loadingTimeout);\n\t\t\t\t\t\t\tloadingTimeout = null;\n\t\t\t\t\t\t\tvar image = $('');\n\t\t\t\t\t\t\timage.attr('src', img.src);\n\t\t\t\t\t\t\timage.addClass('img-fluid');\n\n\t\t\t\t\t\t\t// backward compatibility for bootstrap v3\n\t\t\t\t\t\t\timage.css('width', '100%');\n\n\t\t\t\t\t\t\t$containerForImage.html(image);\n\t\t\t\t\t\t\tif (_this4._$modalArrows) _this4._$modalArrows.css('display', ''); // remove display to default to css property\n\n\t\t\t\t\t\t\t_this4._resize(img.width, img.height);\n\t\t\t\t\t\t\t_this4._toggleLoading(false);\n\t\t\t\t\t\t\treturn _this4._config.onContentLoaded.call(_this4);\n\t\t\t\t\t\t};\n\t\t\t\t\t\timg.onerror = function () {\n\t\t\t\t\t\t\t_this4._toggleLoading(false);\n\t\t\t\t\t\t\treturn _this4._error(_this4._config.strings.fail + (' ' + src));\n\t\t\t\t\t\t};\n\t\t\t\t\t})();\n\t\t\t\t}\n\n\t\t\t\timg.src = src;\n\t\t\t\treturn img;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_swipeGesure',\n\t\t\tvalue: function _swipeGesure() {\n\t\t\t\tif (this._touchendX < this._touchstartX) {\n\t\t\t\t\treturn this.navigateRight();\n\t\t\t\t}\n\t\t\t\tif (this._touchendX > this._touchstartX) {\n\t\t\t\t\treturn this.navigateLeft();\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_resize',\n\t\t\tvalue: function _resize(width, height) {\n\n\t\t\t\theight = height || width;\n\t\t\t\tthis._wantedWidth = width;\n\t\t\t\tthis._wantedHeight = height;\n\n\t\t\t\tvar imageAspecRatio = width / height;\n\n\t\t\t\t// if width > the available space, scale down the expected width and height\n\t\t\t\tvar widthBorderAndPadding = this._padding.left + this._padding.right + this._border.left + this._border.right;\n\n\t\t\t\t// force 10px margin if window size > 575px\n\t\t\t\tvar addMargin = this._config.doc.body.clientWidth > 575 ? 20 : 0;\n\t\t\t\tvar discountMargin = this._config.doc.body.clientWidth > 575 ? 0 : 20;\n\n\t\t\t\tvar maxWidth = Math.min(width + widthBorderAndPadding, this._config.doc.body.clientWidth - addMargin, this._config.maxWidth);\n\n\t\t\t\tif (width + widthBorderAndPadding > maxWidth) {\n\t\t\t\t\theight = (maxWidth - widthBorderAndPadding - discountMargin) / imageAspecRatio;\n\t\t\t\t\twidth = maxWidth;\n\t\t\t\t} else width = width + widthBorderAndPadding;\n\n\t\t\t\tvar headerHeight = 0,\n\t\t\t\t footerHeight = 0;\n\n\t\t\t\t// as the resize is performed the modal is show, the calculate might fail\n\t\t\t\t// if so, default to the default sizes\n\t\t\t\tif (this._footerIsShown) footerHeight = this._$modalFooter.outerHeight(true) || 55;\n\n\t\t\t\tif (this._titleIsShown) headerHeight = this._$modalHeader.outerHeight(true) || 67;\n\n\t\t\t\tvar borderPadding = this._padding.top + this._padding.bottom + this._border.bottom + this._border.top;\n\n\t\t\t\t//calculated each time as resizing the window can cause them to change due to Bootstraps fluid margins\n\t\t\t\tvar margins = parseFloat(this._$modalDialog.css('margin-top')) + parseFloat(this._$modalDialog.css('margin-bottom'));\n\n\t\t\t\tvar maxHeight = Math.min(height, $(window).height() - borderPadding - margins - headerHeight - footerHeight, this._config.maxHeight - borderPadding - headerHeight - footerHeight);\n\n\t\t\t\tif (height > maxHeight) {\n\t\t\t\t\t// if height > the available height, scale down the width\n\t\t\t\t\twidth = Math.ceil(maxHeight * imageAspecRatio) + widthBorderAndPadding;\n\t\t\t\t}\n\n\t\t\t\tthis._$lightboxContainer.css('height', maxHeight);\n\t\t\t\tthis._$modalDialog.css('flex', 1).css('maxWidth', width);\n\n\t\t\t\tvar modal = this._$modal.data('bs.modal');\n\t\t\t\tif (modal) {\n\t\t\t\t\t// v4 method is mistakenly protected\n\t\t\t\t\ttry {\n\t\t\t\t\t\tmodal._handleUpdate();\n\t\t\t\t\t} catch (Exception) {\n\t\t\t\t\t\tmodal.handleUpdate();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}], [{\n\t\t\tkey: '_jQueryInterface',\n\t\t\tvalue: function _jQueryInterface(config) {\n\t\t\t\tvar _this5 = this;\n\n\t\t\t\tconfig = config || {};\n\t\t\t\treturn this.each(function () {\n\t\t\t\t\tvar $this = $(_this5);\n\t\t\t\t\tvar _config = $.extend({}, Lightbox.Default, $this.data(), typeof config === 'object' && config);\n\n\t\t\t\t\tnew Lightbox(_this5, _config);\n\t\t\t\t});\n\t\t\t}\n\t\t}]);\n\n\t\treturn Lightbox;\n\t})();\n\n\t$.fn[NAME] = Lightbox._jQueryInterface;\n\t$.fn[NAME].Constructor = Lightbox;\n\t$.fn[NAME].noConflict = function () {\n\t\t$.fn[NAME] = JQUERY_NO_CONFLICT;\n\t\treturn Lightbox._jQueryInterface;\n\t};\n\n\treturn Lightbox;\n})(jQuery);\n//# sourceMappingURL=ekko-lightbox.js.map\n\n}(jQuery);\n","// The semi-colon before the function invocation is a safety \r\n// net against concatenated scripts and/or other plugins \r\n// that are not closed properly.\r\n; (function ($, window, document, undefined) {\r\n\r\n\t// undefined is used here as the undefined global \r\n\t// variable in ECMAScript 3 and is mutable (i.e. it can \r\n\t// be changed by someone else). undefined isn't really \r\n\t// being passed in so we can ensure that its value is \r\n\t// truly undefined. In ES5, undefined can no longer be \r\n\t// modified.\r\n\r\n\t// window and document are passed through as local \r\n\t// variables rather than as globals, because this (slightly) \r\n\t// quickens the resolution process and can be more \r\n\t// efficiently minified (especially when both are \r\n\t// regularly referenced in your plugin).\r\n\r\n\t// Create the defaults once\r\n\tvar pluginName = 'tagfilter';\r\n\tvar defaults = {};\r\n\r\n\t// The actual plugin constructor\r\n\tfunction Plugin(element, options) {\r\n\t\tthis.element = element;\r\n\t\tthis.$element = $(element);\r\n\r\n\t\tthis.options = $.extend({}, defaults, options);\r\n\r\n\t\tthis._defaults = defaults;\r\n\t\tthis._name = pluginName;\r\n\r\n\t\tthis.init();\r\n\t}\r\n\r\n\tPlugin.prototype.init = function () {\r\n\r\n\t\tvar $base = this;\r\n\r\n\t\t$base.$element.on('click', 'a', function (e) {\r\n\t\t\tvar hash = $(this).attr('href');\r\n\t\t\tif ($(this).hasClass('active')) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\thistory.pushState(\"\", document.title, window.location.pathname);\r\n\t\t\t\thash = null;\r\n\t\t\t}\r\n\r\n\t\t\t$base.filterList(hash);\r\n\t\t});\r\n\r\n\t\t$base.filterList();\r\n\t};\r\n\r\n\tPlugin.prototype.filterList = function (hash) {\r\n\r\n\t\tvar $base = this;\r\n\r\n\t\tif (!hash) {\r\n\t\t\thash = window.location.hash;\r\n\t\t}\r\n\r\n\t\t// Filter and set active\r\n\t\t$('a', $base.$element).removeClass('active');\r\n\t\t$('a[href=\"' + hash + '\"]', $base.$element).addClass('active');\r\n\r\n\t\tvar $listWrapper = $base.$element.siblings('.row');\r\n\r\n\t\tif (!hash) {\r\n\t\t\t$('*[data-tags]', $listWrapper).removeClass('hidden');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Filter\r\n\t\t$('*[data-tags]', $listWrapper).addClass('hidden');\r\n\t\t$('*[data-tags*=\"' + hash.replace('#', '') + '\"]', $listWrapper).removeClass('hidden');\r\n\t};\r\n\r\n\t// A really lightweight plugin wrapper around the constructor, \r\n\t// preventing against multiple instantiations\r\n\t$.fn[pluginName] = function (options) {\r\n\t\treturn this.each(function () {\r\n\t\t\tif (!$.data(this, pluginName)) {\r\n\t\t\t\t$.data(this, pluginName, new Plugin(this, options));\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n})(jQuery, window, document);","// The semi-colon before the function invocation is a safety \r\n// net against concatenated scripts and/or other plugins \r\n// that are not closed properly.\r\n; (function ($, window, document, undefined) {\r\n\r\n // undefined is used here as the undefined global \r\n // variable in ECMAScript 3 and is mutable (i.e. it can \r\n // be changed by someone else). undefined isn't really \r\n // being passed in so we can ensure that its value is \r\n // truly undefined. In ES5, undefined can no longer be \r\n // modified.\r\n\r\n // window and document are passed through as local \r\n // variables rather than as globals, because this (slightly) \r\n // quickens the resolution process and can be more \r\n // efficiently minified (especially when both are \r\n // regularly referenced in your plugin).\r\n\r\n // Create the defaults once\r\n var pluginName = 'noreferrer';\r\n var defaults = {};\r\n\r\n // The actual plugin constructor\r\n function Plugin(element, options) {\r\n this.element = element;\r\n this.$element = $(element);\r\n\r\n this.options = $.extend({}, defaults, options);\r\n\r\n this._defaults = defaults;\r\n this._name = pluginName;\r\n\r\n this.init();\r\n }\r\n\r\n Plugin.prototype.init = function () {\r\n var $base = this;\r\n\r\n $('a[target=\"_blank\"],a[href^=\"http\"]', $base.$element).each(function() {\r\n var $a = $(this);\r\n\r\n var rel = $a.attr('rel');\r\n\r\n // For some browsers, `attr` is undefined; for others,\r\n // `attr` is false. Check for both.\r\n if (typeof rel !== typeof undefined && rel !== false && rel.length > 0) {\r\n return true;\r\n }\r\n \r\n $a.attr('rel', 'noreferrer');\r\n return true;\r\n });\r\n };\r\n\r\n // A really lightweight plugin wrapper around the constructor, \r\n // preventing against multiple instantiations\r\n $.fn[pluginName] = function (options) {\r\n return this.each(function () {\r\n if (!$.data(this, pluginName)) {\r\n $.data(this, pluginName, new Plugin(this, options));\r\n }\r\n });\r\n };\r\n})(jQuery, window, document);","function setCookie(cookieName, cookieValue, daysToExpire) {\r\n var date = new Date();\r\n date.setTime(date.getTime() + (daysToExpire * 24 * 60 * 60 * 1000));\r\n document.cookie = cookieName + \"=\" + cookieValue + \"; expires=\" + date.toUTCString() + '; path=/';\r\n}\r\n\r\nfunction getCookie(cookieName) {\r\n var name = cookieName + '=';\r\n var allCookieArray = document.cookie.split(';');\r\n for (var i = 0; i < allCookieArray.length; i++) {\r\n var temp = allCookieArray[i].trim();\r\n if (temp.indexOf(name) === 0)\r\n return temp.substring(name.length, temp.length);\r\n }\r\n return null;\r\n}\r\n\r\n$(document).ready(function () {\r\n \r\n var initMenuOverrides = function () {\r\n\r\n var $navbarToggler = $('button.navbar-toggler');\r\n var $navbar = $($navbarToggler.attr('data-target'));\r\n\r\n // When toggling menu (normally mobile menu), lookup active items\r\n // and add trigger 'show' in order to expand dropdown menus (if any)\r\n $navbarToggler.on('click.furillo', function (e) {\r\n\r\n // When desktop or when closing there's no need to run this\r\n if (!$navbarToggler.is(':visible') || $(this).attr('aria-expanded') === 'true') {\r\n return;\r\n }\r\n\r\n $('.nav-item.dropdown.active', $navbar).each(function () {\r\n $('.collapse', $(this)).first().collapse('show');\r\n });\r\n });\r\n\r\n // Since we use BS 'collapse' rather than 'dropdown' for menu we need\r\n // to add this to close all open collapses when clicking outside of the menu.\r\n $(document).on('click.furillo', function (e) {\r\n\r\n // If on mobile or still within the navbar, no need to run this\r\n if ($navbarToggler.is(':visible') || $(e.target).parents('.navbar').length > 0)\r\n return;\r\n\r\n $('.collapse.show').collapse('hide');\r\n });\r\n\r\n\r\n var timeoutId = null;\r\n $navbar.on('mouseover.furillo', '.nav-item.dropdown', function (e) {\r\n\r\n // If on mobile there's no need to run this\r\n if ($navbarToggler.is(':visible'))\r\n return;\r\n\r\n var $this = $(this);\r\n\r\n // If already open (like the parent), no need to run\r\n if ($('.collapse.show', $this).first().length > 0) {\r\n return;\r\n }\r\n\r\n if (timeoutId !== null) {\r\n clearTimeout(timeoutId);\r\n }\r\n\r\n timeoutId = setTimeout(function () {\r\n $('.collapse', $this).first().collapse('show');\r\n\r\n // Always only one open\r\n $this.siblings('.nav-item.dropdown').each(function () {\r\n $('.collapse.show', this).first().collapse('hide');\r\n });\r\n\r\n timeoutId = null;\r\n }, 250);\r\n });\r\n\r\n $navbar.on('mouseleave.furillo', '.nav-item.dropdown', function (e) {\r\n\r\n // If on mobile there's no need to run this\r\n if ($navbarToggler.is(':visible'))\r\n return;\r\n\r\n $('.collapse.show', this).first().collapse('hide');\r\n });\r\n };\r\n\r\n initMenuOverrides();\r\n\r\n $(document).on('click', '[data-toggle=\"lightbox\"]', function (e) {\r\n e.preventDefault();\r\n $(this).ekkoLightbox({\r\n showArrows: true\r\n });\r\n });\r\n\r\n $('.site-header .alert').on('close.bs.alert', function () {\r\n\r\n var id = parseInt($(this).data('id'));\r\n if (isNaN(id))\r\n return;\r\n\r\n var cookie = getCookie('read_messages');\r\n var messages = [];\r\n if (cookie && cookie.length > 0) {\r\n messages = cookie.split('|');\r\n }\r\n\r\n messages.push(id);\r\n\r\n // Apply setCookie\r\n setCookie('read_messages', messages.join('|'), 7);\r\n });\r\n\r\n $('.tag-filters').tagfilter();\r\n $('body').noreferrer();\r\n});\r\n"],"file":"site.js"}