{"version":3,"sources":["bootstrap-italia.js"],"names":["showCapsLockMsg","$input","$","remove","parents","append","isIe","window","navigator","userAgent","indexOf","match","global","factory","exports","module","require","define","amd","globalThis","self","bootstrap","jQuery","Popper","this","TRANSITION_END","e","MAX_UID","MILLISECONDS_MULTIPLIER","default","$__default","transitionEndEmulator","duration","Popper__default","_interopDefaultLegacy","prefix","Math","props","document","getElementById","length","i","transitionDuration","floatTransitionDuration","floatTransitionDelay","element","getRootNode","descriptor","writable","parentNode","target","Util","findShadowRoot","Alert","Constructor","protoProps","_proto","prototype","close","staticProps","_extends","Object","assign","arguments","_jQueryInterface","key","source","Button","hasOwnProperty","call","apply","_setPrototypeOf","o","p","setPrototypeOf","config","_getConfig","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","_this","Dropdown","toggle","one","_element","called","_inNavbar","setTimeout","_config","triggerTransitionEnd","getUID","which","ARROW_DOWN_KEYCODE","index","getSelectorFromElement","fn","selector","getAttribute","CLASS_NAME_SCROLLABLE","Modal","hrefAttr","querySelector","_","EVENT_FOCUSIN","event","fixedContent","querySelectorAll","SELECTOR_FIXED_CONTENT","transitionDelay","each","parseFloat","actualPadding","style","paddingRight","elements","EVENT_CLICK_DATA_API$1","EVENT_HIDDEN$2","split","reflow","offsetHeight","uriAttrs","trigger","supportsTransitionEnd","Boolean","isElement","SAFE_URL_PATTERN","obj","nodeType","typeCheckConfig","componentName","configTypes","DATA_URL_PATTERN","len","regExp","attrName","whitelistedAttributes","concat","whiteList","value","property","NAME$4","VERSION$4","DATA_KEY$4","NAME$7","toString","toLowerCase","Tooltip","RegExp","expectedTypes","test","valueType","_isEnabled","Error","_timeout","_hoverState","_popper","documentElement","attachShadow","html","_getPopperConfig","ShadowRoot","setElementContent","_getContent","jQueryDetection","TypeError","refresh","_this2","jquery","autoMethod","_scrollElement","ScrollSpy","version","CLASS_NAME_ACTIVE$1","data","SELECTOR_NAV_LIST_GROUP$1","DATA_KEY$2","$parentDropdown","hasClass","CLASS_NAME_DROPUP","placement","special","popperConfig","_getTargetFromElement","bindType","currentTarget","is","handleObj","Collapse","JQUERY_NO_CONFLICT$a","NAME$a","createElement","rootElement","number","_getRootElement","startsWith","$defineProperty","_removeElement","dispose","removeData","DATA_KEY$a","valHooks","useDefault","select","EventIsSupported","parent","createEventObject","stringType","closest","deburredLetters","escapeMap","createEscaper","Event","join","closeEvent","keyCodeMap","removeClass","isSearching","keydown","keyHistory","resetKeyHistory","_destroyElement","options","major","Selectpicker","noneSelectedText","form","show","selectId","validity","$button","showTick","$element","multiple","header","searchbox","actionsbox","max","currentChunk","isVirtual","replaceChild","emptyMenu","_handleDismiss","alertInstance","updateIndex","isNotBackForward","selectpicker","selectTitleOption","selectedOption","_createClass","addEventListener","get","previousData","$menu","totalCount","optionSelector","setStyle","newStyle","menuStyle","getComputedStyle","dropdown","Default","SELECTOR_DATA_TOGGLE_CARROT","keepActive","prevOption","selected","option","state","maxOptionsArr","triggerChange","prevIndex","setAttribute","$items","input","triggerChangeEvent","liActive","addAriaPressed","position0","view","canHighlight","SELECTOR_INPUT","that","checked","matchIndex","matches","contains","activeIndex","activeLi","scrollTop","activeElement","liveSearch","mobile","add","CLASS_NAME_ACTIVE$3","success","type","full","VERSION","bootstrapKeydown","hasAttribute","classList","defaults","noneResultsText","toggleClass","getOrigin","a","protocol","undefined","hash","attrUpdateFunc","cache","base","getElementsByTagName","href","uses","fallback","xhr","DATA_KEY$9","shouldAvoidTriggerChange","avoidTriggerChange","checkUseElems","arrayLike","mapFn","isCallable","NAME$8","on","inputBtn","button","initialButton","scoreText","score","preventDefault","minimumLength","password","tagName","checkRepetition","buttons","slice","str","init","_i","_len","_button","NAME$9","noConflict","JQUERY_NO_CONFLICT$9","DATA_KEY$8","EVENT_KEY$8","JQUERY_NO_CONFLICT$8","CLASS_NAME_ACTIVE$2","DIRECTION_NEXT","DIRECTION_PREV","EVENT_SLID","startView","Default$7","interval","keyboard","slide","Datepicker","pause","wrap","touch","DefaultType$7","populateMonthsCalendar","populateYearsCalendar","$grid","TOUCH","PEN","Carousel","_items","_interval","populateDaysCalendar","gridCells","numEmpties","weekday","curDay","touchTimeout","numDays","touchStartX","touchDeltaX","lastDayOfWeek","_indicatorsElement","_touchSupported","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","curMonth","next","_isSliding","_slide","hideObject","find","curYear","startYear","hidden","css","previousMonth","_isPaused","cycle","clearInterval","offset","showMonthsOfYear","$active","_updateInterval","setInterval","visibilityState","nextWhenVisible","bind","to","_activeElement","SELECTOR_ACTIVE_ITEM","_getItemIndex","year","showYearsOfNextRange","showDaysOfPrevYear","showDaysOfNextYear","_handleSwipe","absDeltax","abs","direction","prev","handlePrevClick","showYearsOfPrevRange","_keydown","handleMonthClick","changeGrid","stopPropagation","ctrlKey","_addTouchEventListeners","start","_this3","PointerType","originalEvent","pointerType","toUpperCase","clientX","touches","handleFastPrevKeyDown","clearTimeout","handleNextKeyDown","keys","end","hide","handleGridKeyDown","showDaysOfMonth","showDaysOfPrevMonth","showDaysOfNextMonth","showMonthsOfPrevYear","cellIndex","datesDisabled","shiftKey","colCount","$cells","altKey","stopImmediatePropagation","ok","isPrevDirection","isNextDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","handleGridClick","$cell","update","slideEvent","_setActiveIndicatorElement","nextIndicator","handleGridFocus","indicators","children","handleGridBlur","addClass","fields","defaultInterval","elementInterval","selectGridCell","directionalClassName","orderClassName","slidEvent","_this4","unSelectGridCell","nextElement","_getItemByDirection","nextElementIndex","isCycling","proxy","$calendar","focus","omitSettingFocus","modal","modalEventHandler","getTransitionDurationFromElement","$target","greyOut","$overlay","emulateTransitionEnd","absolutePosition","action","ride","pos","_dataApiClickHandler","month","createDateFromFormat","slideIndex","weekDayFormat","initializeDate","carousels","$carousel","outputFormat","DATA_KEY$7","JQUERY_NO_CONFLICT$7","format","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","enable","SELECTOR_DATA_TOGGLE$3","Default$6","DefaultType$6","datepicker","_isTransitioning","_triggerArray","prefixTestList","id","isAnimationRequested","requestAnimationFrame","webkitRequestAnimationFrame","topCSSstring","$this","bottomCSSstring","updateScrollPos","elem","filterElement","filter","foundElem","elSticky","elNavigation","runCheckSticky","position","distanceToTop","isSticky","DATA_API_KEY","Selector","COMPONENTE_BASE","CLASS_NAME_SHOW$6","actives","donutWidth","donutBackground","_parent","NAME","Cookiebar","_setCookieEU","activesData","not","_selector","startEvent","CLASS_NAME","listItem","isDefaultPrevented","items","currIdx","found","openbutton","_getDimension","notificationTarget","fadeIn","notificationTimeOut","timeToFade","CLASS_NAME_COLLAPSED","attr","fadeOut","fontColor","setTransitioning","dimension","donutForeground","progressBarBackground","progressBarColor","progressPercent","backgroundColor","scrollSize","generate","checkForm","$el","triggerArrayLength","$spinnerInput","getBoundingClientRect","parseInt","valMax","valNow","val","$btnHourUp","$btnHourDown","allowKey","isNum","inputNumberResize","isNaN","inputTargetMin","inputTargetVal","citems","csmartSpeed","$inputTarget","tabnav","tabitems","isTransitioning","desknav","deskitems","cdotsSpeed","ccontrolsAriaHidden","cmouseDrag","xlitems","mobdots","mobitems","mobstagePadding","deskstagePadding","xldots","mobnav","_getParent","tabdots","headerInput","loop","cloop","margin","cmargin","navText","cnavText","navSpeed","dotElement","navElement","dots","deskdots","stagePadding","addButton","scopeElControl","elemLeft","inverseButton","enableElement","sourceItemsBlock","detach","appendTo","targetDiv","totalSource","sourceHeadInput","triggerArray","prop","resetAll","contextControl","isOpen","disableElement","resetButton","selectElement","optionsData","forEach","$selectWrapper","text","replaceWith","BOOTSTRAP_ITALIA_VERSION","btns","ClassWatcher","classToWatch","classAddedCallback","firstItem","item","selectors","onClose","onItemKeyDown","$trigger","getNextVisibleItem","DATA_KEY$6","EVENT_KEY$6","DATA_API_KEY$3","JQUERY_NO_CONFLICT$6","NAME$6","CLASS_NAME_DISABLED$1","CLASS_NAME_SHOW$5","CLASS_NAME_MENURIGHT","EVENT_HIDE$3","EVENT_HIDDEN$3","EVENT_CLICK_DATA_API$2","EVENT_KEYDOWN_DATA_API","SELECTOR_DATA_TOGGLE$2","SELECTOR_MENU","Default$5","flip","boundary","reference","display","DefaultType$5","_menu","_getMenuElement","_detectNavbar","isActive","disabled","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","body","noop","hideEvent","destroy","off","scheduleUpdate","constructor","DefaultType","_getPlacement","_getOffset","offsets","modifiers","enabled","preventOverflow","boundariesElement","applyStyle","toggles","dropdownMenu","context","clickEvent","_dataApiKeydownHandler","NAME$5","DATA_KEY$5","EVENT_KEY$5","JQUERY_NO_CONFLICT$5","CLASS_NAME_OPEN","CLASS_NAME_FADE$4","CLASS_NAME_SHOW$4","CLASS_NAME_STATIC","EVENT_SHOW$2","EVENT_RESIZE","EVENT_CLICK_DISMISS$1","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEDOWN_DISMISS","SELECTOR_STICKY_CONTENT","Default$4","backdrop","DefaultType$4","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","isModalOverflowing","modalTransitionDuration","hideEventPrevented","scrollHeight","clientHeight","overflowY","transitionComplete","shownEvent","modalBody","Node","ELEMENT_NODE","appendChild","removeAttribute","_enforceFocus","_this5","has","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","_backdropTransitionDuration","_this9","animate","className","backdropTransitionDuration","callbackRemove","paddingLeft","rect","round","left","right","innerWidth","_getScrollbarWidth","calculatedPadding","_this10","stickyContent","actualMargin","marginRight","calculatedMargin","padding","scrollDiv","scrollbarWidth","width","clientWidth","removeChild","_this11","DefaultWhitelist","*","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","pre","s","small","span","sub","sup","strong","u","ul","sanitizeHtml","unsafeHtml","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","_loop","el","elName","nodeName","attributeList","attributes","allowedAttributeList","nodeValue","attrRegex","allowedAttribute","innerHTML","EVENT_KEY$4","JQUERY_NO_CONFLICT$4","CLASS_PREFIX$1","BSCLS_PREFIX_REGEX$1","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE$3","CLASS_NAME_SHOW$3","HOVER_STATE_SHOW","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$3","animation","template","title","delay","container","fallbackPlacement","customClass","sanitize","DefaultType$3","Event$1","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","_activeTrigger","tip","_setListeners","disable","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","EVENT_KEY","_hideModalHandler","complete","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","_fixTransition","prevHoverState","_cleanTipClass","getTitle","content","empty","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","popperData","instance","popper","initConfigAnimation","NAME$3","DATA_KEY$3","EVENT_KEY$3","JQUERY_NO_CONFLICT$3","CLASS_PREFIX","BSCLS_PREFIX_REGEX","Default$2","DefaultType$2","Popover","_Tooltip","superClass","subClass","ARROW_RIGHT_KEYCODE","CLASS_NAME_FADE$2","NAME$2","EVENT_KEY$2","JQUERY_NO_CONFLICT$2","METHOD_POSITION","SELECTOR_NAV_LINKS","SELECTOR_LIST_ITEMS","Default$1","method","DefaultType$1","_offsets","_targets","_activeTarget","_scrollHeight","_process","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","map","targetSelector","targetBCR","height","top","sort","push","pageYOffset","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","$link","node","DATA_KEY$1","scrollSpys","$spy","JQUERY_NO_CONFLICT$1","CLASS_NAME_ACTIVE","SELECTOR_ACTIVE","SELECTOR_ACTIVE_UL","Tab","listElement","previous","itemSelector","makeArray","hiddenEvent","_transitionComplete","active","dropdownChild","dropdownElement","dropdownToggleList","JQUERY_NO_CONFLICT","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","EVENT_CLICK_DISMISS","autohide","Toast","_clearTimeout","_close","Scrollspy","defineProperty","unsafeElements","j","len2","k","len3","inArray","l","classListProp","protoProp","elemCtrProto","Element","objCtr","classListGetter","$elem","classes","Array","force","classListPropDesc","enumerable","configurable","ex","__defineGetter__","_add","_remove","_toggle","testElement","search","string","String","stringLength","searchString","searchLength","Number","min","charCodeAt","getSelectedOptions","ignoreDisabled","opt","selectedOptions","getSelectValues","DOMTokenList","token","object","result","error","r","HTMLSelectElement","_set","set","changedArguments","stringSearch","normalize","stringTypes","searchSuccess","replace","normalizeToBase","toInteger","triggerNative","eventName","dispatchEvent","bubbles","createEvent","initEvent","fireEvent","eventType","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ç","ç","Ð","ð","È","É","Ê","Ë","è","é","ê","ë","Ì","Í","Î","Ï","ì","í","î","ï","Ñ","ñ","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","Ù","Ú","Û","Ü","ù","ú","û","ü","Ý","ý","ÿ","Æ","æ","Þ","þ","ß","Ā","Ă","Ą","ā","ă","ą","Ć","Ĉ","Ċ","Č","ć","ĉ","ċ","č","Ď","Đ","ď","đ","Ē","Ĕ","Ė","Ę","Ě","ē","ĕ","ė","ę","ě","Ĝ","Ğ","Ġ","Ģ","ĝ","ğ","ġ","ģ","Ĥ","Ħ","ĥ","ħ","Ĩ","Ī","Ĭ","Į","İ","ĩ","ī","ĭ","į","ı","Ĵ","ĵ","Ķ","ķ","ĸ","Ĺ","Ļ","Ľ","Ŀ","Ł","ĺ","ļ","ľ","ŀ","ł","Ń","Ņ","Ň","Ŋ","ń","ņ","ň","ŋ","Ō","Ŏ","Ő","ō","ŏ","ő","Ŕ","Ŗ","Ř","ŕ","ŗ","ř","Ś","Ŝ","Ş","Š","ś","ŝ","ş","š","Ţ","Ť","Ŧ","ţ","ť","ŧ","Ũ","Ū","Ŭ","Ů","Ű","Ų","ũ","ū","ŭ","ů","ű","ų","Ŵ","ŵ","Ŷ","ŷ","Ÿ","Ź","Ż","Ž","ź","ż","ž","IJ","ij","Œ","œ","ʼn","ſ","reLatin","reComboMark","deburrLetter","&","<",">","\"","'","`","testRegexp","replaceRegexp","htmlEscape","escaper","32","48","49","50","51","52","53","54","55","56","57","59","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","96","97","98","99","100","101","102","103","104","105","keyCodes","err","classNames","DISABLED","DIVIDER","DROPUP","MENU","MENURIGHT","MENULEFT","BUTTONCLASS","POPOVERHEADER","ICONBASE","TICKICON","elementTemplates","subtext","whitespace","createTextNode","fragment","createDocumentFragment","REGEXP_ARROW","noResults","cloneNode","checkMark","REGEXP_TAB_OR_ESCAPE","generateOption","optgroup","inline","insertAdjacentHTML","useFragment","iconElement","textElement","textContent","icon","iconBase","subtextElement","childNodes","label","$newElement","main","current","sizeInfo","winPad","windowPadding","render","selectAll","deselectAll","Plugin","args","_option","shift","BootstrapVersion","console","warn","toUpdate","DEFAULTS","name","tickIcon","chain","extend","Function","countSelectedText","numSelected","numTotal","maxOptionsText","numAll","numGroup","selectAllText","deselectAllText","doneButton","doneButtonText","multipleSeparator","styleBase","size","selectedTextFormat","hideDisabled","showSubtext","showIcon","showContent","dropupAuto","liveSearchPlaceholder","liveSearchNormalize","liveSearchStyle","actionsBox","caret","maxOptions","selectOnTab","dropdownAlignRight","virtualScroll","autofocus","createDropdown","buildData","after","prependTo","$menuInner","$searchbox","checkDisabled","clickListener","liveSearchListener","focusedParent","setWidth","selectPosition","menuInner","firstChild","hide.bs.dropdown","hidden.bs.dropdown","show.bs.dropdown","shown.bs.dropdown","valid","buildList","multiselectable","inputGroup","donebutton","drop","setPositionData","firstHighlightIndex","dividerHeight","dropdownHeaderHeight","liHeight","posinset","createView","setSize","prevActive","scroll","chunks","menuIsDifferent","array2","chunkSize","ceil","menuInnerHeight","chunkCount","endOfChunk","prevPositions","position1","firstChunk","lastChunk","positionIsDifferent","prevActiveIndex","selectedIndex","defocusItem","previousElements","visibleElements","setOptionStatus","array1","every","menuFragment","toSanitize","actualMenuWidth","visibleElementsLen","elText","elementData","lastChild","sanitized","marginTop","marginBottom","hasScrollBar","menuInnerInnerWidth","offsetWidth","totalMenuWidth","selectWidth","minWidth","newActive","currentActive","focusItem","liIndex","selectedData","updateValue","noScroll","liData","noStyle","setPlaceholder","titleNotAppended","titleOption","navigation","performance","getEntriesByType","defaultSelected","insertBefore","readyState","displayedValue","mainData","optID","startIndex","selectOptions","addDivider","addOption","inlineStyle","optionClass","divider","cssText","optgroupClass","trim","tokens","lastIndex","headerIndex","addOptgroup","selectData","mainElements","widestOptionLength","liElement","combinedLength","widestOption","findLis","placeholderSelected","selectedCount","buttonInner","titleFragment","hasContent","countMax","thisData","titleOptions","tr8nText","filterExpand","clone","status","newElement","previousElementSibling","nextElementSibling","buttonClass","menu","menuInnerInner","dropdownHeader","actions","firstOption","headerHeight","searchHeight","actionsHeight","doneButtonHeight","outerHeight","menuWidth","menuPadding","vert","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","horiz","borderLeftWidth","borderRightWidth","menuExtras","marginLeft","scrollBarWidth","selectHeight","getSelectPosition","containerPos","$window","$container","selectOffsetTop","selectOffsetBot","selectOffsetLeft","scrollLeft","selectOffsetRight","setMenuSize","isAuto","menuHeight","minHeight","maxHeight","menuInnerMinHeight","isDropup","divHeight","divLength","estimate","dropup","_minHeight","max-height","overflow","min-height","overflow-y","$selectClone","btnWidth","outerWidth","$bsContainer","getPlacement","containerPosition","actualHeight","isDisabled","selectedOnly","setDisabled","setSelected","activeIndexIsSet","$document","setFocus","checkPopperExists","isCreated","keyCode","hoverLi","parentElement","hoverData","retainActive","clickedData","clickedIndex","prevValue","$option","$optgroup","$optgroupOptions","maxOptionsGrp","maxReached","maxReachedGrp","maxTxt","maxTxtGrp","$notify","tabindex","isTrusted","previousValue","searchValue","searchMatch","q","cacheArr","searchStyle","_searchStyle","normalizeSearch","cacheLen","liPrev","liSelectedIndex","changeAll","previousSelected","currentSelected","isToggle","updateScroll","downOnTab","isArrowKey","lastIndexOf","liActiveIndex","cancel","charAt","before","old","keydownHandler","$selectpicker","tid","debouncedCheck","unobserveChanges","xlinkNS","winLoad","create","bcr","isHidden","url","Request","origin","inProgressCount","observeIfDone","observer","MutationObserver","observe","childList","subtree","disconnect","removeEventListener","ignore","spec","useEl","setAttributeNS","onErrorTimeout","onerror","ontimeout","getAttributeNS","bottom","loc","host","XMLHttpRequest","location","origin2","withCredentials","XDomainRequest","onload","x","responseText","svg","onloadFunc","open","send","abort","from","toStr","toLength","isFinite","floor","maxSafeInteger","pow","T","kValue","A","t","PI","n","getContext","d","beginPath","arc","fillStyle","fill","lineWidth","strokeStyle","stroke","closePath","toLocaleLowerCase","circularloader","c","f","fontSize","radius","progressBarWidth","progressValue","showText","g","h","Password","$object","scoreColor","rLen","res","repeated","shortPass","badPass","goodPass","strongPass","enterPass","$text","$colorbar","$graybar","class","role","aria-valuenow","aria-valuemin","aria-valuemax","$insert","prepend","keyup","symbols","calculateScore","perc","isShiftPressed","isCapsOn","siblings","inputType","Date","dp_locales","texts","buttonTitle","buttonLabel","prevButtonLabel","nextButtonLabel","closeButtonTitle","closeButtonLabel","prevMonthButtonLabel","prevYearButtonLabel","nextMonthButtonLabel","nextYearButtonLabel","changeMonthButtonLabel","changeYearButtonLabel","changeRangeButtonLabel","calendarHelp","directionality","month_names","month_names_abbreviated","month_names_narrow","day_names","day_names_abbreviated","day_names_short","day_names_narrow","day_periods","am","noon","pm","day_periods_abbreviated","day_periods_narrow","quarter_names","quarter_names_abbreviated","quarter_names_narrow","era_names","era_names_abbreviated","era_names_narrow","full_format","long_format","medium_format","short_format","firstday_of_week","locales","startview","inputFormat","isArray","v","date","parseDate","valueOf","random","calendar","datepickerCalendar","$label","$group","datepickerButton","theme","$monthObj","$prev","$next","$fastprev","$fastnext","drawCalendarHeader","$close","gainFocusOnConstruction","tab","enter","esc","space","pageup","pagedown","home","up","down","bindHandlers","ev","firstDayOfWeek","daysOfWeekDisabled","isDateDisabled","isMonthDisabled","isYearDisabled","titleFormat","setDate","getDate","newDate","dateObj","setHours","getFullYear","getMonth","$days","eq","nextMonth","showObject","getDaysInMonth","numPrevDays","startWeekday","getDay","rowCount","longdate","formatDate","curDayClass","$tbody","gridType","endYear","curPos","day","showMonthsOfNextYear","handleFastPrevClick","handleNextClick","handleFastNextClick","handleMonthKeyDown","handlePrevKeyDown","handleFastNextKeyDown","handleCloseClick","handleCloseKeyDown","keypress","handleGridKeyPress","blur","delegate","change","updateLinked","$curCell","handleTabOut","$prevCell","$nextCell","$lastCell","$firstCell","cellId","$curDay","removeAttr","nextVal","previousVal","groupOffsetTop","zIndex","handleDocumentClick","groupOffsetLeft","parentPaddingLeft","calendarHeight","groupTop","groupHeight","roomBefore","roomAfter","box","docElem","pageXOffset","clientTop","clientLeft","offsetTop","offsetLeft","offsetParent","zeroPad","getMillisecondsInDay","date1","getTime","y","M","D","E","H","getHours","m","getMinutes","getSeconds","w","onejan","W","F","Q","era","values","yyyy","yy","substring","L","LL","LLL","LLLL","LLLLL","MM","MMM","MMMM","MMMMM","dd","DD","DDD","AA","AAA","AAAA","AAAAA","AAAAAA","EE","EEE","EEEE","EEEEE","EEEEEE","ee","eee","eeee","eeeee","eeeeee","cc","ccc","cccc","ccccc","cccccc","G","GG","GGG","GGGG","GGGGG","QQ","QQQ","QQQQ","QQQQQ","qq","qqq","qqqq","qqqqq","HH","hh","K","KK","kk","mm","ss","ww","mask","substr","extractInteger","minlength","maxlength","integer","skipName","names","now","getYear","ampm","month_name","amlength","pmlength","dates","setLocales","timeout","stickyTestElement","hasNativeSupport","areWindowEventsAttached","lastKnownScrollTop","affectedChromeVersions","mozRequestAnimationFrame","idCounter","stickies","methods","unstick","removeIndex","currentId","splice","holderClass","chrome","exec","appVersion","checkIfBrowserAffectedWithBug","getOffset","doc","win","debug","setPositions","scrollBottom","parentOffset","homeOffset","isStuck","holder","topPx","px","bottomPx","points","stuckClass","opposite","fixed","fixWidth","holderAutoHeight","attachWindowEvents","iSticky","methodOrOptions","nextSibling","scrollToGap","isDesktop","elCenter","elNavbar","navbarHeight","navOffsetTop","toggleOn","toggleOff","toggleClonedElement","toAdd","clonedSearch","clonedUser","clonedItems","elBrand","elSearch","elUser","clonedBrand","getElementsByClassName","elToggler","visibility","elSlim","slimHeight","nbh","scrollY","initSticky","elWrappers","runCheckOnScroll","_ret","getPadding","currentStyle","getPosition","isNavBottom","gap","elHeight","parentWidth","parentHeight","parentPaddingTop","parentPaddingWidth","stillDesktop","styleNode","__PUBLIC_PATH__","ComponenteBase","autocomplete","$autocomplete","insertAfter","markText","optionText","optionLabel","optionIcon","optionLink","link","$backToTopElements","CLICK_DATA_API","publicFunction","log","_handleConsole","baseInstance","_createClass2","COOKIE_NAME","CLOSE","CLOSED","LOAD_DATA_API","ClassName","_proto3","_triggerCloseEvent","exdate","c_value","escape","toUTCString","cookie","_getSelectorFromElement","_handleAccept","cookiebarInstance","_handleConsent","_getCookieEU","ARRcookies","unescape","cookiebars","$cookiebar","notificationShow","matchMedia","first","stop","slideDown","slideUp","resize","focusSimbling","SELECTOR","dropDownMenu","isLimit","isDirectionTop","keyEventHandler","evt","EVENT_CALLBACK","dropDown","ArrowDown","ArrowUp","handleLabelPosition","inputSelector","hasDefaultValue","hasPlaceholder","inputFileSelector","updateTextFields","labelSelector","noValue","noPlaceholder","validateField","numFiles","files","nomiFiles","multi","fileSize","filesize","$labelAndIcon","hasValue","isValid","badInput","usingMouse","closebutton","overlay","backbutton","fadelayer","buttonrel","history","pushState","sectionsContainerTop","scrollDistance","$btn","parentsection","parentparentsection","$icon","back","progressDonut","progress","numbers","_target","imgUrl","timeRegEx","hideInvisibleCards","targetCarousel","showVisibleCards","ready","includes","hideSpinner","$spinner","$spinnerH","$spinnerM","newTime","defLabels","newValue","handleType","setDigit","handleClick","valMin","skipVal","timeH","timeM","$btnTime","$btnMinUp","$btnMinDown","getValues","hArr","$inputNumber","inputTargetMax","inputTargetStep","cnav","cnavSpeed","ctouchDrag","cdots","cslideBy","cstagePadding","mobmargin","tabstagePadding","tabmargin","deskmargin","xlnav","xlstagePadding","xlmargin","carouselTarget","owlCarousel","nav","smartSpeed","dotsSpeed","controlsAriaHidden","mouseDrag","touchDrag","slideBy","responsive","0","768","992","1200","onInitialized","elDesc","dotDesc","slides","elDescText","dotDescText","onTranslate","onTranslated","perPageMob","perPageTab","perPageDesk","gapMob","gapTab","gapDesk","paddingMob","paddingTab","paddingDesk","arrowsMob","arrowsTab","arrowsDesk","cType","Splide","perPage","arrows","slideFocus","i18n","last","slideX","pageX","play","breakpoints","mount","listInput","elemRight","elemLeftNum","elemRightNum","addItems","sourceControl","targetControl","sourceItems","sourceHeadLabel","sourceItemsQty","sourceTotalQty","targetQty","targetHeadLabel","targetHeadInput","totalTarget","leftStart","rightStart","listToCheck","listToCheckControl","inputHeader","scopeEl","textLeft","textRight","reverseButton","allElement","onSelectChange","setOptionsToSelect","contents","stars","starsLabel","dimmerShow","dimmerHide","inputElem","alertdiv","successdiv","CONFIG_DEFAULT","errorFieldCssClass","errorLabelCssClass","JustValidateIt","formSelector","validate","JustValidate","globalConfig","formItems","_this12","watcher","onInputError","onInputErrorRemove","field","ContentWatcher","onFieldsetError","onFieldsetErrorRemove","errElements","getErrorMessages","errIds","idx","errTexts","legend","messages","JustValidateItValidatorSelectAutocomplete","inputId","required","targetNode","contentSelector","contentAddedCallback","contentRemovedCallback","_this13","mutationsList","mutationCallback","_this14","_iterator","_createForOfIteratorHelperLoose","_step","done","mutation","addedNodes","removedNodes","classRemovedCallback","ignoreToggle","lastClassState","_this15","_iterator2","_step2","attributeName","currentClassState","STYLE","opened","sideMenu","navlink","megamenuNavLink","closeBtn","navbar","homeBtn","SideMenu","currItemIdx","isKeyShift","_this16","isServiceEnabled","onOpen","bindEvents","_this17","onItemKeyUp","onItemClick","focusNext","getItemIndex","foundIdx","wayTop","incr","firstCheck","nextIdx","menus","HEADBTN_WRAPPER","HEADBTN","Home","End"],"mappings":"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","file":"bootstrap-italia.min.js","sourcesContent":["/*!\n  * Bootstrap v4.6.1 (https://getbootstrap.com/)\n  * Copyright 2011-2021 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  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n  var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n  var Popper__default = /*#__PURE__*/_interopDefaultLegacy(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\n    _setPrototypeOf(subClass, superClass);\n  }\n\n  function _setPrototypeOf(o, p) {\n    _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n      o.__proto__ = p;\n      return o;\n    };\n\n    return _setPrototypeOf(o, p);\n  }\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.6.1): util.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * Private TransitionEnd Helpers\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 ($__default[\"default\"](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    $__default[\"default\"](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    $__default[\"default\"].fn.emulateTransitionEnd = transitionEndEmulator;\n    $__default[\"default\"].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n  }\n  /**\n   * Public Util API\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 (_) {\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 = $__default[\"default\"](element).css('transition-duration');\n      var transitionDelay = $__default[\"default\"](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      $__default[\"default\"](element).trigger(TRANSITION_END);\n    },\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 $__default[\"default\"] === 'undefined') {\n        throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n      }\n\n      var version = $__default[\"default\"].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   * Constants\n   */\n\n  var NAME$a = 'alert';\n  var VERSION$a = '4.6.1';\n  var DATA_KEY$a = 'bs.alert';\n  var EVENT_KEY$a = \".\" + DATA_KEY$a;\n  var DATA_API_KEY$7 = '.data-api';\n  var JQUERY_NO_CONFLICT$a = $__default[\"default\"].fn[NAME$a];\n  var CLASS_NAME_ALERT = 'alert';\n  var CLASS_NAME_FADE$5 = 'fade';\n  var CLASS_NAME_SHOW$7 = 'show';\n  var EVENT_CLOSE = \"close\" + EVENT_KEY$a;\n  var EVENT_CLOSED = \"closed\" + EVENT_KEY$a;\n  var EVENT_CLICK_DATA_API$6 = \"click\" + EVENT_KEY$a + DATA_API_KEY$7;\n  var SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n  /**\n   * Class definition\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      $__default[\"default\"].removeData(this._element, DATA_KEY$a);\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 = $__default[\"default\"](element).closest(\".\" + CLASS_NAME_ALERT)[0];\n      }\n\n      return parent;\n    };\n\n    _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n      var closeEvent = $__default[\"default\"].Event(EVENT_CLOSE);\n      $__default[\"default\"](element).trigger(closeEvent);\n      return closeEvent;\n    };\n\n    _proto._removeElement = function _removeElement(element) {\n      var _this = this;\n\n      $__default[\"default\"](element).removeClass(CLASS_NAME_SHOW$7);\n\n      if (!$__default[\"default\"](element).hasClass(CLASS_NAME_FADE$5)) {\n        this._destroyElement(element);\n\n        return;\n      }\n\n      var transitionDuration = Util.getTransitionDurationFromElement(element);\n      $__default[\"default\"](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      $__default[\"default\"](element).detach().trigger(EVENT_CLOSED).remove();\n    } // Static\n    ;\n\n    Alert._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY$a);\n\n        if (!data) {\n          data = new Alert(this);\n          $element.data(DATA_KEY$a, 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$a;\n      }\n    }]);\n\n    return Alert;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$a] = Alert._jQueryInterface;\n  $__default[\"default\"].fn[NAME$a].Constructor = Alert;\n\n  $__default[\"default\"].fn[NAME$a].noConflict = function () {\n    $__default[\"default\"].fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n    return Alert._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$9 = 'button';\n  var VERSION$9 = '4.6.1';\n  var DATA_KEY$9 = 'bs.button';\n  var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n  var DATA_API_KEY$6 = '.data-api';\n  var JQUERY_NO_CONFLICT$9 = $__default[\"default\"].fn[NAME$9];\n  var CLASS_NAME_ACTIVE$3 = 'active';\n  var CLASS_NAME_BUTTON = 'btn';\n  var CLASS_NAME_FOCUS = 'focus';\n  var EVENT_CLICK_DATA_API$5 = \"click\" + EVENT_KEY$9 + DATA_API_KEY$6;\n  var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY$9 + DATA_API_KEY$6 + \" \" + (\"blur\" + EVENT_KEY$9 + DATA_API_KEY$6);\n  var EVENT_LOAD_DATA_API$2 = \"load\" + EVENT_KEY$9 + DATA_API_KEY$6;\n  var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]';\n  var SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]';\n  var SELECTOR_DATA_TOGGLE$4 = '[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$2 = '.active';\n  var SELECTOR_BUTTON = '.btn';\n  /**\n   * Class definition\n   */\n\n  var Button = /*#__PURE__*/function () {\n    function Button(element) {\n      this._element = element;\n      this.shouldAvoidTriggerChange = false;\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 = $__default[\"default\"](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$3)) {\n              triggerChangeEvent = false;\n            } else {\n              var activeElement = rootElement.querySelector(SELECTOR_ACTIVE$2);\n\n              if (activeElement) {\n                $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$3);\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$3);\n            }\n\n            if (!this.shouldAvoidTriggerChange) {\n              $__default[\"default\"](input).trigger('change');\n            }\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$3));\n        }\n\n        if (triggerChangeEvent) {\n          $__default[\"default\"](this._element).toggleClass(CLASS_NAME_ACTIVE$3);\n        }\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$9);\n      this._element = null;\n    } // Static\n    ;\n\n    Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY$9);\n\n        if (!data) {\n          data = new Button(this);\n          $element.data(DATA_KEY$9, data);\n        }\n\n        data.shouldAvoidTriggerChange = avoidTriggerChange;\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$9;\n      }\n    }]);\n\n    return Button;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n    var button = event.target;\n    var initialButton = button;\n\n    if (!$__default[\"default\"](button).hasClass(CLASS_NAME_BUTTON)) {\n      button = $__default[\"default\"](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 === 'INPUT' || button.tagName !== 'LABEL') {\n        Button._jQueryInterface.call($__default[\"default\"](button), 'toggle', initialButton.tagName === 'INPUT');\n      }\n    }\n  }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n    var button = $__default[\"default\"](event.target).closest(SELECTOR_BUTTON)[0];\n    $__default[\"default\"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n  });\n  $__default[\"default\"](window).on(EVENT_LOAD_DATA_API$2, 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$3);\n      } else {\n        button.classList.remove(CLASS_NAME_ACTIVE$3);\n      }\n    } // find all button toggles\n\n\n    buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$4));\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$3);\n      } else {\n        _button.classList.remove(CLASS_NAME_ACTIVE$3);\n      }\n    }\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$9] = Button._jQueryInterface;\n  $__default[\"default\"].fn[NAME$9].Constructor = Button;\n\n  $__default[\"default\"].fn[NAME$9].noConflict = function () {\n    $__default[\"default\"].fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n    return Button._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$8 = 'carousel';\n  var VERSION$8 = '4.6.1';\n  var DATA_KEY$8 = 'bs.carousel';\n  var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n  var DATA_API_KEY$5 = '.data-api';\n  var JQUERY_NO_CONFLICT$8 = $__default[\"default\"].fn[NAME$8];\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 CLASS_NAME_CAROUSEL = 'carousel';\n  var CLASS_NAME_ACTIVE$2 = '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 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$8;\n  var EVENT_SLID = \"slid\" + EVENT_KEY$8;\n  var EVENT_KEYDOWN = \"keydown\" + EVENT_KEY$8;\n  var EVENT_MOUSEENTER = \"mouseenter\" + EVENT_KEY$8;\n  var EVENT_MOUSELEAVE = \"mouseleave\" + EVENT_KEY$8;\n  var EVENT_TOUCHSTART = \"touchstart\" + EVENT_KEY$8;\n  var EVENT_TOUCHMOVE = \"touchmove\" + EVENT_KEY$8;\n  var EVENT_TOUCHEND = \"touchend\" + EVENT_KEY$8;\n  var EVENT_POINTERDOWN = \"pointerdown\" + EVENT_KEY$8;\n  var EVENT_POINTERUP = \"pointerup\" + EVENT_KEY$8;\n  var EVENT_DRAG_START = \"dragstart\" + EVENT_KEY$8;\n  var EVENT_LOAD_DATA_API$1 = \"load\" + EVENT_KEY$8 + DATA_API_KEY$5;\n  var EVENT_CLICK_DATA_API$4 = \"click\" + EVENT_KEY$8 + DATA_API_KEY$5;\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 Default$7 = {\n    interval: 5000,\n    keyboard: true,\n    slide: false,\n    pause: 'hover',\n    wrap: true,\n    touch: true\n  };\n  var DefaultType$7 = {\n    interval: '(number|boolean)',\n    keyboard: 'boolean',\n    slide: '(boolean|string)',\n    pause: '(string|boolean)',\n    wrap: 'boolean',\n    touch: 'boolean'\n  };\n  var PointerType = {\n    TOUCH: 'touch',\n    PEN: 'pen'\n  };\n  /**\n   * Class definition\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      var $element = $__default[\"default\"](this._element); // Don't call next when the page isn't visible\n      // or the carousel or its parent isn't visible\n\n      if (!document.hidden && $element.is(':visible') && $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._updateInterval();\n\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        $__default[\"default\"](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      $__default[\"default\"](this._element).off(EVENT_KEY$8);\n      $__default[\"default\"].removeData(this._element, DATA_KEY$8);\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$7, config);\n      Util.typeCheckConfig(NAME$8, config, DefaultType$7);\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        $__default[\"default\"](this._element).on(EVENT_KEYDOWN, function (event) {\n          return _this2._keydown(event);\n        });\n      }\n\n      if (this._config.pause === 'hover') {\n        $__default[\"default\"](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        _this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX;\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      $__default[\"default\"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {\n        return e.preventDefault();\n      });\n\n      if (this._pointerEvent) {\n        $__default[\"default\"](this._element).on(EVENT_POINTERDOWN, function (event) {\n          return start(event);\n        });\n        $__default[\"default\"](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        $__default[\"default\"](this._element).on(EVENT_TOUCHSTART, function (event) {\n          return start(event);\n        });\n        $__default[\"default\"](this._element).on(EVENT_TOUCHMOVE, function (event) {\n          return move(event);\n        });\n        $__default[\"default\"](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 = $__default[\"default\"].Event(EVENT_SLIDE, {\n        relatedTarget: relatedTarget,\n        direction: eventDirectionName,\n        from: fromIndex,\n        to: targetIndex\n      });\n      $__default[\"default\"](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        $__default[\"default\"](indicators).removeClass(CLASS_NAME_ACTIVE$2);\n\n        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n        if (nextIndicator) {\n          $__default[\"default\"](nextIndicator).addClass(CLASS_NAME_ACTIVE$2);\n        }\n      }\n    };\n\n    _proto._updateInterval = function _updateInterval() {\n      var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n      if (!element) {\n        return;\n      }\n\n      var elementInterval = parseInt(element.getAttribute('data-interval'), 10);\n\n      if (elementInterval) {\n        this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n        this._config.interval = elementInterval;\n      } else {\n        this._config.interval = this._config.defaultInterval || this._config.interval;\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 && $__default[\"default\"](nextElement).hasClass(CLASS_NAME_ACTIVE$2)) {\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      this._activeElement = nextElement;\n      var slidEvent = $__default[\"default\"].Event(EVENT_SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      });\n\n      if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SLIDE)) {\n        $__default[\"default\"](nextElement).addClass(orderClassName);\n        Util.reflow(nextElement);\n        $__default[\"default\"](activeElement).addClass(directionalClassName);\n        $__default[\"default\"](nextElement).addClass(directionalClassName);\n        var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n        $__default[\"default\"](activeElement).one(Util.TRANSITION_END, function () {\n          $__default[\"default\"](nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(CLASS_NAME_ACTIVE$2);\n          $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$2 + \" \" + orderClassName + \" \" + directionalClassName);\n          _this4._isSliding = false;\n          setTimeout(function () {\n            return $__default[\"default\"](_this4._element).trigger(slidEvent);\n          }, 0);\n        }).emulateTransitionEnd(transitionDuration);\n      } else {\n        $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$2);\n        $__default[\"default\"](nextElement).addClass(CLASS_NAME_ACTIVE$2);\n        this._isSliding = false;\n        $__default[\"default\"](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 = $__default[\"default\"](this).data(DATA_KEY$8);\n\n        var _config = _extends({}, Default$7, $__default[\"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          $__default[\"default\"](this).data(DATA_KEY$8, 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 = $__default[\"default\"](selector)[0];\n\n      if (!target || !$__default[\"default\"](target).hasClass(CLASS_NAME_CAROUSEL)) {\n        return;\n      }\n\n      var config = _extends({}, $__default[\"default\"](target).data(), $__default[\"default\"](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($__default[\"default\"](target), config);\n\n      if (slideIndex) {\n        $__default[\"default\"](target).data(DATA_KEY$8).to(slideIndex);\n      }\n\n      event.preventDefault();\n    };\n\n    _createClass(Carousel, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$8;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$7;\n      }\n    }]);\n\n    return Carousel;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);\n  $__default[\"default\"](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 = $__default[\"default\"](carousels[i]);\n\n      Carousel._jQueryInterface.call($carousel, $carousel.data());\n    }\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$8] = Carousel._jQueryInterface;\n  $__default[\"default\"].fn[NAME$8].Constructor = Carousel;\n\n  $__default[\"default\"].fn[NAME$8].noConflict = function () {\n    $__default[\"default\"].fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n    return Carousel._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$7 = 'collapse';\n  var VERSION$7 = '4.6.1';\n  var DATA_KEY$7 = 'bs.collapse';\n  var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n  var DATA_API_KEY$4 = '.data-api';\n  var JQUERY_NO_CONFLICT$7 = $__default[\"default\"].fn[NAME$7];\n  var CLASS_NAME_SHOW$6 = '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 EVENT_SHOW$4 = \"show\" + EVENT_KEY$7;\n  var EVENT_SHOWN$4 = \"shown\" + EVENT_KEY$7;\n  var EVENT_HIDE$4 = \"hide\" + EVENT_KEY$7;\n  var EVENT_HIDDEN$4 = \"hidden\" + EVENT_KEY$7;\n  var EVENT_CLICK_DATA_API$3 = \"click\" + EVENT_KEY$7 + DATA_API_KEY$4;\n  var SELECTOR_ACTIVES = '.show, .collapsing';\n  var SELECTOR_DATA_TOGGLE$3 = '[data-toggle=\"collapse\"]';\n  var Default$6 = {\n    toggle: true,\n    parent: ''\n  };\n  var DefaultType$6 = {\n    toggle: 'boolean',\n    parent: '(string|element)'\n  };\n  /**\n   * Class definition\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$3));\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 ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\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 || $__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\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 = $__default[\"default\"](actives).not(this._selector).data(DATA_KEY$7);\n\n        if (activesData && activesData._isTransitioning) {\n          return;\n        }\n      }\n\n      var startEvent = $__default[\"default\"].Event(EVENT_SHOW$4);\n      $__default[\"default\"](this._element).trigger(startEvent);\n\n      if (startEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (actives) {\n        Collapse._jQueryInterface.call($__default[\"default\"](actives).not(this._selector), 'hide');\n\n        if (!activesData) {\n          $__default[\"default\"](actives).data(DATA_KEY$7, null);\n        }\n      }\n\n      var dimension = this._getDimension();\n\n      $__default[\"default\"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);\n      this._element.style[dimension] = 0;\n\n      if (this._triggerArray.length) {\n        $__default[\"default\"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);\n      }\n\n      this.setTransitioning(true);\n\n      var complete = function complete() {\n        $__default[\"default\"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$6);\n        _this._element.style[dimension] = '';\n\n        _this.setTransitioning(false);\n\n        $__default[\"default\"](_this._element).trigger(EVENT_SHOWN$4);\n      };\n\n      var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n      var scrollSize = \"scroll\" + capitalizedDimension;\n      var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n      $__default[\"default\"](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 || !$__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n        return;\n      }\n\n      var startEvent = $__default[\"default\"].Event(EVENT_HIDE$4);\n      $__default[\"default\"](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      $__default[\"default\"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$6);\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 = $__default[\"default\"]([].slice.call(document.querySelectorAll(selector)));\n\n            if (!$elem.hasClass(CLASS_NAME_SHOW$6)) {\n              $__default[\"default\"](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        $__default[\"default\"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN$4);\n      };\n\n      this._element.style[dimension] = '';\n      var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n      $__default[\"default\"](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      $__default[\"default\"].removeData(this._element, DATA_KEY$7);\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$6, config);\n      config.toggle = Boolean(config.toggle); // Coerce string values\n\n      Util.typeCheckConfig(NAME$7, config, DefaultType$6);\n      return config;\n    };\n\n    _proto._getDimension = function _getDimension() {\n      var hasWidth = $__default[\"default\"](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      $__default[\"default\"](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 = $__default[\"default\"](element).hasClass(CLASS_NAME_SHOW$6);\n\n      if (triggerArray.length) {\n        $__default[\"default\"](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 $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY$7);\n\n        var _config = _extends({}, Default$6, $element.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          $element.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(Collapse, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$7;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$6;\n      }\n    }]);\n\n    return Collapse;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n    if (event.currentTarget.tagName === 'A') {\n      event.preventDefault();\n    }\n\n    var $trigger = $__default[\"default\"](this);\n    var selector = Util.getSelectorFromElement(this);\n    var selectors = [].slice.call(document.querySelectorAll(selector));\n    $__default[\"default\"](selectors).each(function () {\n      var $target = $__default[\"default\"](this);\n      var data = $target.data(DATA_KEY$7);\n      var config = data ? 'toggle' : $trigger.data();\n\n      Collapse._jQueryInterface.call($target, config);\n    });\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$7] = Collapse._jQueryInterface;\n  $__default[\"default\"].fn[NAME$7].Constructor = Collapse;\n\n  $__default[\"default\"].fn[NAME$7].noConflict = function () {\n    $__default[\"default\"].fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n    return Collapse._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$6 = 'dropdown';\n  var VERSION$6 = '4.6.1';\n  var DATA_KEY$6 = 'bs.dropdown';\n  var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n  var DATA_API_KEY$3 = '.data-api';\n  var JQUERY_NO_CONFLICT$6 = $__default[\"default\"].fn[NAME$6];\n  var ESCAPE_KEYCODE$1 = 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$1);\n  var CLASS_NAME_DISABLED$1 = 'disabled';\n  var CLASS_NAME_SHOW$5 = '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 EVENT_HIDE$3 = \"hide\" + EVENT_KEY$6;\n  var EVENT_HIDDEN$3 = \"hidden\" + EVENT_KEY$6;\n  var EVENT_SHOW$3 = \"show\" + EVENT_KEY$6;\n  var EVENT_SHOWN$3 = \"shown\" + EVENT_KEY$6;\n  var EVENT_CLICK = \"click\" + EVENT_KEY$6;\n  var EVENT_CLICK_DATA_API$2 = \"click\" + EVENT_KEY$6 + DATA_API_KEY$3;\n  var EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY$6 + DATA_API_KEY$3;\n  var EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY$6 + DATA_API_KEY$3;\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$5 = {\n    offset: 0,\n    flip: true,\n    boundary: 'scrollParent',\n    reference: 'toggle',\n    display: 'dynamic',\n    popperConfig: null\n  };\n  var DefaultType$5 = {\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   * Class definition\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 || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1)) {\n        return;\n      }\n\n      var isActive = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5);\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 || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1) || $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var showEvent = $__default[\"default\"].Event(EVENT_SHOW$3, relatedTarget);\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      $__default[\"default\"](parent).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      } // Totally disable Popper for Dropdowns in Navbar\n\n\n      if (!this._inNavbar && usePopper) {\n        // Check for Popper dependency\n        if (typeof Popper__default[\"default\"] === 'undefined') {\n          throw new TypeError('Bootstrap\\'s dropdowns require Popper (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          $__default[\"default\"](parent).addClass(CLASS_NAME_POSITION_STATIC);\n        }\n\n        this._popper = new Popper__default[\"default\"](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 && $__default[\"default\"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n        $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n      }\n\n      this._element.focus();\n\n      this._element.setAttribute('aria-expanded', true);\n\n      $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n      $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_SHOWN$3, relatedTarget));\n    };\n\n    _proto.hide = function hide() {\n      if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1) || !$__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$3, relatedTarget);\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      $__default[\"default\"](parent).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (this._popper) {\n        this._popper.destroy();\n      }\n\n      $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n      $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_HIDDEN$3, relatedTarget));\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$6);\n      $__default[\"default\"](this._element).off(EVENT_KEY$6);\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      $__default[\"default\"](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, $__default[\"default\"](this._element).data(), config);\n      Util.typeCheckConfig(NAME$6, 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 = $__default[\"default\"](this._element.parentNode);\n      var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n      if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n        placement = $__default[\"default\"](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 ($__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n        placement = PLACEMENT_BOTTOMEND;\n      }\n\n      return placement;\n    };\n\n    _proto._detectNavbar = function _detectNavbar() {\n      return $__default[\"default\"](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 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 = $__default[\"default\"](this).data(DATA_KEY$6);\n\n        var _config = typeof config === 'object' ? config : null;\n\n        if (!data) {\n          data = new Dropdown(this, _config);\n          $__default[\"default\"](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    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 = $__default[\"default\"](toggles[i]).data(DATA_KEY$6);\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 (!$__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW$5)) {\n          continue;\n        }\n\n        if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default[\"default\"].contains(parent, event.target)) {\n          continue;\n        }\n\n        var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$3, relatedTarget);\n        $__default[\"default\"](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          $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n        }\n\n        toggles[i].setAttribute('aria-expanded', 'false');\n\n        if (context._popper) {\n          context._popper.destroy();\n        }\n\n        $__default[\"default\"](dropdownMenu).removeClass(CLASS_NAME_SHOW$5);\n        $__default[\"default\"](parent).removeClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_HIDDEN$3, 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$1 && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default[\"default\"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n        return;\n      }\n\n      if (this.disabled || $__default[\"default\"](this).hasClass(CLASS_NAME_DISABLED$1)) {\n        return;\n      }\n\n      var parent = Dropdown._getParentFromElement(this);\n\n      var isActive = $__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW$5);\n\n      if (!isActive && event.which === ESCAPE_KEYCODE$1) {\n        return;\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n\n      if (!isActive || event.which === ESCAPE_KEYCODE$1 || event.which === SPACE_KEYCODE) {\n        if (event.which === ESCAPE_KEYCODE$1) {\n          $__default[\"default\"](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');\n        }\n\n        $__default[\"default\"](this).trigger('click');\n        return;\n      }\n\n      var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {\n        return $__default[\"default\"](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$6;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$5;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$5;\n      }\n    }]);\n\n    return Dropdown;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](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$2 + \" \" + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n    event.preventDefault();\n    event.stopPropagation();\n\n    Dropdown._jQueryInterface.call($__default[\"default\"](this), 'toggle');\n  }).on(EVENT_CLICK_DATA_API$2, SELECTOR_FORM_CHILD, function (e) {\n    e.stopPropagation();\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$6] = Dropdown._jQueryInterface;\n  $__default[\"default\"].fn[NAME$6].Constructor = Dropdown;\n\n  $__default[\"default\"].fn[NAME$6].noConflict = function () {\n    $__default[\"default\"].fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n    return Dropdown._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$5 = 'modal';\n  var VERSION$5 = '4.6.1';\n  var DATA_KEY$5 = 'bs.modal';\n  var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n  var DATA_API_KEY$2 = '.data-api';\n  var JQUERY_NO_CONFLICT$5 = $__default[\"default\"].fn[NAME$5];\n  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\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$4 = 'fade';\n  var CLASS_NAME_SHOW$4 = 'show';\n  var CLASS_NAME_STATIC = 'modal-static';\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$1 = \"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$1 = \"click\" + EVENT_KEY$5 + DATA_API_KEY$2;\n  var SELECTOR_DIALOG = '.modal-dialog';\n  var SELECTOR_MODAL_BODY = '.modal-body';\n  var SELECTOR_DATA_TOGGLE$1 = '[data-toggle=\"modal\"]';\n  var SELECTOR_DATA_DISMISS$1 = '[data-dismiss=\"modal\"]';\n  var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n  var SELECTOR_STICKY_CONTENT = '.sticky-top';\n  var Default$4 = {\n    backdrop: true,\n    keyboard: true,\n    focus: true,\n    show: true\n  };\n  var DefaultType$4 = {\n    backdrop: '(boolean|string)',\n    keyboard: 'boolean',\n    focus: 'boolean',\n    show: 'boolean'\n  };\n  /**\n   * Class definition\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      var showEvent = $__default[\"default\"].Event(EVENT_SHOW$2, {\n        relatedTarget: relatedTarget\n      });\n      $__default[\"default\"](this._element).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._isShown = true;\n\n      if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n        this._isTransitioning = true;\n      }\n\n      this._checkScrollbar();\n\n      this._setScrollbar();\n\n      this._adjustDialog();\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function (event) {\n        return _this.hide(event);\n      });\n      $__default[\"default\"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {\n        $__default[\"default\"](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {\n          if ($__default[\"default\"](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 = $__default[\"default\"].Event(EVENT_HIDE$2);\n      $__default[\"default\"](this._element).trigger(hideEvent);\n\n      if (!this._isShown || hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._isShown = false;\n      var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4);\n\n      if (transition) {\n        this._isTransitioning = true;\n      }\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      $__default[\"default\"](document).off(EVENT_FOCUSIN);\n      $__default[\"default\"](this._element).removeClass(CLASS_NAME_SHOW$4);\n      $__default[\"default\"](this._element).off(EVENT_CLICK_DISMISS$1);\n      $__default[\"default\"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);\n\n      if (transition) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $__default[\"default\"](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 $__default[\"default\"](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      $__default[\"default\"](document).off(EVENT_FOCUSIN);\n      $__default[\"default\"].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$4, config);\n      Util.typeCheckConfig(NAME$5, config, DefaultType$4);\n      return config;\n    };\n\n    _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n      var _this3 = this;\n\n      var hideEventPrevented = $__default[\"default\"].Event(EVENT_HIDE_PREVENTED);\n      $__default[\"default\"](this._element).trigger(hideEventPrevented);\n\n      if (hideEventPrevented.isDefaultPrevented()) {\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      $__default[\"default\"](this._element).off(Util.TRANSITION_END);\n      $__default[\"default\"](this._element).one(Util.TRANSITION_END, function () {\n        _this3._element.classList.remove(CLASS_NAME_STATIC);\n\n        if (!isModalOverflowing) {\n          $__default[\"default\"](_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    };\n\n    _proto._showElement = function _showElement(relatedTarget) {\n      var _this4 = this;\n\n      var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4);\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 ($__default[\"default\"](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      $__default[\"default\"](this._element).addClass(CLASS_NAME_SHOW$4);\n\n      if (this._config.focus) {\n        this._enforceFocus();\n      }\n\n      var shownEvent = $__default[\"default\"].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        $__default[\"default\"](_this4._element).trigger(shownEvent);\n      };\n\n      if (transition) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n        $__default[\"default\"](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      $__default[\"default\"](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop\n      .on(EVENT_FOCUSIN, function (event) {\n        if (document !== event.target && _this5._element !== event.target && $__default[\"default\"](_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        $__default[\"default\"](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {\n          if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n            event.preventDefault();\n\n            _this6.hide();\n          } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n            _this6._triggerBackdropTransition();\n          }\n        });\n      } else if (!this._isShown) {\n        $__default[\"default\"](this._element).off(EVENT_KEYDOWN_DISMISS);\n      }\n    };\n\n    _proto._setResizeEvent = function _setResizeEvent() {\n      var _this7 = this;\n\n      if (this._isShown) {\n        $__default[\"default\"](window).on(EVENT_RESIZE, function (event) {\n          return _this7.handleUpdate(event);\n        });\n      } else {\n        $__default[\"default\"](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        $__default[\"default\"](document.body).removeClass(CLASS_NAME_OPEN);\n\n        _this8._resetAdjustments();\n\n        _this8._resetScrollbar();\n\n        $__default[\"default\"](_this8._element).trigger(EVENT_HIDDEN$2);\n      });\n    };\n\n    _proto._removeBackdrop = function _removeBackdrop() {\n      if (this._backdrop) {\n        $__default[\"default\"](this._backdrop).remove();\n        this._backdrop = null;\n      }\n    };\n\n    _proto._showBackdrop = function _showBackdrop(callback) {\n      var _this9 = this;\n\n      var animate = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4) ? CLASS_NAME_FADE$4 : '';\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        $__default[\"default\"](this._backdrop).appendTo(document.body);\n        $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS$1, 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          if (_this9._config.backdrop === 'static') {\n            _this9._triggerBackdropTransition();\n          } else {\n            _this9.hide();\n          }\n        });\n\n        if (animate) {\n          Util.reflow(this._backdrop);\n        }\n\n        $__default[\"default\"](this._backdrop).addClass(CLASS_NAME_SHOW$4);\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        $__default[\"default\"](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n      } else if (!this._isShown && this._backdrop) {\n        $__default[\"default\"](this._backdrop).removeClass(CLASS_NAME_SHOW$4);\n\n        var callbackRemove = function callbackRemove() {\n          _this9._removeBackdrop();\n\n          if (callback) {\n            callback();\n          }\n        };\n\n        if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n          var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n          $__default[\"default\"](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        $__default[\"default\"](fixedContent).each(function (index, element) {\n          var actualPadding = element.style.paddingRight;\n          var calculatedPadding = $__default[\"default\"](element).css('padding-right');\n          $__default[\"default\"](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\");\n        }); // Adjust sticky content margin\n\n        $__default[\"default\"](stickyContent).each(function (index, element) {\n          var actualMargin = element.style.marginRight;\n          var calculatedMargin = $__default[\"default\"](element).css('margin-right');\n          $__default[\"default\"](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 = $__default[\"default\"](document.body).css('padding-right');\n        $__default[\"default\"](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n      }\n\n      $__default[\"default\"](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      $__default[\"default\"](fixedContent).each(function (index, element) {\n        var padding = $__default[\"default\"](element).data('padding-right');\n        $__default[\"default\"](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      $__default[\"default\"](elements).each(function (index, element) {\n        var margin = $__default[\"default\"](element).data('margin-right');\n\n        if (typeof margin !== 'undefined') {\n          $__default[\"default\"](element).css('margin-right', margin).removeData('margin-right');\n        }\n      }); // Restore body padding\n\n      var padding = $__default[\"default\"](document.body).data('padding-right');\n      $__default[\"default\"](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 = $__default[\"default\"](this).data(DATA_KEY$5);\n\n        var _config = _extends({}, Default$4, $__default[\"default\"](this).data(), typeof config === 'object' && config ? config : {});\n\n        if (!data) {\n          data = new Modal(this, _config);\n          $__default[\"default\"](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$4;\n      }\n    }]);\n\n    return Modal;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, 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 = $__default[\"default\"](target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $__default[\"default\"](target).data(), $__default[\"default\"](this).data());\n\n    if (this.tagName === 'A' || this.tagName === 'AREA') {\n      event.preventDefault();\n    }\n\n    var $target = $__default[\"default\"](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 ($__default[\"default\"](_this11).is(':visible')) {\n          _this11.focus();\n        }\n      });\n    });\n\n    Modal._jQueryInterface.call($__default[\"default\"](target), config, this);\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$5] = Modal._jQueryInterface;\n  $__default[\"default\"].fn[NAME$5].Constructor = Modal;\n\n  $__default[\"default\"].fn[NAME$5].noConflict = function () {\n    $__default[\"default\"].fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n    return Modal._jQueryInterface;\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.6.1): 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 https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n   */\n\n  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n  /**\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\n   *\n   * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/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(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue));\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 (regExp[i].test(attrName)) {\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); // eslint-disable-next-line unicorn/prefer-spread\n\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   * Constants\n   */\n\n  var NAME$4 = 'tooltip';\n  var VERSION$4 = '4.6.1';\n  var DATA_KEY$4 = 'bs.tooltip';\n  var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n  var JQUERY_NO_CONFLICT$4 = $__default[\"default\"].fn[NAME$4];\n  var CLASS_PREFIX$1 = 'bs-tooltip';\n  var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n  var CLASS_NAME_FADE$3 = 'fade';\n  var CLASS_NAME_SHOW$3 = 'show';\n  var HOVER_STATE_SHOW = 'show';\n  var HOVER_STATE_OUT = 'out';\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  var AttachmentMap = {\n    AUTO: 'auto',\n    TOP: 'top',\n    RIGHT: 'right',\n    BOTTOM: 'bottom',\n    LEFT: 'left'\n  };\n  var Default$3 = {\n    animation: true,\n    template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    selector: false,\n    placement: 'top',\n    offset: 0,\n    container: false,\n    fallbackPlacement: 'flip',\n    boundary: 'scrollParent',\n    customClass: '',\n    sanitize: true,\n    sanitizeFn: null,\n    whiteList: DefaultWhitelist,\n    popperConfig: null\n  };\n  var DefaultType$3 = {\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    customClass: '(string|function)',\n    sanitize: 'boolean',\n    sanitizeFn: '(null|function)',\n    whiteList: 'object',\n    popperConfig: '(null|object)'\n  };\n  var Event$1 = {\n    HIDE: \"hide\" + EVENT_KEY$4,\n    HIDDEN: \"hidden\" + EVENT_KEY$4,\n    SHOW: \"show\" + EVENT_KEY$4,\n    SHOWN: \"shown\" + EVENT_KEY$4,\n    INSERTED: \"inserted\" + EVENT_KEY$4,\n    CLICK: \"click\" + EVENT_KEY$4,\n    FOCUSIN: \"focusin\" + EVENT_KEY$4,\n    FOCUSOUT: \"focusout\" + EVENT_KEY$4,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$4,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$4\n  };\n  /**\n   * Class definition\n   */\n\n  var Tooltip = /*#__PURE__*/function () {\n    function Tooltip(element, config) {\n      if (typeof Popper__default[\"default\"] === 'undefined') {\n        throw new TypeError('Bootstrap\\'s tooltips require Popper (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 = $__default[\"default\"](event.currentTarget).data(dataKey);\n\n        if (!context) {\n          context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n          $__default[\"default\"](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 ($__default[\"default\"](this.getTipElement()).hasClass(CLASS_NAME_SHOW$3)) {\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      $__default[\"default\"].removeData(this.element, this.constructor.DATA_KEY);\n      $__default[\"default\"](this.element).off(this.constructor.EVENT_KEY);\n      $__default[\"default\"](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);\n\n      if (this.tip) {\n        $__default[\"default\"](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 ($__default[\"default\"](this.element).css('display') === 'none') {\n        throw new Error('Please use show on visible elements');\n      }\n\n      var showEvent = $__default[\"default\"].Event(this.constructor.Event.SHOW);\n\n      if (this.isWithContent() && this._isEnabled) {\n        $__default[\"default\"](this.element).trigger(showEvent);\n        var shadowRoot = Util.findShadowRoot(this.element);\n        var isInTheDom = $__default[\"default\"].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          $__default[\"default\"](tip).addClass(CLASS_NAME_FADE$3);\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        $__default[\"default\"](tip).data(this.constructor.DATA_KEY, this);\n\n        if (!$__default[\"default\"].contains(this.element.ownerDocument.documentElement, this.tip)) {\n          $__default[\"default\"](tip).appendTo(container);\n        }\n\n        $__default[\"default\"](this.element).trigger(this.constructor.Event.INSERTED);\n        this._popper = new Popper__default[\"default\"](this.element, tip, this._getPopperConfig(attachment));\n        $__default[\"default\"](tip).addClass(CLASS_NAME_SHOW$3);\n        $__default[\"default\"](tip).addClass(this.config.customClass); // 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          $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].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          $__default[\"default\"](_this.element).trigger(_this.constructor.Event.SHOWN);\n\n          if (prevHoverState === HOVER_STATE_OUT) {\n            _this._leave(null, _this);\n          }\n        };\n\n        if ($__default[\"default\"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n          var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n          $__default[\"default\"](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 = $__default[\"default\"].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        $__default[\"default\"](_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      $__default[\"default\"](this.element).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      $__default[\"default\"](tip).removeClass(CLASS_NAME_SHOW$3); // 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        $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n      }\n\n      this._activeTrigger[TRIGGER_CLICK] = false;\n      this._activeTrigger[TRIGGER_FOCUS] = false;\n      this._activeTrigger[TRIGGER_HOVER] = false;\n\n      if ($__default[\"default\"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n        var transitionDuration = Util.getTransitionDurationFromElement(tip);\n        $__default[\"default\"](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      $__default[\"default\"](this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n    };\n\n    _proto.getTipElement = function getTipElement() {\n      this.tip = this.tip || $__default[\"default\"](this.config.template)[0];\n      return this.tip;\n    };\n\n    _proto.setContent = function setContent() {\n      var tip = this.getTipElement();\n      this.setElementContent($__default[\"default\"](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());\n      $__default[\"default\"](tip).removeClass(CLASS_NAME_FADE$3 + \" \" + CLASS_NAME_SHOW$3);\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 (!$__default[\"default\"](content).parent().is($element)) {\n            $element.empty().append(content);\n          }\n        } else {\n          $element.text($__default[\"default\"](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 $__default[\"default\"](this.config.container);\n      }\n\n      return $__default[\"default\"](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          $__default[\"default\"](_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          $__default[\"default\"](_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      $__default[\"default\"](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 || $__default[\"default\"](event.currentTarget).data(dataKey);\n\n      if (!context) {\n        context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n        $__default[\"default\"](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 ($__default[\"default\"](context.getTipElement()).hasClass(CLASS_NAME_SHOW$3) || 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 || $__default[\"default\"](event.currentTarget).data(dataKey);\n\n      if (!context) {\n        context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n        $__default[\"default\"](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 = $__default[\"default\"](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$4, 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 = $__default[\"default\"](this.getTipElement());\n      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\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      $__default[\"default\"](tip).removeClass(CLASS_NAME_FADE$3);\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 $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY$4);\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          $element.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    _createClass(Tooltip, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$4;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$3;\n      }\n    }, {\n      key: \"NAME\",\n      get: function get() {\n        return NAME$4;\n      }\n    }, {\n      key: \"DATA_KEY\",\n      get: function get() {\n        return DATA_KEY$4;\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$4;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$3;\n      }\n    }]);\n\n    return Tooltip;\n  }();\n  /**\n   * jQuery\n   */\n\n\n  $__default[\"default\"].fn[NAME$4] = Tooltip._jQueryInterface;\n  $__default[\"default\"].fn[NAME$4].Constructor = Tooltip;\n\n  $__default[\"default\"].fn[NAME$4].noConflict = function () {\n    $__default[\"default\"].fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n    return Tooltip._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$3 = 'popover';\n  var VERSION$3 = '4.6.1';\n  var DATA_KEY$3 = 'bs.popover';\n  var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n  var JQUERY_NO_CONFLICT$3 = $__default[\"default\"].fn[NAME$3];\n  var CLASS_PREFIX = 'bs-popover';\n  var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n  var CLASS_NAME_FADE$2 = 'fade';\n  var CLASS_NAME_SHOW$2 = 'show';\n  var SELECTOR_TITLE = '.popover-header';\n  var SELECTOR_CONTENT = '.popover-body';\n\n  var Default$2 = _extends({}, Tooltip.Default, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div></div>'\n  });\n\n  var DefaultType$2 = _extends({}, Tooltip.DefaultType, {\n    content: '(string|element|function)'\n  });\n\n  var Event = {\n    HIDE: \"hide\" + EVENT_KEY$3,\n    HIDDEN: \"hidden\" + EVENT_KEY$3,\n    SHOW: \"show\" + EVENT_KEY$3,\n    SHOWN: \"shown\" + EVENT_KEY$3,\n    INSERTED: \"inserted\" + EVENT_KEY$3,\n    CLICK: \"click\" + EVENT_KEY$3,\n    FOCUSIN: \"focusin\" + EVENT_KEY$3,\n    FOCUSOUT: \"focusout\" + EVENT_KEY$3,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$3,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$3\n  };\n  /**\n   * Class definition\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      $__default[\"default\"](this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n    };\n\n    _proto.getTipElement = function getTipElement() {\n      this.tip = this.tip || $__default[\"default\"](this.config.template)[0];\n      return this.tip;\n    };\n\n    _proto.setContent = function setContent() {\n      var $tip = $__default[\"default\"](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$2 + \" \" + CLASS_NAME_SHOW$2);\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 = $__default[\"default\"](this.getTipElement());\n      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\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 = $__default[\"default\"](this).data(DATA_KEY$3);\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          $__default[\"default\"](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(Popover, null, [{\n      key: \"VERSION\",\n      get: // Getters\n      function get() {\n        return VERSION$3;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$2;\n      }\n    }, {\n      key: \"NAME\",\n      get: function get() {\n        return NAME$3;\n      }\n    }, {\n      key: \"DATA_KEY\",\n      get: function get() {\n        return DATA_KEY$3;\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$3;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$2;\n      }\n    }]);\n\n    return Popover;\n  }(Tooltip);\n  /**\n   * jQuery\n   */\n\n\n  $__default[\"default\"].fn[NAME$3] = Popover._jQueryInterface;\n  $__default[\"default\"].fn[NAME$3].Constructor = Popover;\n\n  $__default[\"default\"].fn[NAME$3].noConflict = function () {\n    $__default[\"default\"].fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n    return Popover._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$2 = 'scrollspy';\n  var VERSION$2 = '4.6.1';\n  var DATA_KEY$2 = 'bs.scrollspy';\n  var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n  var DATA_API_KEY$1 = '.data-api';\n  var JQUERY_NO_CONFLICT$2 = $__default[\"default\"].fn[NAME$2];\n  var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n  var CLASS_NAME_ACTIVE$1 = 'active';\n  var EVENT_ACTIVATE = \"activate\" + EVENT_KEY$2;\n  var EVENT_SCROLL = \"scroll\" + EVENT_KEY$2;\n  var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY$2 + DATA_API_KEY$1;\n  var METHOD_OFFSET = 'offset';\n  var METHOD_POSITION = 'position';\n  var SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]';\n  var SELECTOR_NAV_LIST_GROUP$1 = '.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$1 = '.dropdown';\n  var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\n  var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\n  var Default$1 = {\n    offset: 10,\n    method: 'auto',\n    target: ''\n  };\n  var DefaultType$1 = {\n    offset: 'number',\n    method: 'string',\n    target: '(string|element)'\n  };\n  /**\n   * Class definition\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      $__default[\"default\"](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 [$__default[\"default\"](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      $__default[\"default\"].removeData(this._element, DATA_KEY$2);\n      $__default[\"default\"](this._scrollElement).off(EVENT_KEY$2);\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$1, typeof config === 'object' && config ? config : {});\n\n      if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n        var id = $__default[\"default\"](config.target).attr('id');\n\n        if (!id) {\n          id = Util.getUID(NAME$2);\n          $__default[\"default\"](config.target).attr('id', id);\n        }\n\n        config.target = \"#\" + id;\n      }\n\n      Util.typeCheckConfig(NAME$2, config, DefaultType$1);\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 = $__default[\"default\"]([].slice.call(document.querySelectorAll(queries.join(','))));\n\n      if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n        $link.closest(SELECTOR_DROPDOWN$1).find(SELECTOR_DROPDOWN_TOGGLE$1).addClass(CLASS_NAME_ACTIVE$1);\n        $link.addClass(CLASS_NAME_ACTIVE$1);\n      } else {\n        // Set triggered link as active\n        $link.addClass(CLASS_NAME_ACTIVE$1); // Set triggered links parents as active\n        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n        $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_LINKS + \", \" + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$1); // Handle special case when .nav-link is inside .nav-item\n\n        $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$1);\n      }\n\n      $__default[\"default\"](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$1);\n      }).forEach(function (node) {\n        return node.classList.remove(CLASS_NAME_ACTIVE$1);\n      });\n    } // Static\n    ;\n\n    ScrollSpy._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$2);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data) {\n          data = new ScrollSpy(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$2, 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$2;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$1;\n      }\n    }]);\n\n    return ScrollSpy;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](window).on(EVENT_LOAD_DATA_API, 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 = $__default[\"default\"](scrollSpys[i]);\n\n      ScrollSpy._jQueryInterface.call($spy, $spy.data());\n    }\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$2] = ScrollSpy._jQueryInterface;\n  $__default[\"default\"].fn[NAME$2].Constructor = ScrollSpy;\n\n  $__default[\"default\"].fn[NAME$2].noConflict = function () {\n    $__default[\"default\"].fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n    return ScrollSpy._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$1 = 'tab';\n  var VERSION$1 = '4.6.1';\n  var DATA_KEY$1 = 'bs.tab';\n  var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n  var DATA_API_KEY = '.data-api';\n  var JQUERY_NO_CONFLICT$1 = $__default[\"default\"].fn[NAME$1];\n  var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n  var CLASS_NAME_ACTIVE = 'active';\n  var CLASS_NAME_DISABLED = 'disabled';\n  var CLASS_NAME_FADE$1 = 'fade';\n  var CLASS_NAME_SHOW$1 = 'show';\n  var EVENT_HIDE$1 = \"hide\" + EVENT_KEY$1;\n  var EVENT_HIDDEN$1 = \"hidden\" + EVENT_KEY$1;\n  var EVENT_SHOW$1 = \"show\" + EVENT_KEY$1;\n  var EVENT_SHOWN$1 = \"shown\" + EVENT_KEY$1;\n  var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY$1 + DATA_API_KEY;\n  var SELECTOR_DROPDOWN = '.dropdown';\n  var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n  var SELECTOR_ACTIVE = '.active';\n  var SELECTOR_ACTIVE_UL = '> li > .active';\n  var SELECTOR_DATA_TOGGLE = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]';\n  var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n  var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';\n  /**\n   * Class definition\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 && $__default[\"default\"](this._element).hasClass(CLASS_NAME_ACTIVE) || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED)) {\n        return;\n      }\n\n      var target;\n      var previous;\n      var listElement = $__default[\"default\"](this._element).closest(SELECTOR_NAV_LIST_GROUP)[0];\n      var selector = Util.getSelectorFromElement(this._element);\n\n      if (listElement) {\n        var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;\n        previous = $__default[\"default\"].makeArray($__default[\"default\"](listElement).find(itemSelector));\n        previous = previous[previous.length - 1];\n      }\n\n      var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$1, {\n        relatedTarget: this._element\n      });\n      var showEvent = $__default[\"default\"].Event(EVENT_SHOW$1, {\n        relatedTarget: previous\n      });\n\n      if (previous) {\n        $__default[\"default\"](previous).trigger(hideEvent);\n      }\n\n      $__default[\"default\"](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 = $__default[\"default\"].Event(EVENT_HIDDEN$1, {\n          relatedTarget: _this._element\n        });\n        var shownEvent = $__default[\"default\"].Event(EVENT_SHOWN$1, {\n          relatedTarget: previous\n        });\n        $__default[\"default\"](previous).trigger(hiddenEvent);\n        $__default[\"default\"](_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      $__default[\"default\"].removeData(this._element, DATA_KEY$1);\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') ? $__default[\"default\"](container).find(SELECTOR_ACTIVE_UL) : $__default[\"default\"](container).children(SELECTOR_ACTIVE);\n      var active = activeElements[0];\n      var isTransitioning = callback && active && $__default[\"default\"](active).hasClass(CLASS_NAME_FADE$1);\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        $__default[\"default\"](active).removeClass(CLASS_NAME_SHOW$1).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        $__default[\"default\"](active).removeClass(CLASS_NAME_ACTIVE);\n        var dropdownChild = $__default[\"default\"](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];\n\n        if (dropdownChild) {\n          $__default[\"default\"](dropdownChild).removeClass(CLASS_NAME_ACTIVE);\n        }\n\n        if (active.getAttribute('role') === 'tab') {\n          active.setAttribute('aria-selected', false);\n        }\n      }\n\n      $__default[\"default\"](element).addClass(CLASS_NAME_ACTIVE);\n\n      if (element.getAttribute('role') === 'tab') {\n        element.setAttribute('aria-selected', true);\n      }\n\n      Util.reflow(element);\n\n      if (element.classList.contains(CLASS_NAME_FADE$1)) {\n        element.classList.add(CLASS_NAME_SHOW$1);\n      }\n\n      var parent = element.parentNode;\n\n      if (parent && parent.nodeName === 'LI') {\n        parent = parent.parentNode;\n      }\n\n      if (parent && $__default[\"default\"](parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n        var dropdownElement = $__default[\"default\"](element).closest(SELECTOR_DROPDOWN)[0];\n\n        if (dropdownElement) {\n          var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE));\n          $__default[\"default\"](dropdownToggleList).addClass(CLASS_NAME_ACTIVE);\n        }\n\n        element.setAttribute('aria-expanded', true);\n      }\n\n      if (callback) {\n        callback();\n      }\n    } // Static\n    ;\n\n    Tab._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $this = $__default[\"default\"](this);\n        var data = $this.data(DATA_KEY$1);\n\n        if (!data) {\n          data = new Tab(this);\n          $this.data(DATA_KEY$1, 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$1;\n      }\n    }]);\n\n    return Tab;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n    event.preventDefault();\n\n    Tab._jQueryInterface.call($__default[\"default\"](this), 'show');\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$1] = Tab._jQueryInterface;\n  $__default[\"default\"].fn[NAME$1].Constructor = Tab;\n\n  $__default[\"default\"].fn[NAME$1].noConflict = function () {\n    $__default[\"default\"].fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n    return Tab._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME = 'toast';\n  var VERSION = '4.6.1';\n  var DATA_KEY = 'bs.toast';\n  var EVENT_KEY = \".\" + DATA_KEY;\n  var JQUERY_NO_CONFLICT = $__default[\"default\"].fn[NAME];\n  var CLASS_NAME_FADE = 'fade';\n  var CLASS_NAME_HIDE = 'hide';\n  var CLASS_NAME_SHOW = 'show';\n  var CLASS_NAME_SHOWING = 'showing';\n  var EVENT_CLICK_DISMISS = \"click.dismiss\" + EVENT_KEY;\n  var EVENT_HIDE = \"hide\" + EVENT_KEY;\n  var EVENT_HIDDEN = \"hidden\" + EVENT_KEY;\n  var EVENT_SHOW = \"show\" + EVENT_KEY;\n  var EVENT_SHOWN = \"shown\" + EVENT_KEY;\n  var SELECTOR_DATA_DISMISS = '[data-dismiss=\"toast\"]';\n  var Default = {\n    animation: true,\n    autohide: true,\n    delay: 500\n  };\n  var DefaultType = {\n    animation: 'boolean',\n    autohide: 'boolean',\n    delay: 'number'\n  };\n  /**\n   * Class definition\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 = $__default[\"default\"].Event(EVENT_SHOW);\n      $__default[\"default\"](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);\n      }\n\n      var complete = function complete() {\n        _this._element.classList.remove(CLASS_NAME_SHOWING);\n\n        _this._element.classList.add(CLASS_NAME_SHOW);\n\n        $__default[\"default\"](_this._element).trigger(EVENT_SHOWN);\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        $__default[\"default\"](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)) {\n        return;\n      }\n\n      var hideEvent = $__default[\"default\"].Event(EVENT_HIDE);\n      $__default[\"default\"](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)) {\n        this._element.classList.remove(CLASS_NAME_SHOW);\n      }\n\n      $__default[\"default\"](this._element).off(EVENT_CLICK_DISMISS);\n      $__default[\"default\"].removeData(this._element, DATA_KEY);\n      this._element = null;\n      this._config = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default, $__default[\"default\"](this._element).data(), typeof config === 'object' && config ? config : {});\n      Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);\n      return config;\n    };\n\n    _proto._setListeners = function _setListeners() {\n      var _this2 = this;\n\n      $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, 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        $__default[\"default\"](_this3._element).trigger(EVENT_HIDDEN);\n      };\n\n      this._element.classList.remove(CLASS_NAME_SHOW);\n\n      if (this._config.animation) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $__default[\"default\"](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 = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data) {\n          data = new Toast(this, _config);\n          $element.data(DATA_KEY, 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;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default;\n      }\n    }]);\n\n    return Toast;\n  }();\n  /**\n   * jQuery\n   */\n\n\n  $__default[\"default\"].fn[NAME] = Toast._jQueryInterface;\n  $__default[\"default\"].fn[NAME].Constructor = Toast;\n\n  $__default[\"default\"].fn[NAME].noConflict = function () {\n    $__default[\"default\"].fn[NAME] = JQUERY_NO_CONFLICT;\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(function ($) {\r\n  'use strict';\r\n\r\n  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\r\n\r\n  var uriAttrs = [\r\n    'background',\r\n    'cite',\r\n    'href',\r\n    'itemtype',\r\n    'longdesc',\r\n    'poster',\r\n    'src',\r\n    'xlink:href'\r\n  ];\r\n\r\n  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\r\n\r\n  var DefaultWhitelist = {\r\n    // Global attributes allowed on any supplied element below.\r\n    '*': ['class', 'dir', 'id', 'lang', 'role', 'tabindex', 'style', ARIA_ATTRIBUTE_PATTERN],\r\n    a: ['target', 'href', 'title', 'rel'],\r\n    area: [],\r\n    b: [],\r\n    br: [],\r\n    col: [],\r\n    code: [],\r\n    div: [],\r\n    em: [],\r\n    hr: [],\r\n    h1: [],\r\n    h2: [],\r\n    h3: [],\r\n    h4: [],\r\n    h5: [],\r\n    h6: [],\r\n    i: [],\r\n    img: ['src', 'alt', 'title', 'width', 'height'],\r\n    li: [],\r\n    ol: [],\r\n    p: [],\r\n    pre: [],\r\n    s: [],\r\n    small: [],\r\n    span: [],\r\n    sub: [],\r\n    sup: [],\r\n    strong: [],\r\n    u: [],\r\n    ul: []\r\n  }\r\n\r\n  /**\r\n   * A pattern that recognizes a commonly useful subset of URLs that are safe.\r\n   *\r\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\r\n   */\r\n  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;\r\n\r\n  /**\r\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\r\n   *\r\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\r\n   */\r\n  var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;\r\n\r\n  function allowedAttribute (attr, allowedAttributeList) {\r\n    var attrName = attr.nodeName.toLowerCase()\r\n\r\n    if ($.inArray(attrName, allowedAttributeList) !== -1) {\r\n      if ($.inArray(attrName, uriAttrs) !== -1) {\r\n        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\r\n      }\r\n\r\n      return true\r\n    }\r\n\r\n    var regExp = $(allowedAttributeList).filter(function (index, value) {\r\n      return value instanceof RegExp\r\n    })\r\n\r\n    // Check if a regular expression validates the attribute.\r\n    for (var i = 0, l = regExp.length; i < l; i++) {\r\n      if (attrName.match(regExp[i])) {\r\n        return true\r\n      }\r\n    }\r\n\r\n    return false\r\n  }\r\n\r\n  function sanitizeHtml (unsafeElements, whiteList, sanitizeFn) {\r\n    if (sanitizeFn && typeof sanitizeFn === 'function') {\r\n      return sanitizeFn(unsafeElements);\r\n    }\r\n\r\n    var whitelistKeys = Object.keys(whiteList);\r\n\r\n    for (var i = 0, len = unsafeElements.length; i < len; i++) {\r\n      var elements = unsafeElements[i].querySelectorAll('*');\r\n\r\n      for (var j = 0, len2 = elements.length; j < len2; j++) {\r\n        var el = elements[j];\r\n        var elName = el.nodeName.toLowerCase();\r\n\r\n        if (whitelistKeys.indexOf(elName) === -1) {\r\n          el.parentNode.removeChild(el);\r\n\r\n          continue;\r\n        }\r\n\r\n        var attributeList = [].slice.call(el.attributes);\r\n        var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\r\n\r\n        for (var k = 0, len3 = attributeList.length; k < len3; k++) {\r\n          var attr = attributeList[k];\r\n\r\n          if (!allowedAttribute(attr, whitelistedAttributes)) {\r\n            el.removeAttribute(attr.nodeName);\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  // Polyfill for browsers with no classList support\r\n  // Remove in v2\r\n  if (!('classList' in document.createElement('_'))) {\r\n    (function (view) {\r\n      if (!('Element' in view)) return;\r\n\r\n      var classListProp = 'classList',\r\n          protoProp = 'prototype',\r\n          elemCtrProto = view.Element[protoProp],\r\n          objCtr = Object,\r\n          classListGetter = function () {\r\n            var $elem = $(this);\r\n\r\n            return {\r\n              add: function (classes) {\r\n                classes = Array.prototype.slice.call(arguments).join(' ');\r\n                return $elem.addClass(classes);\r\n              },\r\n              remove: function (classes) {\r\n                classes = Array.prototype.slice.call(arguments).join(' ');\r\n                return $elem.removeClass(classes);\r\n              },\r\n              toggle: function (classes, force) {\r\n                return $elem.toggleClass(classes, force);\r\n              },\r\n              contains: function (classes) {\r\n                return $elem.hasClass(classes);\r\n              }\r\n            }\r\n          };\r\n\r\n      if (objCtr.defineProperty) {\r\n        var classListPropDesc = {\r\n          get: classListGetter,\r\n          enumerable: true,\r\n          configurable: true\r\n        };\r\n        try {\r\n          objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\r\n        } catch (ex) { // IE 8 doesn't support enumerable:true\r\n          // adding undefined to fight this issue https://github.com/eligrey/classList.js/issues/36\r\n          // modernie IE8-MSW7 machine has IE8 8.0.6001.18702 and is affected\r\n          if (ex.number === undefined || ex.number === -0x7FF5EC54) {\r\n            classListPropDesc.enumerable = false;\r\n            objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\r\n          }\r\n        }\r\n      } else if (objCtr[protoProp].__defineGetter__) {\r\n        elemCtrProto.__defineGetter__(classListProp, classListGetter);\r\n      }\r\n    }(window));\r\n  }\r\n\r\n  var testElement = document.createElement('_');\r\n\r\n  testElement.classList.add('c1', 'c2');\r\n\r\n  if (!testElement.classList.contains('c2')) {\r\n    var _add = DOMTokenList.prototype.add,\r\n        _remove = DOMTokenList.prototype.remove;\r\n\r\n    DOMTokenList.prototype.add = function () {\r\n      Array.prototype.forEach.call(arguments, _add.bind(this));\r\n    }\r\n\r\n    DOMTokenList.prototype.remove = function () {\r\n      Array.prototype.forEach.call(arguments, _remove.bind(this));\r\n    }\r\n  }\r\n\r\n  testElement.classList.toggle('c3', false);\r\n\r\n  // Polyfill for IE 10 and Firefox <24, where classList.toggle does not\r\n  // support the second argument.\r\n  if (testElement.classList.contains('c3')) {\r\n    var _toggle = DOMTokenList.prototype.toggle;\r\n\r\n    DOMTokenList.prototype.toggle = function (token, force) {\r\n      if (1 in arguments && !this.contains(token) === !force) {\r\n        return force;\r\n      } else {\r\n        return _toggle.call(this, token);\r\n      }\r\n    };\r\n  }\r\n\r\n  testElement = null;\r\n\r\n  // shallow array comparison\r\n  function isEqual (array1, array2) {\r\n    return array1.length === array2.length && array1.every(function (element, index) {\r\n      return element === array2[index];\r\n    });\r\n  };\r\n\r\n  // <editor-fold desc=\"Shims\">\r\n  if (!String.prototype.startsWith) {\r\n    (function () {\r\n      'use strict'; // needed to support `apply`/`call` with `undefined`/`null`\r\n      var defineProperty = (function () {\r\n        // IE 8 only supports `Object.defineProperty` on DOM elements\r\n        try {\r\n          var object = {};\r\n          var $defineProperty = Object.defineProperty;\r\n          var result = $defineProperty(object, object, object) && $defineProperty;\r\n        } catch (error) {\r\n        }\r\n        return result;\r\n      }());\r\n      var toString = {}.toString;\r\n      var startsWith = function (search) {\r\n        if (this == null) {\r\n          throw new TypeError();\r\n        }\r\n        var string = String(this);\r\n        if (search && toString.call(search) == '[object RegExp]') {\r\n          throw new TypeError();\r\n        }\r\n        var stringLength = string.length;\r\n        var searchString = String(search);\r\n        var searchLength = searchString.length;\r\n        var position = arguments.length > 1 ? arguments[1] : undefined;\r\n        // `ToInteger`\r\n        var pos = position ? Number(position) : 0;\r\n        if (pos != pos) { // better `isNaN`\r\n          pos = 0;\r\n        }\r\n        var start = Math.min(Math.max(pos, 0), stringLength);\r\n        // Avoid the `indexOf` call if no match is possible\r\n        if (searchLength + start > stringLength) {\r\n          return false;\r\n        }\r\n        var index = -1;\r\n        while (++index < searchLength) {\r\n          if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {\r\n            return false;\r\n          }\r\n        }\r\n        return true;\r\n      };\r\n      if (defineProperty) {\r\n        defineProperty(String.prototype, 'startsWith', {\r\n          'value': startsWith,\r\n          'configurable': true,\r\n          'writable': true\r\n        });\r\n      } else {\r\n        String.prototype.startsWith = startsWith;\r\n      }\r\n    }());\r\n  }\r\n\r\n  if (!Object.keys) {\r\n    Object.keys = function (\r\n      o, // object\r\n      k, // key\r\n      r  // result array\r\n    ) {\r\n      // initialize object and result\r\n      r = [];\r\n      // iterate over object keys\r\n      for (k in o) {\r\n        // fill result array with non-prototypical keys\r\n        r.hasOwnProperty.call(o, k) && r.push(k);\r\n      }\r\n      // return result\r\n      return r;\r\n    };\r\n  }\r\n\r\n  if (HTMLSelectElement && !HTMLSelectElement.prototype.hasOwnProperty('selectedOptions')) {\r\n    Object.defineProperty(HTMLSelectElement.prototype, 'selectedOptions', {\r\n      get: function () {\r\n        return this.querySelectorAll(':checked');\r\n      }\r\n    });\r\n  }\r\n\r\n  function getSelectedOptions (select, ignoreDisabled) {\r\n    var selectedOptions = select.selectedOptions,\r\n        options = [],\r\n        opt;\r\n\r\n    if (ignoreDisabled) {\r\n      for (var i = 0, len = selectedOptions.length; i < len; i++) {\r\n        opt = selectedOptions[i];\r\n\r\n        if (!(opt.disabled || opt.parentNode.tagName === 'OPTGROUP' && opt.parentNode.disabled)) {\r\n          options.push(opt);\r\n        }\r\n      }\r\n\r\n      return options;\r\n    }\r\n\r\n    return selectedOptions;\r\n  }\r\n\r\n  // much faster than $.val()\r\n  function getSelectValues (select, selectedOptions) {\r\n    var value = [],\r\n        options = selectedOptions || select.selectedOptions,\r\n        opt;\r\n\r\n    for (var i = 0, len = options.length; i < len; i++) {\r\n      opt = options[i];\r\n\r\n      if (!(opt.disabled || opt.parentNode.tagName === 'OPTGROUP' && opt.parentNode.disabled)) {\r\n        value.push(opt.value);\r\n      }\r\n    }\r\n\r\n    if (!select.multiple) {\r\n      return !value.length ? null : value[0];\r\n    }\r\n\r\n    return value;\r\n  }\r\n\r\n  // set data-selected on select element if the value has been programmatically selected\r\n  // prior to initialization of bootstrap-select\r\n  // * consider removing or replacing an alternative method *\r\n  var valHooks = {\r\n    useDefault: false,\r\n    _set: $.valHooks.select.set\r\n  };\r\n\r\n  $.valHooks.select.set = function (elem, value) {\r\n    if (value && !valHooks.useDefault) $(elem).data('selected', true);\r\n\r\n    return valHooks._set.apply(this, arguments);\r\n  };\r\n\r\n  var changedArguments = null;\r\n\r\n  var EventIsSupported = (function () {\r\n    try {\r\n      new Event('change');\r\n      return true;\r\n    } catch (e) {\r\n      return false;\r\n    }\r\n  })();\r\n\r\n  $.fn.triggerNative = function (eventName) {\r\n    var el = this[0],\r\n        event;\r\n\r\n    if (el.dispatchEvent) { // for modern browsers & IE9+\r\n      if (EventIsSupported) {\r\n        // For modern browsers\r\n        event = new Event(eventName, {\r\n          bubbles: true\r\n        });\r\n      } else {\r\n        // For IE since it doesn't support Event constructor\r\n        event = document.createEvent('Event');\r\n        event.initEvent(eventName, true, false);\r\n      }\r\n\r\n      el.dispatchEvent(event);\r\n    } else if (el.fireEvent) { // for IE8\r\n      event = document.createEventObject();\r\n      event.eventType = eventName;\r\n      el.fireEvent('on' + eventName, event);\r\n    } else {\r\n      // fall back to jQuery.trigger\r\n      this.trigger(eventName);\r\n    }\r\n  };\r\n  // </editor-fold>\r\n\r\n  function stringSearch (li, searchString, method, normalize) {\r\n    var stringTypes = [\r\n          'display',\r\n          'subtext',\r\n          'tokens'\r\n        ],\r\n        searchSuccess = false;\r\n\r\n    for (var i = 0; i < stringTypes.length; i++) {\r\n      var stringType = stringTypes[i],\r\n          string = li[stringType];\r\n\r\n      if (string) {\r\n        string = string.toString();\r\n\r\n        // Strip HTML tags. This isn't perfect, but it's much faster than any other method\r\n        if (stringType === 'display') {\r\n          string = string.replace(/<[^>]+>/g, '');\r\n        }\r\n\r\n        if (normalize) string = normalizeToBase(string);\r\n        string = string.toUpperCase();\r\n\r\n        if (method === 'contains') {\r\n          searchSuccess = string.indexOf(searchString) >= 0;\r\n        } else {\r\n          searchSuccess = string.startsWith(searchString);\r\n        }\r\n\r\n        if (searchSuccess) break;\r\n      }\r\n    }\r\n\r\n    return searchSuccess;\r\n  }\r\n\r\n  function toInteger (value) {\r\n    return parseInt(value, 10) || 0;\r\n  }\r\n\r\n  // Borrowed from Lodash (_.deburr)\r\n  /** Used to map Latin Unicode letters to basic Latin letters. */\r\n  var deburredLetters = {\r\n    // Latin-1 Supplement block.\r\n    '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\r\n    '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\r\n    '\\xc7': 'C',  '\\xe7': 'c',\r\n    '\\xd0': 'D',  '\\xf0': 'd',\r\n    '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\r\n    '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\r\n    '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\r\n    '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\r\n    '\\xd1': 'N',  '\\xf1': 'n',\r\n    '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\r\n    '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\r\n    '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\r\n    '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\r\n    '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\r\n    '\\xc6': 'Ae', '\\xe6': 'ae',\r\n    '\\xde': 'Th', '\\xfe': 'th',\r\n    '\\xdf': 'ss',\r\n    // Latin Extended-A block.\r\n    '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\r\n    '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\r\n    '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\r\n    '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\r\n    '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\r\n    '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\r\n    '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\r\n    '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\r\n    '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\r\n    '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\r\n    '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\r\n    '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\r\n    '\\u0134': 'J',  '\\u0135': 'j',\r\n    '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\r\n    '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\r\n    '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\r\n    '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\r\n    '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\r\n    '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\r\n    '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\r\n    '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\r\n    '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\r\n    '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\r\n    '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\r\n    '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\r\n    '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\r\n    '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\r\n    '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\r\n    '\\u0174': 'W',  '\\u0175': 'w',\r\n    '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\r\n    '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\r\n    '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\r\n    '\\u0132': 'IJ', '\\u0133': 'ij',\r\n    '\\u0152': 'Oe', '\\u0153': 'oe',\r\n    '\\u0149': \"'n\", '\\u017f': 's'\r\n  };\r\n\r\n  /** Used to match Latin Unicode letters (excluding mathematical operators). */\r\n  var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\r\n\r\n  /** Used to compose unicode character classes. */\r\n  var rsComboMarksRange = '\\\\u0300-\\\\u036f',\r\n      reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\r\n      rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\r\n      rsComboMarksExtendedRange = '\\\\u1ab0-\\\\u1aff',\r\n      rsComboMarksSupplementRange = '\\\\u1dc0-\\\\u1dff',\r\n      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange + rsComboMarksExtendedRange + rsComboMarksSupplementRange;\r\n\r\n  /** Used to compose unicode capture groups. */\r\n  var rsCombo = '[' + rsComboRange + ']';\r\n\r\n  /**\r\n   * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\r\n   * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\r\n   */\r\n  var reComboMark = RegExp(rsCombo, 'g');\r\n\r\n  function deburrLetter (key) {\r\n    return deburredLetters[key];\r\n  };\r\n\r\n  function normalizeToBase (string) {\r\n    string = string.toString();\r\n    return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\r\n  }\r\n\r\n  // List of HTML entities for escaping.\r\n  var escapeMap = {\r\n    '&': '&amp;',\r\n    '<': '&lt;',\r\n    '>': '&gt;',\r\n    '\"': '&quot;',\r\n    \"'\": '&#x27;',\r\n    '`': '&#x60;'\r\n  };\r\n\r\n  // Functions for escaping and unescaping strings to/from HTML interpolation.\r\n  var createEscaper = function (map) {\r\n    var escaper = function (match) {\r\n      return map[match];\r\n    };\r\n    // Regexes for identifying a key that needs to be escaped.\r\n    var source = '(?:' + Object.keys(map).join('|') + ')';\r\n    var testRegexp = RegExp(source);\r\n    var replaceRegexp = RegExp(source, 'g');\r\n    return function (string) {\r\n      string = string == null ? '' : '' + string;\r\n      return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\r\n    };\r\n  };\r\n\r\n  var htmlEscape = createEscaper(escapeMap);\r\n\r\n  /**\r\n   * ------------------------------------------------------------------------\r\n   * Constants\r\n   * ------------------------------------------------------------------------\r\n   */\r\n\r\n  var keyCodeMap = {\r\n    32: ' ',\r\n    48: '0',\r\n    49: '1',\r\n    50: '2',\r\n    51: '3',\r\n    52: '4',\r\n    53: '5',\r\n    54: '6',\r\n    55: '7',\r\n    56: '8',\r\n    57: '9',\r\n    59: ';',\r\n    65: 'A',\r\n    66: 'B',\r\n    67: 'C',\r\n    68: 'D',\r\n    69: 'E',\r\n    70: 'F',\r\n    71: 'G',\r\n    72: 'H',\r\n    73: 'I',\r\n    74: 'J',\r\n    75: 'K',\r\n    76: 'L',\r\n    77: 'M',\r\n    78: 'N',\r\n    79: 'O',\r\n    80: 'P',\r\n    81: 'Q',\r\n    82: 'R',\r\n    83: 'S',\r\n    84: 'T',\r\n    85: 'U',\r\n    86: 'V',\r\n    87: 'W',\r\n    88: 'X',\r\n    89: 'Y',\r\n    90: 'Z',\r\n    96: '0',\r\n    97: '1',\r\n    98: '2',\r\n    99: '3',\r\n    100: '4',\r\n    101: '5',\r\n    102: '6',\r\n    103: '7',\r\n    104: '8',\r\n    105: '9'\r\n  };\r\n\r\n  var keyCodes = {\r\n    ESCAPE: 27, // KeyboardEvent.which value for Escape (Esc) key\r\n    ENTER: 13, // KeyboardEvent.which value for Enter key\r\n    SPACE: 32, // KeyboardEvent.which value for space key\r\n    TAB: 9, // KeyboardEvent.which value for tab key\r\n    ARROW_UP: 38, // KeyboardEvent.which value for up arrow key\r\n    ARROW_DOWN: 40 // KeyboardEvent.which value for down arrow key\r\n  }\r\n\r\n  var version = {\r\n    success: false,\r\n    major: '3'\r\n  };\r\n\r\n  try {\r\n    version.full = ($.fn.dropdown.Constructor.VERSION || '').split(' ')[0].split('.');\r\n    version.major = version.full[0];\r\n    version.success = true;\r\n  } catch (err) {\r\n    // do nothing\r\n  }\r\n\r\n  var selectId = 0;\r\n\r\n  var EVENT_KEY = '.bs.select';\r\n\r\n  var classNames = {\r\n    DISABLED: 'disabled',\r\n    DIVIDER: 'divider',\r\n    SHOW: 'open',\r\n    DROPUP: 'dropup',\r\n    MENU: 'dropdown-menu',\r\n    MENURIGHT: 'dropdown-menu-right',\r\n    MENULEFT: 'dropdown-menu-left',\r\n    // to-do: replace with more advanced template/customization options\r\n    BUTTONCLASS: 'btn-default',\r\n    POPOVERHEADER: 'popover-title',\r\n    ICONBASE: 'glyphicon',\r\n    TICKICON: 'glyphicon-ok'\r\n  }\r\n\r\n  var Selector = {\r\n    MENU: '.' + classNames.MENU\r\n  }\r\n\r\n  var elementTemplates = {\r\n    div: document.createElement('div'),\r\n    span: document.createElement('span'),\r\n    i: document.createElement('i'),\r\n    subtext: document.createElement('small'),\r\n    a: document.createElement('a'),\r\n    li: document.createElement('li'),\r\n    whitespace: document.createTextNode('\\u00A0'),\r\n    fragment: document.createDocumentFragment()\r\n  }\r\n\r\n  elementTemplates.noResults = elementTemplates.li.cloneNode(false);\r\n  elementTemplates.noResults.className = 'no-results';\r\n\r\n  elementTemplates.a.setAttribute('role', 'option');\r\n  elementTemplates.a.className = 'dropdown-item';\r\n\r\n  elementTemplates.subtext.className = 'text-muted';\r\n\r\n  elementTemplates.text = elementTemplates.span.cloneNode(false);\r\n  elementTemplates.text.className = 'text';\r\n\r\n  elementTemplates.checkMark = elementTemplates.span.cloneNode(false);\r\n\r\n  var REGEXP_ARROW = new RegExp(keyCodes.ARROW_UP + '|' + keyCodes.ARROW_DOWN);\r\n  var REGEXP_TAB_OR_ESCAPE = new RegExp('^' + keyCodes.TAB + '$|' + keyCodes.ESCAPE);\r\n\r\n  var generateOption = {\r\n    li: function (content, classes, optgroup) {\r\n      var li = elementTemplates.li.cloneNode(false);\r\n\r\n      if (content) {\r\n        if (content.nodeType === 1 || content.nodeType === 11) {\r\n          li.appendChild(content);\r\n        } else {\r\n          li.innerHTML = content;\r\n        }\r\n      }\r\n\r\n      if (typeof classes !== 'undefined' && classes !== '') li.className = classes;\r\n      if (typeof optgroup !== 'undefined' && optgroup !== null) li.classList.add('optgroup-' + optgroup);\r\n\r\n      return li;\r\n    },\r\n\r\n    a: function (text, classes, inline) {\r\n      var a = elementTemplates.a.cloneNode(true);\r\n\r\n      if (text) {\r\n        if (text.nodeType === 11) {\r\n          a.appendChild(text);\r\n        } else {\r\n          a.insertAdjacentHTML('beforeend', text);\r\n        }\r\n      }\r\n\r\n      if (typeof classes !== 'undefined' && classes !== '') a.classList.add.apply(a.classList, classes.split(/\\s+/));\r\n      if (inline) a.setAttribute('style', inline);\r\n\r\n      return a;\r\n    },\r\n\r\n    text: function (options, useFragment) {\r\n      var textElement = elementTemplates.text.cloneNode(false),\r\n          subtextElement,\r\n          iconElement;\r\n\r\n      if (options.content) {\r\n        textElement.innerHTML = options.content;\r\n      } else {\r\n        textElement.textContent = options.text;\r\n\r\n        if (options.icon) {\r\n          var whitespace = elementTemplates.whitespace.cloneNode(false);\r\n\r\n          // need to use <i> for icons in the button to prevent a breaking change\r\n          // note: switch to span in next major release\r\n          iconElement = (useFragment === true ? elementTemplates.i : elementTemplates.span).cloneNode(false);\r\n          iconElement.className = this.options.iconBase + ' ' + options.icon;\r\n\r\n          elementTemplates.fragment.appendChild(iconElement);\r\n          elementTemplates.fragment.appendChild(whitespace);\r\n        }\r\n\r\n        if (options.subtext) {\r\n          subtextElement = elementTemplates.subtext.cloneNode(false);\r\n          subtextElement.textContent = options.subtext;\r\n          textElement.appendChild(subtextElement);\r\n        }\r\n      }\r\n\r\n      if (useFragment === true) {\r\n        while (textElement.childNodes.length > 0) {\r\n          elementTemplates.fragment.appendChild(textElement.childNodes[0]);\r\n        }\r\n      } else {\r\n        elementTemplates.fragment.appendChild(textElement);\r\n      }\r\n\r\n      return elementTemplates.fragment;\r\n    },\r\n\r\n    label: function (options) {\r\n      var textElement = elementTemplates.text.cloneNode(false),\r\n          subtextElement,\r\n          iconElement;\r\n\r\n      textElement.innerHTML = options.display;\r\n\r\n      if (options.icon) {\r\n        var whitespace = elementTemplates.whitespace.cloneNode(false);\r\n\r\n        iconElement = elementTemplates.span.cloneNode(false);\r\n        iconElement.className = this.options.iconBase + ' ' + options.icon;\r\n\r\n        elementTemplates.fragment.appendChild(iconElement);\r\n        elementTemplates.fragment.appendChild(whitespace);\r\n      }\r\n\r\n      if (options.subtext) {\r\n        subtextElement = elementTemplates.subtext.cloneNode(false);\r\n        subtextElement.textContent = options.subtext;\r\n        textElement.appendChild(subtextElement);\r\n      }\r\n\r\n      elementTemplates.fragment.appendChild(textElement);\r\n\r\n      return elementTemplates.fragment;\r\n    }\r\n  }\r\n\r\n  function showNoResults (searchMatch, searchValue) {\r\n    if (!searchMatch.length) {\r\n      elementTemplates.noResults.innerHTML = this.options.noneResultsText.replace('{0}', '\"' + htmlEscape(searchValue) + '\"');\r\n      this.$menuInner[0].firstChild.appendChild(elementTemplates.noResults);\r\n    }\r\n  }\r\n\r\n  var Selectpicker = function (element, options) {\r\n    var that = this;\r\n\r\n    // bootstrap-select has been initialized - revert valHooks.select.set back to its original function\r\n    if (!valHooks.useDefault) {\r\n      $.valHooks.select.set = valHooks._set;\r\n      valHooks.useDefault = true;\r\n    }\r\n\r\n    this.$element = $(element);\r\n    this.$newElement = null;\r\n    this.$button = null;\r\n    this.$menu = null;\r\n    this.options = options;\r\n    this.selectpicker = {\r\n      main: {},\r\n      search: {},\r\n      current: {}, // current changes if a search is in progress\r\n      view: {},\r\n      isSearching: false,\r\n      keydown: {\r\n        keyHistory: '',\r\n        resetKeyHistory: {\r\n          start: function () {\r\n            return setTimeout(function () {\r\n              that.selectpicker.keydown.keyHistory = '';\r\n            }, 800);\r\n          }\r\n        }\r\n      }\r\n    };\r\n\r\n    this.sizeInfo = {};\r\n\r\n    // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a\r\n    // data-attribute)\r\n    if (this.options.title === null) {\r\n      this.options.title = this.$element.attr('title');\r\n    }\r\n\r\n    // Format window padding\r\n    var winPad = this.options.windowPadding;\r\n    if (typeof winPad === 'number') {\r\n      this.options.windowPadding = [winPad, winPad, winPad, winPad];\r\n    }\r\n\r\n    // Expose public methods\r\n    this.val = Selectpicker.prototype.val;\r\n    this.render = Selectpicker.prototype.render;\r\n    this.refresh = Selectpicker.prototype.refresh;\r\n    this.setStyle = Selectpicker.prototype.setStyle;\r\n    this.selectAll = Selectpicker.prototype.selectAll;\r\n    this.deselectAll = Selectpicker.prototype.deselectAll;\r\n    this.destroy = Selectpicker.prototype.destroy;\r\n    this.remove = Selectpicker.prototype.remove;\r\n    this.show = Selectpicker.prototype.show;\r\n    this.hide = Selectpicker.prototype.hide;\r\n\r\n    this.init();\r\n  };\r\n\r\n  Selectpicker.VERSION = '1.13.18';\r\n\r\n  // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both.\r\n  Selectpicker.DEFAULTS = {\r\n    noneSelectedText: 'Nothing selected',\r\n    noneResultsText: 'No results matched {0}',\r\n    countSelectedText: function (numSelected, numTotal) {\r\n      return (numSelected == 1) ? '{0} item selected' : '{0} items selected';\r\n    },\r\n    maxOptionsText: function (numAll, numGroup) {\r\n      return [\r\n        (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)',\r\n        (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'\r\n      ];\r\n    },\r\n    selectAllText: 'Select All',\r\n    deselectAllText: 'Deselect All',\r\n    doneButton: false,\r\n    doneButtonText: 'Close',\r\n    multipleSeparator: ', ',\r\n    styleBase: 'btn',\r\n    style: classNames.BUTTONCLASS,\r\n    size: 'auto',\r\n    title: null,\r\n    selectedTextFormat: 'values',\r\n    width: false,\r\n    container: false,\r\n    hideDisabled: false,\r\n    showSubtext: false,\r\n    showIcon: true,\r\n    showContent: true,\r\n    dropupAuto: true,\r\n    header: false,\r\n    liveSearch: false,\r\n    liveSearchPlaceholder: null,\r\n    liveSearchNormalize: false,\r\n    liveSearchStyle: 'contains',\r\n    actionsBox: false,\r\n    iconBase: classNames.ICONBASE,\r\n    tickIcon: classNames.TICKICON,\r\n    showTick: false,\r\n    template: {\r\n      caret: '<span class=\"caret\"></span>'\r\n    },\r\n    maxOptions: false,\r\n    mobile: false,\r\n    selectOnTab: false,\r\n    dropdownAlignRight: false,\r\n    windowPadding: 0,\r\n    virtualScroll: 600,\r\n    display: false,\r\n    sanitize: true,\r\n    sanitizeFn: null,\r\n    whiteList: DefaultWhitelist\r\n  };\r\n\r\n  Selectpicker.prototype = {\r\n\r\n    constructor: Selectpicker,\r\n\r\n    init: function () {\r\n      var that = this,\r\n          id = this.$element.attr('id'),\r\n          element = this.$element[0],\r\n          form = element.form;\r\n\r\n      selectId++;\r\n      this.selectId = 'bs-select-' + selectId;\r\n\r\n      element.classList.add('bs-select-hidden');\r\n\r\n      this.multiple = this.$element.prop('multiple');\r\n      this.autofocus = this.$element.prop('autofocus');\r\n\r\n      if (element.classList.contains('show-tick')) {\r\n        this.options.showTick = true;\r\n      }\r\n\r\n      this.$newElement = this.createDropdown();\r\n      this.buildData();\r\n      this.$element\r\n        .after(this.$newElement)\r\n        .prependTo(this.$newElement);\r\n\r\n      // ensure select is associated with form element if it got unlinked after moving it inside newElement\r\n      if (form && element.form === null) {\r\n        if (!form.id) form.id = 'form-' + this.selectId;\r\n        element.setAttribute('form', form.id);\r\n      }\r\n\r\n      this.$button = this.$newElement.children('button');\r\n      this.$menu = this.$newElement.children(Selector.MENU);\r\n      this.$menuInner = this.$menu.children('.inner');\r\n      this.$searchbox = this.$menu.find('input');\r\n\r\n      element.classList.remove('bs-select-hidden');\r\n\r\n      if (this.options.dropdownAlignRight === true) this.$menu[0].classList.add(classNames.MENURIGHT);\r\n\r\n      if (typeof id !== 'undefined') {\r\n        this.$button.attr('data-id', id);\r\n      }\r\n\r\n      this.checkDisabled();\r\n      this.clickListener();\r\n\r\n      if (this.options.liveSearch) {\r\n        this.liveSearchListener();\r\n        this.focusedParent = this.$searchbox[0];\r\n      } else {\r\n        this.focusedParent = this.$menuInner[0];\r\n      }\r\n\r\n      this.setStyle();\r\n      this.render();\r\n      this.setWidth();\r\n      if (this.options.container) {\r\n        this.selectPosition();\r\n      } else {\r\n        this.$element.on('hide' + EVENT_KEY, function () {\r\n          if (that.isVirtual()) {\r\n            // empty menu on close\r\n            var menuInner = that.$menuInner[0],\r\n                emptyMenu = menuInner.firstChild.cloneNode(false);\r\n\r\n            // replace the existing UL with an empty one - this is faster than $.empty() or innerHTML = ''\r\n            menuInner.replaceChild(emptyMenu, menuInner.firstChild);\r\n            menuInner.scrollTop = 0;\r\n          }\r\n        });\r\n      }\r\n      this.$menu.data('this', this);\r\n      this.$newElement.data('this', this);\r\n      if (this.options.mobile) this.mobile();\r\n\r\n      this.$newElement.on({\r\n        'hide.bs.dropdown': function (e) {\r\n          that.$element.trigger('hide' + EVENT_KEY, e);\r\n        },\r\n        'hidden.bs.dropdown': function (e) {\r\n          that.$element.trigger('hidden' + EVENT_KEY, e);\r\n        },\r\n        'show.bs.dropdown': function (e) {\r\n          that.$element.trigger('show' + EVENT_KEY, e);\r\n        },\r\n        'shown.bs.dropdown': function (e) {\r\n          that.$element.trigger('shown' + EVENT_KEY, e);\r\n        }\r\n      });\r\n\r\n      if (element.hasAttribute('required')) {\r\n        this.$element.on('invalid' + EVENT_KEY, function () {\r\n          that.$button[0].classList.add('bs-invalid');\r\n\r\n          that.$element\r\n            .on('shown' + EVENT_KEY + '.invalid', function () {\r\n              that.$element\r\n                .val(that.$element.val()) // set the value to hide the validation message in Chrome when menu is opened\r\n                .off('shown' + EVENT_KEY + '.invalid');\r\n            })\r\n            .on('rendered' + EVENT_KEY, function () {\r\n              // if select is no longer invalid, remove the bs-invalid class\r\n              if (this.validity.valid) that.$button[0].classList.remove('bs-invalid');\r\n              that.$element.off('rendered' + EVENT_KEY);\r\n            });\r\n\r\n          that.$button.on('blur' + EVENT_KEY, function () {\r\n            that.$element.trigger('focus').trigger('blur');\r\n            that.$button.off('blur' + EVENT_KEY);\r\n          });\r\n        });\r\n      }\r\n\r\n      setTimeout(function () {\r\n        that.buildList();\r\n        that.$element.trigger('loaded' + EVENT_KEY);\r\n      });\r\n    },\r\n\r\n    createDropdown: function () {\r\n      // Options\r\n      // If we are multiple or showTick option is set, then add the show-tick class\r\n      var showTick = (this.multiple || this.options.showTick) ? ' show-tick' : '',\r\n          multiselectable = this.multiple ? ' aria-multiselectable=\"true\"' : '',\r\n          inputGroup = '',\r\n          autofocus = this.autofocus ? ' autofocus' : '';\r\n\r\n      if (version.major < 4 && this.$element.parent().hasClass('input-group')) {\r\n        inputGroup = ' input-group-btn';\r\n      }\r\n\r\n      // Elements\r\n      var drop,\r\n          header = '',\r\n          searchbox = '',\r\n          actionsbox = '',\r\n          donebutton = '';\r\n\r\n      if (this.options.header) {\r\n        header =\r\n          '<div class=\"' + classNames.POPOVERHEADER + '\">' +\r\n            '<button type=\"button\" class=\"close\" aria-hidden=\"true\">&times;</button>' +\r\n              this.options.header +\r\n          '</div>';\r\n      }\r\n\r\n      if (this.options.liveSearch) {\r\n        searchbox =\r\n          '<div class=\"bs-searchbox\">' +\r\n            '<input type=\"search\" class=\"form-control\" autocomplete=\"off\"' +\r\n              (\r\n                this.options.liveSearchPlaceholder === null ? ''\r\n                :\r\n                ' placeholder=\"' + htmlEscape(this.options.liveSearchPlaceholder) + '\"'\r\n              ) +\r\n              ' role=\"combobox\" aria-label=\"Search\" aria-controls=\"' + this.selectId + '\" aria-autocomplete=\"list\">' +\r\n          '</div>';\r\n      }\r\n\r\n      if (this.multiple && this.options.actionsBox) {\r\n        actionsbox =\r\n          '<div class=\"bs-actionsbox\">' +\r\n            '<div class=\"btn-group btn-group-sm btn-block\">' +\r\n              '<button type=\"button\" class=\"actions-btn bs-select-all btn ' + classNames.BUTTONCLASS + '\">' +\r\n                this.options.selectAllText +\r\n              '</button>' +\r\n              '<button type=\"button\" class=\"actions-btn bs-deselect-all btn ' + classNames.BUTTONCLASS + '\">' +\r\n                this.options.deselectAllText +\r\n              '</button>' +\r\n            '</div>' +\r\n          '</div>';\r\n      }\r\n\r\n      if (this.multiple && this.options.doneButton) {\r\n        donebutton =\r\n          '<div class=\"bs-donebutton\">' +\r\n            '<div class=\"btn-group btn-block\">' +\r\n              '<button type=\"button\" class=\"btn btn-sm ' + classNames.BUTTONCLASS + '\">' +\r\n                this.options.doneButtonText +\r\n              '</button>' +\r\n            '</div>' +\r\n          '</div>';\r\n      }\r\n\r\n      drop =\r\n        '<div class=\"dropdown bootstrap-select' + showTick + inputGroup + '\">' +\r\n          '<button type=\"button\" tabindex=\"-1\" class=\"' + this.options.styleBase + ' dropdown-toggle\" ' + (this.options.display === 'static' ? 'data-display=\"static\"' : '') + 'data-toggle=\"dropdown\"' + autofocus + ' role=\"combobox\" aria-owns=\"' + this.selectId + '\" aria-haspopup=\"listbox\" aria-expanded=\"false\">' +\r\n            '<div class=\"filter-option\">' +\r\n              '<div class=\"filter-option-inner\">' +\r\n                '<div class=\"filter-option-inner-inner\"></div>' +\r\n              '</div> ' +\r\n            '</div>' +\r\n            (\r\n              version.major === '4' ? ''\r\n              :\r\n              '<span class=\"bs-caret\">' +\r\n                this.options.template.caret +\r\n              '</span>'\r\n            ) +\r\n          '</button>' +\r\n          '<div class=\"' + classNames.MENU + ' ' + (version.major === '4' ? '' : classNames.SHOW) + '\">' +\r\n            header +\r\n            searchbox +\r\n            actionsbox +\r\n            '<div class=\"inner ' + classNames.SHOW + '\" role=\"listbox\" id=\"' + this.selectId + '\" tabindex=\"-1\" ' + multiselectable + '>' +\r\n                '<ul class=\"' + classNames.MENU + ' inner ' + (version.major === '4' ? classNames.SHOW : '') + '\" role=\"presentation\">' +\r\n                '</ul>' +\r\n            '</div>' +\r\n            donebutton +\r\n          '</div>' +\r\n        '</div>';\r\n\r\n      return $(drop);\r\n    },\r\n\r\n    setPositionData: function () {\r\n      this.selectpicker.view.canHighlight = [];\r\n      this.selectpicker.view.size = 0;\r\n      this.selectpicker.view.firstHighlightIndex = false;\r\n\r\n      for (var i = 0; i < this.selectpicker.current.data.length; i++) {\r\n        var li = this.selectpicker.current.data[i],\r\n            canHighlight = true;\r\n\r\n        if (li.type === 'divider') {\r\n          canHighlight = false;\r\n          li.height = this.sizeInfo.dividerHeight;\r\n        } else if (li.type === 'optgroup-label') {\r\n          canHighlight = false;\r\n          li.height = this.sizeInfo.dropdownHeaderHeight;\r\n        } else {\r\n          li.height = this.sizeInfo.liHeight;\r\n        }\r\n\r\n        if (li.disabled) canHighlight = false;\r\n\r\n        this.selectpicker.view.canHighlight.push(canHighlight);\r\n\r\n        if (canHighlight) {\r\n          this.selectpicker.view.size++;\r\n          li.posinset = this.selectpicker.view.size;\r\n          if (this.selectpicker.view.firstHighlightIndex === false) this.selectpicker.view.firstHighlightIndex = i;\r\n        }\r\n\r\n        li.position = (i === 0 ? 0 : this.selectpicker.current.data[i - 1].position) + li.height;\r\n      }\r\n    },\r\n\r\n    isVirtual: function () {\r\n      return (this.options.virtualScroll !== false) && (this.selectpicker.main.elements.length >= this.options.virtualScroll) || this.options.virtualScroll === true;\r\n    },\r\n\r\n    createView: function (isSearching, setSize, refresh) {\r\n      var that = this,\r\n          scrollTop = 0,\r\n          active = [],\r\n          selected,\r\n          prevActive;\r\n\r\n      this.selectpicker.isSearching = isSearching;\r\n      this.selectpicker.current = isSearching ? this.selectpicker.search : this.selectpicker.main;\r\n\r\n      this.setPositionData();\r\n\r\n      if (setSize) {\r\n        if (refresh) {\r\n          scrollTop = this.$menuInner[0].scrollTop;\r\n        } else if (!that.multiple) {\r\n          var element = that.$element[0],\r\n              selectedIndex = (element.options[element.selectedIndex] || {}).liIndex;\r\n\r\n          if (typeof selectedIndex === 'number' && that.options.size !== false) {\r\n            var selectedData = that.selectpicker.main.data[selectedIndex],\r\n                position = selectedData && selectedData.position;\r\n\r\n            if (position) {\r\n              scrollTop = position - ((that.sizeInfo.menuInnerHeight + that.sizeInfo.liHeight) / 2);\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n      scroll(scrollTop, true);\r\n\r\n      this.$menuInner.off('scroll.createView').on('scroll.createView', function (e, updateValue) {\r\n        if (!that.noScroll) scroll(this.scrollTop, updateValue);\r\n        that.noScroll = false;\r\n      });\r\n\r\n      function scroll (scrollTop, init) {\r\n        var size = that.selectpicker.current.elements.length,\r\n            chunks = [],\r\n            chunkSize,\r\n            chunkCount,\r\n            firstChunk,\r\n            lastChunk,\r\n            currentChunk,\r\n            prevPositions,\r\n            positionIsDifferent,\r\n            previousElements,\r\n            menuIsDifferent = true,\r\n            isVirtual = that.isVirtual();\r\n\r\n        that.selectpicker.view.scrollTop = scrollTop;\r\n\r\n        chunkSize = Math.ceil(that.sizeInfo.menuInnerHeight / that.sizeInfo.liHeight * 1.5); // number of options in a chunk\r\n        chunkCount = Math.round(size / chunkSize) || 1; // number of chunks\r\n\r\n        for (var i = 0; i < chunkCount; i++) {\r\n          var endOfChunk = (i + 1) * chunkSize;\r\n\r\n          if (i === chunkCount - 1) {\r\n            endOfChunk = size;\r\n          }\r\n\r\n          chunks[i] = [\r\n            (i) * chunkSize + (!i ? 0 : 1),\r\n            endOfChunk\r\n          ];\r\n\r\n          if (!size) break;\r\n\r\n          if (currentChunk === undefined && scrollTop - 1 <= that.selectpicker.current.data[endOfChunk - 1].position - that.sizeInfo.menuInnerHeight) {\r\n            currentChunk = i;\r\n          }\r\n        }\r\n\r\n        if (currentChunk === undefined) currentChunk = 0;\r\n\r\n        prevPositions = [that.selectpicker.view.position0, that.selectpicker.view.position1];\r\n\r\n        // always display previous, current, and next chunks\r\n        firstChunk = Math.max(0, currentChunk - 1);\r\n        lastChunk = Math.min(chunkCount - 1, currentChunk + 1);\r\n\r\n        that.selectpicker.view.position0 = isVirtual === false ? 0 : (Math.max(0, chunks[firstChunk][0]) || 0);\r\n        that.selectpicker.view.position1 = isVirtual === false ? size : (Math.min(size, chunks[lastChunk][1]) || 0);\r\n\r\n        positionIsDifferent = prevPositions[0] !== that.selectpicker.view.position0 || prevPositions[1] !== that.selectpicker.view.position1;\r\n\r\n        if (that.activeIndex !== undefined) {\r\n          prevActive = that.selectpicker.main.elements[that.prevActiveIndex];\r\n          active = that.selectpicker.main.elements[that.activeIndex];\r\n          selected = that.selectpicker.main.elements[that.selectedIndex];\r\n\r\n          if (init) {\r\n            if (that.activeIndex !== that.selectedIndex) {\r\n              that.defocusItem(active);\r\n            }\r\n            that.activeIndex = undefined;\r\n          }\r\n\r\n          if (that.activeIndex && that.activeIndex !== that.selectedIndex) {\r\n            that.defocusItem(selected);\r\n          }\r\n        }\r\n\r\n        if (that.prevActiveIndex !== undefined && that.prevActiveIndex !== that.activeIndex && that.prevActiveIndex !== that.selectedIndex) {\r\n          that.defocusItem(prevActive);\r\n        }\r\n\r\n        if (init || positionIsDifferent) {\r\n          previousElements = that.selectpicker.view.visibleElements ? that.selectpicker.view.visibleElements.slice() : [];\r\n\r\n          if (isVirtual === false) {\r\n            that.selectpicker.view.visibleElements = that.selectpicker.current.elements;\r\n          } else {\r\n            that.selectpicker.view.visibleElements = that.selectpicker.current.elements.slice(that.selectpicker.view.position0, that.selectpicker.view.position1);\r\n          }\r\n\r\n          that.setOptionStatus();\r\n\r\n          // if searching, check to make sure the list has actually been updated before updating DOM\r\n          // this prevents unnecessary repaints\r\n          if (isSearching || (isVirtual === false && init)) menuIsDifferent = !isEqual(previousElements, that.selectpicker.view.visibleElements);\r\n\r\n          // if virtual scroll is disabled and not searching,\r\n          // menu should never need to be updated more than once\r\n          if ((init || isVirtual === true) && menuIsDifferent) {\r\n            var menuInner = that.$menuInner[0],\r\n                menuFragment = document.createDocumentFragment(),\r\n                emptyMenu = menuInner.firstChild.cloneNode(false),\r\n                marginTop,\r\n                marginBottom,\r\n                elements = that.selectpicker.view.visibleElements,\r\n                toSanitize = [];\r\n\r\n            // replace the existing UL with an empty one - this is faster than $.empty()\r\n            menuInner.replaceChild(emptyMenu, menuInner.firstChild);\r\n\r\n            for (var i = 0, visibleElementsLen = elements.length; i < visibleElementsLen; i++) {\r\n              var element = elements[i],\r\n                  elText,\r\n                  elementData;\r\n\r\n              if (that.options.sanitize) {\r\n                elText = element.lastChild;\r\n\r\n                if (elText) {\r\n                  elementData = that.selectpicker.current.data[i + that.selectpicker.view.position0];\r\n\r\n                  if (elementData && elementData.content && !elementData.sanitized) {\r\n                    toSanitize.push(elText);\r\n                    elementData.sanitized = true;\r\n                  }\r\n                }\r\n              }\r\n\r\n              menuFragment.appendChild(element);\r\n            }\r\n\r\n            if (that.options.sanitize && toSanitize.length) {\r\n              sanitizeHtml(toSanitize, that.options.whiteList, that.options.sanitizeFn);\r\n            }\r\n\r\n            if (isVirtual === true) {\r\n              marginTop = (that.selectpicker.view.position0 === 0 ? 0 : that.selectpicker.current.data[that.selectpicker.view.position0 - 1].position);\r\n              marginBottom = (that.selectpicker.view.position1 > size - 1 ? 0 : that.selectpicker.current.data[size - 1].position - that.selectpicker.current.data[that.selectpicker.view.position1 - 1].position);\r\n\r\n              menuInner.firstChild.style.marginTop = marginTop + 'px';\r\n              menuInner.firstChild.style.marginBottom = marginBottom + 'px';\r\n            } else {\r\n              menuInner.firstChild.style.marginTop = 0;\r\n              menuInner.firstChild.style.marginBottom = 0;\r\n            }\r\n\r\n            menuInner.firstChild.appendChild(menuFragment);\r\n\r\n            // if an option is encountered that is wider than the current menu width, update the menu width accordingly\r\n            // switch to ResizeObserver with increased browser support\r\n            if (isVirtual === true && that.sizeInfo.hasScrollBar) {\r\n              var menuInnerInnerWidth = menuInner.firstChild.offsetWidth;\r\n\r\n              if (init && menuInnerInnerWidth < that.sizeInfo.menuInnerInnerWidth && that.sizeInfo.totalMenuWidth > that.sizeInfo.selectWidth) {\r\n                menuInner.firstChild.style.minWidth = that.sizeInfo.menuInnerInnerWidth + 'px';\r\n              } else if (menuInnerInnerWidth > that.sizeInfo.menuInnerInnerWidth) {\r\n                // set to 0 to get actual width of menu\r\n                that.$menu[0].style.minWidth = 0;\r\n\r\n                var actualMenuWidth = menuInner.firstChild.offsetWidth;\r\n\r\n                if (actualMenuWidth > that.sizeInfo.menuInnerInnerWidth) {\r\n                  that.sizeInfo.menuInnerInnerWidth = actualMenuWidth;\r\n                  menuInner.firstChild.style.minWidth = that.sizeInfo.menuInnerInnerWidth + 'px';\r\n                }\r\n\r\n                // reset to default CSS styling\r\n                that.$menu[0].style.minWidth = '';\r\n              }\r\n            }\r\n          }\r\n        }\r\n\r\n        that.prevActiveIndex = that.activeIndex;\r\n\r\n        if (!that.options.liveSearch) {\r\n          that.$menuInner.trigger('focus');\r\n        } else if (isSearching && init) {\r\n          var index = 0,\r\n              newActive;\r\n\r\n          if (!that.selectpicker.view.canHighlight[index]) {\r\n            index = 1 + that.selectpicker.view.canHighlight.slice(1).indexOf(true);\r\n          }\r\n\r\n          newActive = that.selectpicker.view.visibleElements[index];\r\n\r\n          that.defocusItem(that.selectpicker.view.currentActive);\r\n\r\n          that.activeIndex = (that.selectpicker.current.data[index] || {}).index;\r\n\r\n          that.focusItem(newActive);\r\n        }\r\n      }\r\n\r\n      $(window)\r\n        .off('resize' + EVENT_KEY + '.' + this.selectId + '.createView')\r\n        .on('resize' + EVENT_KEY + '.' + this.selectId + '.createView', function () {\r\n          var isActive = that.$newElement.hasClass(classNames.SHOW);\r\n\r\n          if (isActive) scroll(that.$menuInner[0].scrollTop);\r\n        });\r\n    },\r\n\r\n    focusItem: function (li, liData, noStyle) {\r\n      if (li) {\r\n        liData = liData || this.selectpicker.main.data[this.activeIndex];\r\n        var a = li.firstChild;\r\n\r\n        if (a) {\r\n          a.setAttribute('aria-setsize', this.selectpicker.view.size);\r\n          a.setAttribute('aria-posinset', liData.posinset);\r\n\r\n          if (noStyle !== true) {\r\n            this.focusedParent.setAttribute('aria-activedescendant', a.id);\r\n            li.classList.add('active');\r\n            a.classList.add('active');\r\n          }\r\n        }\r\n      }\r\n    },\r\n\r\n    defocusItem: function (li) {\r\n      if (li) {\r\n        li.classList.remove('active');\r\n        if (li.firstChild) li.firstChild.classList.remove('active');\r\n      }\r\n    },\r\n\r\n    setPlaceholder: function () {\r\n      var that = this,\r\n          updateIndex = false;\r\n\r\n      if (this.options.title && !this.multiple) {\r\n        if (!this.selectpicker.view.titleOption) this.selectpicker.view.titleOption = document.createElement('option');\r\n\r\n        // this option doesn't create a new <li> element, but does add a new option at the start,\r\n        // so startIndex should increase to prevent having to check every option for the bs-title-option class\r\n        updateIndex = true;\r\n\r\n        var element = this.$element[0],\r\n            selectTitleOption = false,\r\n            titleNotAppended = !this.selectpicker.view.titleOption.parentNode,\r\n            selectedIndex = element.selectedIndex,\r\n            selectedOption = element.options[selectedIndex],\r\n            navigation = window.performance && window.performance.getEntriesByType('navigation'),\r\n            // Safari doesn't support getEntriesByType('navigation') - fall back to performance.navigation\r\n            isNotBackForward = (navigation && navigation.length) ? navigation[0].type !== 'back_forward' : window.performance.navigation.type !== 2;\r\n\r\n        if (titleNotAppended) {\r\n          // Use native JS to prepend option (faster)\r\n          this.selectpicker.view.titleOption.className = 'bs-title-option';\r\n          this.selectpicker.view.titleOption.value = '';\r\n\r\n          // Check if selected or data-selected attribute is already set on an option. If not, select the titleOption option.\r\n          // the selected item may have been changed by user or programmatically before the bootstrap select plugin runs,\r\n          // if so, the select will have the data-selected attribute\r\n          selectTitleOption = !selectedOption || (selectedIndex === 0 && selectedOption.defaultSelected === false && this.$element.data('selected') === undefined);\r\n        }\r\n\r\n        if (titleNotAppended || this.selectpicker.view.titleOption.index !== 0) {\r\n          element.insertBefore(this.selectpicker.view.titleOption, element.firstChild);\r\n        }\r\n\r\n        // Set selected *after* appending to select,\r\n        // otherwise the option doesn't get selected in IE\r\n        // set using selectedIndex, as setting the selected attr to true here doesn't work in IE11\r\n        if (selectTitleOption && isNotBackForward) {\r\n          element.selectedIndex = 0;\r\n        } else if (document.readyState !== 'complete') {\r\n          // if navigation type is back_forward, there's a chance the select will have its value set by BFCache\r\n          // wait for that value to be set, then run render again\r\n          window.addEventListener('pageshow', function () {\r\n            if (that.selectpicker.view.displayedValue !== element.value) that.render();\r\n          });\r\n        }\r\n      }\r\n\r\n      return updateIndex;\r\n    },\r\n\r\n    buildData: function () {\r\n      var optionSelector = ':not([hidden]):not([data-hidden=\"true\"])',\r\n          mainData = [],\r\n          optID = 0,\r\n          startIndex = this.setPlaceholder() ? 1 : 0; // append the titleOption if necessary and skip the first option in the loop\r\n\r\n      if (this.options.hideDisabled) optionSelector += ':not(:disabled)';\r\n\r\n      var selectOptions = this.$element[0].querySelectorAll('select > *' + optionSelector);\r\n\r\n      function addDivider (config) {\r\n        var previousData = mainData[mainData.length - 1];\r\n\r\n        // ensure optgroup doesn't create back-to-back dividers\r\n        if (\r\n          previousData &&\r\n          previousData.type === 'divider' &&\r\n          (previousData.optID || config.optID)\r\n        ) {\r\n          return;\r\n        }\r\n\r\n        config = config || {};\r\n        config.type = 'divider';\r\n\r\n        mainData.push(config);\r\n      }\r\n\r\n      function addOption (option, config) {\r\n        config = config || {};\r\n\r\n        config.divider = option.getAttribute('data-divider') === 'true';\r\n\r\n        if (config.divider) {\r\n          addDivider({\r\n            optID: config.optID\r\n          });\r\n        } else {\r\n          var liIndex = mainData.length,\r\n              cssText = option.style.cssText,\r\n              inlineStyle = cssText ? htmlEscape(cssText) : '',\r\n              optionClass = (option.className || '') + (config.optgroupClass || '');\r\n\r\n          if (config.optID) optionClass = 'opt ' + optionClass;\r\n\r\n          config.optionClass = optionClass.trim();\r\n          config.inlineStyle = inlineStyle;\r\n          config.text = option.textContent;\r\n\r\n          config.content = option.getAttribute('data-content');\r\n          config.tokens = option.getAttribute('data-tokens');\r\n          config.subtext = option.getAttribute('data-subtext');\r\n          config.icon = option.getAttribute('data-icon');\r\n\r\n          option.liIndex = liIndex;\r\n\r\n          config.display = config.content || config.text;\r\n          config.type = 'option';\r\n          config.index = liIndex;\r\n          config.option = option;\r\n          config.selected = !!option.selected;\r\n          config.disabled = config.disabled || !!option.disabled;\r\n\r\n          mainData.push(config);\r\n        }\r\n      }\r\n\r\n      function addOptgroup (index, selectOptions) {\r\n        var optgroup = selectOptions[index],\r\n            // skip placeholder option\r\n            previous = index - 1 < startIndex ? false : selectOptions[index - 1],\r\n            next = selectOptions[index + 1],\r\n            options = optgroup.querySelectorAll('option' + optionSelector);\r\n\r\n        if (!options.length) return;\r\n\r\n        var config = {\r\n              display: htmlEscape(optgroup.label),\r\n              subtext: optgroup.getAttribute('data-subtext'),\r\n              icon: optgroup.getAttribute('data-icon'),\r\n              type: 'optgroup-label',\r\n              optgroupClass: ' ' + (optgroup.className || '')\r\n            },\r\n            headerIndex,\r\n            lastIndex;\r\n\r\n        optID++;\r\n\r\n        if (previous) {\r\n          addDivider({ optID: optID });\r\n        }\r\n\r\n        config.optID = optID;\r\n\r\n        mainData.push(config);\r\n\r\n        for (var j = 0, len = options.length; j < len; j++) {\r\n          var option = options[j];\r\n\r\n          if (j === 0) {\r\n            headerIndex = mainData.length - 1;\r\n            lastIndex = headerIndex + len;\r\n          }\r\n\r\n          addOption(option, {\r\n            headerIndex: headerIndex,\r\n            lastIndex: lastIndex,\r\n            optID: config.optID,\r\n            optgroupClass: config.optgroupClass,\r\n            disabled: optgroup.disabled\r\n          });\r\n        }\r\n\r\n        if (next) {\r\n          addDivider({ optID: optID });\r\n        }\r\n      }\r\n\r\n      for (var len = selectOptions.length, i = startIndex; i < len; i++) {\r\n        var item = selectOptions[i];\r\n\r\n        if (item.tagName !== 'OPTGROUP') {\r\n          addOption(item, {});\r\n        } else {\r\n          addOptgroup(i, selectOptions);\r\n        }\r\n      }\r\n\r\n      this.selectpicker.main.data = this.selectpicker.current.data = mainData;\r\n    },\r\n\r\n    buildList: function () {\r\n      var that = this,\r\n          selectData = this.selectpicker.main.data,\r\n          mainElements = [],\r\n          widestOptionLength = 0;\r\n\r\n      if ((that.options.showTick || that.multiple) && !elementTemplates.checkMark.parentNode) {\r\n        elementTemplates.checkMark.className = this.options.iconBase + ' ' + that.options.tickIcon + ' check-mark';\r\n        elementTemplates.a.appendChild(elementTemplates.checkMark);\r\n      }\r\n\r\n      function buildElement (item) {\r\n        var liElement,\r\n            combinedLength = 0;\r\n\r\n        switch (item.type) {\r\n          case 'divider':\r\n            liElement = generateOption.li(\r\n              false,\r\n              classNames.DIVIDER,\r\n              (item.optID ? item.optID + 'div' : undefined)\r\n            );\r\n\r\n            break;\r\n\r\n          case 'option':\r\n            liElement = generateOption.li(\r\n              generateOption.a(\r\n                generateOption.text.call(that, item),\r\n                item.optionClass,\r\n                item.inlineStyle\r\n              ),\r\n              '',\r\n              item.optID\r\n            );\r\n\r\n            if (liElement.firstChild) {\r\n              liElement.firstChild.id = that.selectId + '-' + item.index;\r\n            }\r\n\r\n            break;\r\n\r\n          case 'optgroup-label':\r\n            liElement = generateOption.li(\r\n              generateOption.label.call(that, item),\r\n              'dropdown-header' + item.optgroupClass,\r\n              item.optID\r\n            );\r\n\r\n            break;\r\n        }\r\n\r\n        item.element = liElement;\r\n        mainElements.push(liElement);\r\n\r\n        // count the number of characters in the option - not perfect, but should work in most cases\r\n        if (item.display) combinedLength += item.display.length;\r\n        if (item.subtext) combinedLength += item.subtext.length;\r\n        // if there is an icon, ensure this option's width is checked\r\n        if (item.icon) combinedLength += 1;\r\n\r\n        if (combinedLength > widestOptionLength) {\r\n          widestOptionLength = combinedLength;\r\n\r\n          // guess which option is the widest\r\n          // use this when calculating menu width\r\n          // not perfect, but it's fast, and the width will be updating accordingly when scrolling\r\n          that.selectpicker.view.widestOption = mainElements[mainElements.length - 1];\r\n        }\r\n      }\r\n\r\n      for (var len = selectData.length, i = 0; i < len; i++) {\r\n        var item = selectData[i];\r\n\r\n        buildElement(item);\r\n      }\r\n\r\n      this.selectpicker.main.elements = this.selectpicker.current.elements = mainElements;\r\n    },\r\n\r\n    findLis: function () {\r\n      return this.$menuInner.find('.inner > li');\r\n    },\r\n\r\n    render: function () {\r\n      var that = this,\r\n          element = this.$element[0],\r\n          // ensure titleOption is appended and selected (if necessary) before getting selectedOptions\r\n          placeholderSelected = this.setPlaceholder() && element.selectedIndex === 0,\r\n          selectedOptions = getSelectedOptions(element, this.options.hideDisabled),\r\n          selectedCount = selectedOptions.length,\r\n          button = this.$button[0],\r\n          buttonInner = button.querySelector('.filter-option-inner-inner'),\r\n          multipleSeparator = document.createTextNode(this.options.multipleSeparator),\r\n          titleFragment = elementTemplates.fragment.cloneNode(false),\r\n          showCount,\r\n          countMax,\r\n          hasContent = false;\r\n\r\n      button.classList.toggle('bs-placeholder', that.multiple ? !selectedCount : !getSelectValues(element, selectedOptions));\r\n\r\n      if (!that.multiple && selectedOptions.length === 1) {\r\n        that.selectpicker.view.displayedValue = getSelectValues(element, selectedOptions);\r\n      }\r\n\r\n      if (this.options.selectedTextFormat === 'static') {\r\n        titleFragment = generateOption.text.call(this, { text: this.options.title }, true);\r\n      } else {\r\n        showCount = this.multiple && this.options.selectedTextFormat.indexOf('count') !== -1 && selectedCount > 1;\r\n\r\n        // determine if the number of selected options will be shown (showCount === true)\r\n        if (showCount) {\r\n          countMax = this.options.selectedTextFormat.split('>');\r\n          showCount = (countMax.length > 1 && selectedCount > countMax[1]) || (countMax.length === 1 && selectedCount >= 2);\r\n        }\r\n\r\n        // only loop through all selected options if the count won't be shown\r\n        if (showCount === false) {\r\n          if (!placeholderSelected) {\r\n            for (var selectedIndex = 0; selectedIndex < selectedCount; selectedIndex++) {\r\n              if (selectedIndex < 50) {\r\n                var option = selectedOptions[selectedIndex],\r\n                    thisData = this.selectpicker.main.data[option.liIndex],\r\n                    titleOptions = {};\r\n\r\n                if (this.multiple && selectedIndex > 0) {\r\n                  titleFragment.appendChild(multipleSeparator.cloneNode(false));\r\n                }\r\n\r\n                if (option.title) {\r\n                  titleOptions.text = option.title;\r\n                } else if (thisData) {\r\n                  if (thisData.content && that.options.showContent) {\r\n                    titleOptions.content = thisData.content.toString();\r\n                    hasContent = true;\r\n                  } else {\r\n                    if (that.options.showIcon) {\r\n                      titleOptions.icon = thisData.icon;\r\n                    }\r\n                    if (that.options.showSubtext && !that.multiple && thisData.subtext) titleOptions.subtext = ' ' + thisData.subtext;\r\n                    titleOptions.text = option.textContent.trim();\r\n                  }\r\n                }\r\n\r\n                titleFragment.appendChild(generateOption.text.call(this, titleOptions, true));\r\n              } else {\r\n                break;\r\n              }\r\n            }\r\n\r\n            // add ellipsis\r\n            if (selectedCount > 49) {\r\n              titleFragment.appendChild(document.createTextNode('...'));\r\n            }\r\n          }\r\n        } else {\r\n          var optionSelector = ':not([hidden]):not([data-hidden=\"true\"]):not([data-divider=\"true\"])';\r\n          if (this.options.hideDisabled) optionSelector += ':not(:disabled)';\r\n\r\n          // If this is a multiselect, and selectedTextFormat is count, then show 1 of 2 selected, etc.\r\n          var totalCount = this.$element[0].querySelectorAll('select > option' + optionSelector + ', optgroup' + optionSelector + ' option' + optionSelector).length,\r\n              tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedCount, totalCount) : this.options.countSelectedText;\r\n\r\n          titleFragment = generateOption.text.call(this, {\r\n            text: tr8nText.replace('{0}', selectedCount.toString()).replace('{1}', totalCount.toString())\r\n          }, true);\r\n        }\r\n      }\r\n\r\n      if (this.options.title == undefined) {\r\n        // use .attr to ensure undefined is returned if title attribute is not set\r\n        this.options.title = this.$element.attr('title');\r\n      }\r\n\r\n      // If the select doesn't have a title, then use the default, or if nothing is set at all, use noneSelectedText\r\n      if (!titleFragment.childNodes.length) {\r\n        titleFragment = generateOption.text.call(this, {\r\n          text: typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText\r\n        }, true);\r\n      }\r\n\r\n      // strip all HTML tags and trim the result, then unescape any escaped tags\r\n      button.title = titleFragment.textContent.replace(/<[^>]*>?/g, '').trim();\r\n\r\n      if (this.options.sanitize && hasContent) {\r\n        sanitizeHtml([titleFragment], that.options.whiteList, that.options.sanitizeFn);\r\n      }\r\n\r\n      buttonInner.innerHTML = '';\r\n      buttonInner.appendChild(titleFragment);\r\n\r\n      if (version.major < 4 && this.$newElement[0].classList.contains('bs3-has-addon')) {\r\n        var filterExpand = button.querySelector('.filter-expand'),\r\n            clone = buttonInner.cloneNode(true);\r\n\r\n        clone.className = 'filter-expand';\r\n\r\n        if (filterExpand) {\r\n          button.replaceChild(clone, filterExpand);\r\n        } else {\r\n          button.appendChild(clone);\r\n        }\r\n      }\r\n\r\n      this.$element.trigger('rendered' + EVENT_KEY);\r\n    },\r\n\r\n    /**\r\n     * @param [style]\r\n     * @param [status]\r\n     */\r\n    setStyle: function (newStyle, status) {\r\n      var button = this.$button[0],\r\n          newElement = this.$newElement[0],\r\n          style = this.options.style.trim(),\r\n          buttonClass;\r\n\r\n      if (this.$element.attr('class')) {\r\n        this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\\[.*\\]/gi, ''));\r\n      }\r\n\r\n      if (version.major < 4) {\r\n        newElement.classList.add('bs3');\r\n\r\n        if (newElement.parentNode.classList && newElement.parentNode.classList.contains('input-group') &&\r\n            (newElement.previousElementSibling || newElement.nextElementSibling) &&\r\n            (newElement.previousElementSibling || newElement.nextElementSibling).classList.contains('input-group-addon')\r\n        ) {\r\n          newElement.classList.add('bs3-has-addon');\r\n        }\r\n      }\r\n\r\n      if (newStyle) {\r\n        buttonClass = newStyle.trim();\r\n      } else {\r\n        buttonClass = style;\r\n      }\r\n\r\n      if (status == 'add') {\r\n        if (buttonClass) button.classList.add.apply(button.classList, buttonClass.split(' '));\r\n      } else if (status == 'remove') {\r\n        if (buttonClass) button.classList.remove.apply(button.classList, buttonClass.split(' '));\r\n      } else {\r\n        if (style) button.classList.remove.apply(button.classList, style.split(' '));\r\n        if (buttonClass) button.classList.add.apply(button.classList, buttonClass.split(' '));\r\n      }\r\n    },\r\n\r\n    liHeight: function (refresh) {\r\n      if (!refresh && (this.options.size === false || Object.keys(this.sizeInfo).length)) return;\r\n\r\n      var newElement = elementTemplates.div.cloneNode(false),\r\n          menu = elementTemplates.div.cloneNode(false),\r\n          menuInner = elementTemplates.div.cloneNode(false),\r\n          menuInnerInner = document.createElement('ul'),\r\n          divider = elementTemplates.li.cloneNode(false),\r\n          dropdownHeader = elementTemplates.li.cloneNode(false),\r\n          li,\r\n          a = elementTemplates.a.cloneNode(false),\r\n          text = elementTemplates.span.cloneNode(false),\r\n          header = this.options.header && this.$menu.find('.' + classNames.POPOVERHEADER).length > 0 ? this.$menu.find('.' + classNames.POPOVERHEADER)[0].cloneNode(true) : null,\r\n          search = this.options.liveSearch ? elementTemplates.div.cloneNode(false) : null,\r\n          actions = this.options.actionsBox && this.multiple && this.$menu.find('.bs-actionsbox').length > 0 ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null,\r\n          doneButton = this.options.doneButton && this.multiple && this.$menu.find('.bs-donebutton').length > 0 ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null,\r\n          firstOption = this.$element.find('option')[0];\r\n\r\n      this.sizeInfo.selectWidth = this.$newElement[0].offsetWidth;\r\n\r\n      text.className = 'text';\r\n      a.className = 'dropdown-item ' + (firstOption ? firstOption.className : '');\r\n      newElement.className = this.$menu[0].parentNode.className + ' ' + classNames.SHOW;\r\n      newElement.style.width = 0; // ensure button width doesn't affect natural width of menu when calculating\r\n      if (this.options.width === 'auto') menu.style.minWidth = 0;\r\n      menu.className = classNames.MENU + ' ' + classNames.SHOW;\r\n      menuInner.className = 'inner ' + classNames.SHOW;\r\n      menuInnerInner.className = classNames.MENU + ' inner ' + (version.major === '4' ? classNames.SHOW : '');\r\n      divider.className = classNames.DIVIDER;\r\n      dropdownHeader.className = 'dropdown-header';\r\n\r\n      text.appendChild(document.createTextNode('\\u200b'));\r\n\r\n      if (this.selectpicker.current.data.length) {\r\n        for (var i = 0; i < this.selectpicker.current.data.length; i++) {\r\n          var data = this.selectpicker.current.data[i];\r\n          if (data.type === 'option') {\r\n            li = data.element;\r\n            break;\r\n          }\r\n        }\r\n      } else {\r\n        li = elementTemplates.li.cloneNode(false);\r\n        a.appendChild(text);\r\n        li.appendChild(a);\r\n      }\r\n\r\n      dropdownHeader.appendChild(text.cloneNode(true));\r\n\r\n      if (this.selectpicker.view.widestOption) {\r\n        menuInnerInner.appendChild(this.selectpicker.view.widestOption.cloneNode(true));\r\n      }\r\n\r\n      menuInnerInner.appendChild(li);\r\n      menuInnerInner.appendChild(divider);\r\n      menuInnerInner.appendChild(dropdownHeader);\r\n      if (header) menu.appendChild(header);\r\n      if (search) {\r\n        var input = document.createElement('input');\r\n        search.className = 'bs-searchbox';\r\n        input.className = 'form-control';\r\n        search.appendChild(input);\r\n        menu.appendChild(search);\r\n      }\r\n      if (actions) menu.appendChild(actions);\r\n      menuInner.appendChild(menuInnerInner);\r\n      menu.appendChild(menuInner);\r\n      if (doneButton) menu.appendChild(doneButton);\r\n      newElement.appendChild(menu);\r\n\r\n      document.body.appendChild(newElement);\r\n\r\n      var liHeight = li.offsetHeight,\r\n          dropdownHeaderHeight = dropdownHeader ? dropdownHeader.offsetHeight : 0,\r\n          headerHeight = header ? header.offsetHeight : 0,\r\n          searchHeight = search ? search.offsetHeight : 0,\r\n          actionsHeight = actions ? actions.offsetHeight : 0,\r\n          doneButtonHeight = doneButton ? doneButton.offsetHeight : 0,\r\n          dividerHeight = $(divider).outerHeight(true),\r\n          // fall back to jQuery if getComputedStyle is not supported\r\n          menuStyle = window.getComputedStyle ? window.getComputedStyle(menu) : false,\r\n          menuWidth = menu.offsetWidth,\r\n          $menu = menuStyle ? null : $(menu),\r\n          menuPadding = {\r\n            vert: toInteger(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) +\r\n                  toInteger(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) +\r\n                  toInteger(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) +\r\n                  toInteger(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')),\r\n            horiz: toInteger(menuStyle ? menuStyle.paddingLeft : $menu.css('paddingLeft')) +\r\n                  toInteger(menuStyle ? menuStyle.paddingRight : $menu.css('paddingRight')) +\r\n                  toInteger(menuStyle ? menuStyle.borderLeftWidth : $menu.css('borderLeftWidth')) +\r\n                  toInteger(menuStyle ? menuStyle.borderRightWidth : $menu.css('borderRightWidth'))\r\n          },\r\n          menuExtras = {\r\n            vert: menuPadding.vert +\r\n                  toInteger(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) +\r\n                  toInteger(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2,\r\n            horiz: menuPadding.horiz +\r\n                  toInteger(menuStyle ? menuStyle.marginLeft : $menu.css('marginLeft')) +\r\n                  toInteger(menuStyle ? menuStyle.marginRight : $menu.css('marginRight')) + 2\r\n          },\r\n          scrollBarWidth;\r\n\r\n      menuInner.style.overflowY = 'scroll';\r\n\r\n      scrollBarWidth = menu.offsetWidth - menuWidth;\r\n\r\n      document.body.removeChild(newElement);\r\n\r\n      this.sizeInfo.liHeight = liHeight;\r\n      this.sizeInfo.dropdownHeaderHeight = dropdownHeaderHeight;\r\n      this.sizeInfo.headerHeight = headerHeight;\r\n      this.sizeInfo.searchHeight = searchHeight;\r\n      this.sizeInfo.actionsHeight = actionsHeight;\r\n      this.sizeInfo.doneButtonHeight = doneButtonHeight;\r\n      this.sizeInfo.dividerHeight = dividerHeight;\r\n      this.sizeInfo.menuPadding = menuPadding;\r\n      this.sizeInfo.menuExtras = menuExtras;\r\n      this.sizeInfo.menuWidth = menuWidth;\r\n      this.sizeInfo.menuInnerInnerWidth = menuWidth - menuPadding.horiz;\r\n      this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth;\r\n      this.sizeInfo.scrollBarWidth = scrollBarWidth;\r\n      this.sizeInfo.selectHeight = this.$newElement[0].offsetHeight;\r\n\r\n      this.setPositionData();\r\n    },\r\n\r\n    getSelectPosition: function () {\r\n      var that = this,\r\n          $window = $(window),\r\n          pos = that.$newElement.offset(),\r\n          $container = $(that.options.container),\r\n          containerPos;\r\n\r\n      if (that.options.container && $container.length && !$container.is('body')) {\r\n        containerPos = $container.offset();\r\n        containerPos.top += parseInt($container.css('borderTopWidth'));\r\n        containerPos.left += parseInt($container.css('borderLeftWidth'));\r\n      } else {\r\n        containerPos = { top: 0, left: 0 };\r\n      }\r\n\r\n      var winPad = that.options.windowPadding;\r\n\r\n      this.sizeInfo.selectOffsetTop = pos.top - containerPos.top - $window.scrollTop();\r\n      this.sizeInfo.selectOffsetBot = $window.height() - this.sizeInfo.selectOffsetTop - this.sizeInfo.selectHeight - containerPos.top - winPad[2];\r\n      this.sizeInfo.selectOffsetLeft = pos.left - containerPos.left - $window.scrollLeft();\r\n      this.sizeInfo.selectOffsetRight = $window.width() - this.sizeInfo.selectOffsetLeft - this.sizeInfo.selectWidth - containerPos.left - winPad[1];\r\n      this.sizeInfo.selectOffsetTop -= winPad[0];\r\n      this.sizeInfo.selectOffsetLeft -= winPad[3];\r\n    },\r\n\r\n    setMenuSize: function (isAuto) {\r\n      this.getSelectPosition();\r\n\r\n      var selectWidth = this.sizeInfo.selectWidth,\r\n          liHeight = this.sizeInfo.liHeight,\r\n          headerHeight = this.sizeInfo.headerHeight,\r\n          searchHeight = this.sizeInfo.searchHeight,\r\n          actionsHeight = this.sizeInfo.actionsHeight,\r\n          doneButtonHeight = this.sizeInfo.doneButtonHeight,\r\n          divHeight = this.sizeInfo.dividerHeight,\r\n          menuPadding = this.sizeInfo.menuPadding,\r\n          menuInnerHeight,\r\n          menuHeight,\r\n          divLength = 0,\r\n          minHeight,\r\n          _minHeight,\r\n          maxHeight,\r\n          menuInnerMinHeight,\r\n          estimate,\r\n          isDropup;\r\n\r\n      if (this.options.dropupAuto) {\r\n        // Get the estimated height of the menu without scrollbars.\r\n        // This is useful for smaller menus, where there might be plenty of room\r\n        // below the button without setting dropup, but we can't know\r\n        // the exact height of the menu until createView is called later\r\n        estimate = liHeight * this.selectpicker.current.elements.length + menuPadding.vert;\r\n\r\n        isDropup = this.sizeInfo.selectOffsetTop - this.sizeInfo.selectOffsetBot > this.sizeInfo.menuExtras.vert && estimate + this.sizeInfo.menuExtras.vert + 50 > this.sizeInfo.selectOffsetBot;\r\n\r\n        // ensure dropup doesn't change while searching (so menu doesn't bounce back and forth)\r\n        if (this.selectpicker.isSearching === true) {\r\n          isDropup = this.selectpicker.dropup;\r\n        }\r\n\r\n        this.$newElement.toggleClass(classNames.DROPUP, isDropup);\r\n        this.selectpicker.dropup = isDropup;\r\n      }\r\n\r\n      if (this.options.size === 'auto') {\r\n        _minHeight = this.selectpicker.current.elements.length > 3 ? this.sizeInfo.liHeight * 3 + this.sizeInfo.menuExtras.vert - 2 : 0;\r\n        menuHeight = this.sizeInfo.selectOffsetBot - this.sizeInfo.menuExtras.vert;\r\n        minHeight = _minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight;\r\n        menuInnerMinHeight = Math.max(_minHeight - menuPadding.vert, 0);\r\n\r\n        if (this.$newElement.hasClass(classNames.DROPUP)) {\r\n          menuHeight = this.sizeInfo.selectOffsetTop - this.sizeInfo.menuExtras.vert;\r\n        }\r\n\r\n        maxHeight = menuHeight;\r\n        menuInnerHeight = menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding.vert;\r\n      } else if (this.options.size && this.options.size != 'auto' && this.selectpicker.current.elements.length > this.options.size) {\r\n        for (var i = 0; i < this.options.size; i++) {\r\n          if (this.selectpicker.current.data[i].type === 'divider') divLength++;\r\n        }\r\n\r\n        menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding.vert;\r\n        menuInnerHeight = menuHeight - menuPadding.vert;\r\n        maxHeight = menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight;\r\n        minHeight = menuInnerMinHeight = '';\r\n      }\r\n\r\n      this.$menu.css({\r\n        'max-height': maxHeight + 'px',\r\n        'overflow': 'hidden',\r\n        'min-height': minHeight + 'px'\r\n      });\r\n\r\n      this.$menuInner.css({\r\n        'max-height': menuInnerHeight + 'px',\r\n        'overflow-y': 'auto',\r\n        'min-height': menuInnerMinHeight + 'px'\r\n      });\r\n\r\n      // ensure menuInnerHeight is always a positive number to prevent issues calculating chunkSize in createView\r\n      this.sizeInfo.menuInnerHeight = Math.max(menuInnerHeight, 1);\r\n\r\n      if (this.selectpicker.current.data.length && this.selectpicker.current.data[this.selectpicker.current.data.length - 1].position > this.sizeInfo.menuInnerHeight) {\r\n        this.sizeInfo.hasScrollBar = true;\r\n        this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth + this.sizeInfo.scrollBarWidth;\r\n      }\r\n\r\n      if (this.options.dropdownAlignRight === 'auto') {\r\n        this.$menu.toggleClass(classNames.MENURIGHT, this.sizeInfo.selectOffsetLeft > this.sizeInfo.selectOffsetRight && this.sizeInfo.selectOffsetRight < (this.sizeInfo.totalMenuWidth - selectWidth));\r\n      }\r\n\r\n      if (this.dropdown && this.dropdown._popper) this.dropdown._popper.update();\r\n    },\r\n\r\n    setSize: function (refresh) {\r\n      this.liHeight(refresh);\r\n\r\n      if (this.options.header) this.$menu.css('padding-top', 0);\r\n\r\n      if (this.options.size !== false) {\r\n        var that = this,\r\n            $window = $(window);\r\n\r\n        this.setMenuSize();\r\n\r\n        if (this.options.liveSearch) {\r\n          this.$searchbox\r\n            .off('input.setMenuSize propertychange.setMenuSize')\r\n            .on('input.setMenuSize propertychange.setMenuSize', function () {\r\n              return that.setMenuSize();\r\n            });\r\n        }\r\n\r\n        if (this.options.size === 'auto') {\r\n          $window\r\n            .off('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize')\r\n            .on('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize', function () {\r\n              return that.setMenuSize();\r\n            });\r\n        } else if (this.options.size && this.options.size != 'auto' && this.selectpicker.current.elements.length > this.options.size) {\r\n          $window.off('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize');\r\n        }\r\n      }\r\n\r\n      this.createView(false, true, refresh);\r\n    },\r\n\r\n    setWidth: function () {\r\n      var that = this;\r\n\r\n      if (this.options.width === 'auto') {\r\n        requestAnimationFrame(function () {\r\n          that.$menu.css('min-width', '0');\r\n\r\n          that.$element.on('loaded' + EVENT_KEY, function () {\r\n            that.liHeight();\r\n            that.setMenuSize();\r\n\r\n            // Get correct width if element is hidden\r\n            var $selectClone = that.$newElement.clone().appendTo('body'),\r\n                btnWidth = $selectClone.css('width', 'auto').children('button').outerWidth();\r\n\r\n            $selectClone.remove();\r\n\r\n            // Set width to whatever's larger, button title or longest option\r\n            that.sizeInfo.selectWidth = Math.max(that.sizeInfo.totalMenuWidth, btnWidth);\r\n            that.$newElement.css('width', that.sizeInfo.selectWidth + 'px');\r\n          });\r\n        });\r\n      } else if (this.options.width === 'fit') {\r\n        // Remove inline min-width so width can be changed from 'auto'\r\n        this.$menu.css('min-width', '');\r\n        this.$newElement.css('width', '').addClass('fit-width');\r\n      } else if (this.options.width) {\r\n        // Remove inline min-width so width can be changed from 'auto'\r\n        this.$menu.css('min-width', '');\r\n        this.$newElement.css('width', this.options.width);\r\n      } else {\r\n        // Remove inline min-width/width so width can be changed\r\n        this.$menu.css('min-width', '');\r\n        this.$newElement.css('width', '');\r\n      }\r\n      // Remove fit-width class if width is changed programmatically\r\n      if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') {\r\n        this.$newElement[0].classList.remove('fit-width');\r\n      }\r\n    },\r\n\r\n    selectPosition: function () {\r\n      this.$bsContainer = $('<div class=\"bs-container\" />');\r\n\r\n      var that = this,\r\n          $container = $(this.options.container),\r\n          pos,\r\n          containerPos,\r\n          actualHeight,\r\n          getPlacement = function ($element) {\r\n            var containerPosition = {},\r\n                // fall back to dropdown's default display setting if display is not manually set\r\n                display = that.options.display || (\r\n                  // Bootstrap 3 doesn't have $.fn.dropdown.Constructor.Default\r\n                  $.fn.dropdown.Constructor.Default ? $.fn.dropdown.Constructor.Default.display\r\n                  : false\r\n                );\r\n\r\n            that.$bsContainer.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass(classNames.DROPUP, $element.hasClass(classNames.DROPUP));\r\n            pos = $element.offset();\r\n\r\n            if (!$container.is('body')) {\r\n              containerPos = $container.offset();\r\n              containerPos.top += parseInt($container.css('borderTopWidth')) - $container.scrollTop();\r\n              containerPos.left += parseInt($container.css('borderLeftWidth')) - $container.scrollLeft();\r\n            } else {\r\n              containerPos = { top: 0, left: 0 };\r\n            }\r\n\r\n            actualHeight = $element.hasClass(classNames.DROPUP) ? 0 : $element[0].offsetHeight;\r\n\r\n            // Bootstrap 4+ uses Popper for menu positioning\r\n            if (version.major < 4 || display === 'static') {\r\n              containerPosition.top = pos.top - containerPos.top + actualHeight;\r\n              containerPosition.left = pos.left - containerPos.left;\r\n            }\r\n\r\n            containerPosition.width = $element[0].offsetWidth;\r\n\r\n            that.$bsContainer.css(containerPosition);\r\n          };\r\n\r\n      this.$button.on('click.bs.dropdown.data-api', function () {\r\n        if (that.isDisabled()) {\r\n          return;\r\n        }\r\n\r\n        getPlacement(that.$newElement);\r\n\r\n        that.$bsContainer\r\n          .appendTo(that.options.container)\r\n          .toggleClass(classNames.SHOW, !that.$button.hasClass(classNames.SHOW))\r\n          .append(that.$menu);\r\n      });\r\n\r\n      $(window)\r\n        .off('resize' + EVENT_KEY + '.' + this.selectId + ' scroll' + EVENT_KEY + '.' + this.selectId)\r\n        .on('resize' + EVENT_KEY + '.' + this.selectId + ' scroll' + EVENT_KEY + '.' + this.selectId, function () {\r\n          var isActive = that.$newElement.hasClass(classNames.SHOW);\r\n\r\n          if (isActive) getPlacement(that.$newElement);\r\n        });\r\n\r\n      this.$element.on('hide' + EVENT_KEY, function () {\r\n        that.$menu.data('height', that.$menu.height());\r\n        that.$bsContainer.detach();\r\n      });\r\n    },\r\n\r\n    setOptionStatus: function (selectedOnly) {\r\n      var that = this;\r\n\r\n      that.noScroll = false;\r\n\r\n      if (that.selectpicker.view.visibleElements && that.selectpicker.view.visibleElements.length) {\r\n        for (var i = 0; i < that.selectpicker.view.visibleElements.length; i++) {\r\n          var liData = that.selectpicker.current.data[i + that.selectpicker.view.position0],\r\n              option = liData.option;\r\n\r\n          if (option) {\r\n            if (selectedOnly !== true) {\r\n              that.setDisabled(\r\n                liData.index,\r\n                liData.disabled\r\n              );\r\n            }\r\n\r\n            that.setSelected(\r\n              liData.index,\r\n              option.selected\r\n            );\r\n          }\r\n        }\r\n      }\r\n    },\r\n\r\n    /**\r\n     * @param {number} index - the index of the option that is being changed\r\n     * @param {boolean} selected - true if the option is being selected, false if being deselected\r\n     */\r\n    setSelected: function (index, selected) {\r\n      var li = this.selectpicker.main.elements[index],\r\n          liData = this.selectpicker.main.data[index],\r\n          activeIndexIsSet = this.activeIndex !== undefined,\r\n          thisIsActive = this.activeIndex === index,\r\n          prevActive,\r\n          a,\r\n          // if current option is already active\r\n          // OR\r\n          // if the current option is being selected, it's NOT multiple, and\r\n          // activeIndex is undefined:\r\n          //  - when the menu is first being opened, OR\r\n          //  - after a search has been performed, OR\r\n          //  - when retainActive is false when selecting a new option (i.e. index of the newly selected option is not the same as the current activeIndex)\r\n          keepActive = thisIsActive || (selected && !this.multiple && !activeIndexIsSet);\r\n\r\n      liData.selected = selected;\r\n\r\n      a = li.firstChild;\r\n\r\n      if (selected) {\r\n        this.selectedIndex = index;\r\n      }\r\n\r\n      li.classList.toggle('selected', selected);\r\n\r\n      if (keepActive) {\r\n        this.focusItem(li, liData);\r\n        this.selectpicker.view.currentActive = li;\r\n        this.activeIndex = index;\r\n      } else {\r\n        this.defocusItem(li);\r\n      }\r\n\r\n      if (a) {\r\n        a.classList.toggle('selected', selected);\r\n\r\n        if (selected) {\r\n          a.setAttribute('aria-selected', true);\r\n        } else {\r\n          if (this.multiple) {\r\n            a.setAttribute('aria-selected', false);\r\n          } else {\r\n            a.removeAttribute('aria-selected');\r\n          }\r\n        }\r\n      }\r\n\r\n      if (!keepActive && !activeIndexIsSet && selected && this.prevActiveIndex !== undefined) {\r\n        prevActive = this.selectpicker.main.elements[this.prevActiveIndex];\r\n\r\n        this.defocusItem(prevActive);\r\n      }\r\n    },\r\n\r\n    /**\r\n     * @param {number} index - the index of the option that is being disabled\r\n     * @param {boolean} disabled - true if the option is being disabled, false if being enabled\r\n     */\r\n    setDisabled: function (index, disabled) {\r\n      var li = this.selectpicker.main.elements[index],\r\n          a;\r\n\r\n      this.selectpicker.main.data[index].disabled = disabled;\r\n\r\n      a = li.firstChild;\r\n\r\n      li.classList.toggle(classNames.DISABLED, disabled);\r\n\r\n      if (a) {\r\n        if (version.major === '4') a.classList.toggle(classNames.DISABLED, disabled);\r\n\r\n        if (disabled) {\r\n          a.setAttribute('aria-disabled', disabled);\r\n          a.setAttribute('tabindex', -1);\r\n        } else {\r\n          a.removeAttribute('aria-disabled');\r\n          a.setAttribute('tabindex', 0);\r\n        }\r\n      }\r\n    },\r\n\r\n    isDisabled: function () {\r\n      return this.$element[0].disabled;\r\n    },\r\n\r\n    checkDisabled: function () {\r\n      if (this.isDisabled()) {\r\n        this.$newElement[0].classList.add(classNames.DISABLED);\r\n        this.$button.addClass(classNames.DISABLED).attr('aria-disabled', true);\r\n      } else {\r\n        if (this.$button[0].classList.contains(classNames.DISABLED)) {\r\n          this.$newElement[0].classList.remove(classNames.DISABLED);\r\n          this.$button.removeClass(classNames.DISABLED).attr('aria-disabled', false);\r\n        }\r\n      }\r\n    },\r\n\r\n    clickListener: function () {\r\n      var that = this,\r\n          $document = $(document);\r\n\r\n      $document.data('spaceSelect', false);\r\n\r\n      this.$button.on('keyup', function (e) {\r\n        if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) {\r\n          e.preventDefault();\r\n          $document.data('spaceSelect', false);\r\n        }\r\n      });\r\n\r\n      this.$newElement.on('show.bs.dropdown', function () {\r\n        if (version.major > 3 && !that.dropdown) {\r\n          that.dropdown = that.$button.data('bs.dropdown');\r\n          that.dropdown._menu = that.$menu[0];\r\n        }\r\n      });\r\n\r\n      this.$button.on('click.bs.dropdown.data-api', function () {\r\n        if (!that.$newElement.hasClass(classNames.SHOW)) {\r\n          that.setSize();\r\n        }\r\n      });\r\n\r\n      function setFocus () {\r\n        if (that.options.liveSearch) {\r\n          that.$searchbox.trigger('focus');\r\n        } else {\r\n          that.$menuInner.trigger('focus');\r\n        }\r\n      }\r\n\r\n      function checkPopperExists () {\r\n        if (that.dropdown && that.dropdown._popper && that.dropdown._popper.state.isCreated) {\r\n          setFocus();\r\n        } else {\r\n          requestAnimationFrame(checkPopperExists);\r\n        }\r\n      }\r\n\r\n      this.$element.on('shown' + EVENT_KEY, function () {\r\n        if (that.$menuInner[0].scrollTop !== that.selectpicker.view.scrollTop) {\r\n          that.$menuInner[0].scrollTop = that.selectpicker.view.scrollTop;\r\n        }\r\n\r\n        if (version.major > 3) {\r\n          requestAnimationFrame(checkPopperExists);\r\n        } else {\r\n          setFocus();\r\n        }\r\n      });\r\n\r\n      // ensure posinset and setsize are correct before selecting an option via a click\r\n      this.$menuInner.on('mouseenter', 'li a', function (e) {\r\n        var hoverLi = this.parentElement,\r\n            position0 = that.isVirtual() ? that.selectpicker.view.position0 : 0,\r\n            index = Array.prototype.indexOf.call(hoverLi.parentElement.children, hoverLi),\r\n            hoverData = that.selectpicker.current.data[index + position0];\r\n\r\n        that.focusItem(hoverLi, hoverData, true);\r\n      });\r\n\r\n      this.$menuInner.on('click', 'li a', function (e, retainActive) {\r\n        var $this = $(this),\r\n            element = that.$element[0],\r\n            position0 = that.isVirtual() ? that.selectpicker.view.position0 : 0,\r\n            clickedData = that.selectpicker.current.data[$this.parent().index() + position0],\r\n            clickedIndex = clickedData.index,\r\n            prevValue = getSelectValues(element),\r\n            prevIndex = element.selectedIndex,\r\n            prevOption = element.options[prevIndex],\r\n            triggerChange = true;\r\n\r\n        // Don't close on multi choice menu\r\n        if (that.multiple && that.options.maxOptions !== 1) {\r\n          e.stopPropagation();\r\n        }\r\n\r\n        e.preventDefault();\r\n\r\n        // Don't run if the select is disabled\r\n        if (!that.isDisabled() && !$this.parent().hasClass(classNames.DISABLED)) {\r\n          var option = clickedData.option,\r\n              $option = $(option),\r\n              state = option.selected,\r\n              $optgroup = $option.parent('optgroup'),\r\n              $optgroupOptions = $optgroup.find('option'),\r\n              maxOptions = that.options.maxOptions,\r\n              maxOptionsGrp = $optgroup.data('maxOptions') || false;\r\n\r\n          if (clickedIndex === that.activeIndex) retainActive = true;\r\n\r\n          if (!retainActive) {\r\n            that.prevActiveIndex = that.activeIndex;\r\n            that.activeIndex = undefined;\r\n          }\r\n\r\n          if (!that.multiple) { // Deselect all others if not multi select box\r\n            if (prevOption) prevOption.selected = false;\r\n            option.selected = true;\r\n            that.setSelected(clickedIndex, true);\r\n          } else { // Toggle the one we have chosen if we are multi select.\r\n            option.selected = !state;\r\n\r\n            that.setSelected(clickedIndex, !state);\r\n            that.focusedParent.focus();\r\n\r\n            if (maxOptions !== false || maxOptionsGrp !== false) {\r\n              var maxReached = maxOptions < getSelectedOptions(element).length,\r\n                  maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length;\r\n\r\n              if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) {\r\n                if (maxOptions && maxOptions == 1) {\r\n                  element.selectedIndex = -1;\r\n                  option.selected = true;\r\n                  that.setOptionStatus(true);\r\n                } else if (maxOptionsGrp && maxOptionsGrp == 1) {\r\n                  for (var i = 0; i < $optgroupOptions.length; i++) {\r\n                    var _option = $optgroupOptions[i];\r\n                    _option.selected = false;\r\n                    that.setSelected(_option.liIndex, false);\r\n                  }\r\n\r\n                  option.selected = true;\r\n                  that.setSelected(clickedIndex, true);\r\n                } else {\r\n                  var maxOptionsText = typeof that.options.maxOptionsText === 'string' ? [that.options.maxOptionsText, that.options.maxOptionsText] : that.options.maxOptionsText,\r\n                      maxOptionsArr = typeof maxOptionsText === 'function' ? maxOptionsText(maxOptions, maxOptionsGrp) : maxOptionsText,\r\n                      maxTxt = maxOptionsArr[0].replace('{n}', maxOptions),\r\n                      maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp),\r\n                      $notify = $('<div class=\"notify\"></div>');\r\n                  // If {var} is set in array, replace it\r\n                  /** @deprecated */\r\n                  if (maxOptionsArr[2]) {\r\n                    maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]);\r\n                    maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]);\r\n                  }\r\n\r\n                  option.selected = false;\r\n\r\n                  that.$menu.append($notify);\r\n\r\n                  if (maxOptions && maxReached) {\r\n                    $notify.append($('<div>' + maxTxt + '</div>'));\r\n                    triggerChange = false;\r\n                    that.$element.trigger('maxReached' + EVENT_KEY);\r\n                  }\r\n\r\n                  if (maxOptionsGrp && maxReachedGrp) {\r\n                    $notify.append($('<div>' + maxTxtGrp + '</div>'));\r\n                    triggerChange = false;\r\n                    that.$element.trigger('maxReachedGrp' + EVENT_KEY);\r\n                  }\r\n\r\n                  setTimeout(function () {\r\n                    that.setSelected(clickedIndex, false);\r\n                  }, 10);\r\n\r\n                  $notify[0].classList.add('fadeOut');\r\n\r\n                  setTimeout(function () {\r\n                    $notify.remove();\r\n                  }, 1050);\r\n                }\r\n              }\r\n            }\r\n          }\r\n\r\n          if (!that.multiple || (that.multiple && that.options.maxOptions === 1)) {\r\n            that.$button.trigger('focus');\r\n          } else if (that.options.liveSearch) {\r\n            that.$searchbox.trigger('focus');\r\n          }\r\n\r\n          // Trigger select 'change'\r\n          if (triggerChange) {\r\n            if (that.multiple || prevIndex !== element.selectedIndex) {\r\n              // $option.prop('selected') is current option state (selected/unselected). prevValue is the value of the select prior to being changed.\r\n              changedArguments = [option.index, $option.prop('selected'), prevValue];\r\n              that.$element\r\n                .triggerNative('change');\r\n            }\r\n          }\r\n        }\r\n      });\r\n\r\n      this.$menu.on('click', 'li.' + classNames.DISABLED + ' a, .' + classNames.POPOVERHEADER + ', .' + classNames.POPOVERHEADER + ' :not(.close)', function (e) {\r\n        if (e.currentTarget == this) {\r\n          e.preventDefault();\r\n          e.stopPropagation();\r\n          if (that.options.liveSearch && !$(e.target).hasClass('close')) {\r\n            that.$searchbox.trigger('focus');\r\n          } else {\r\n            that.$button.trigger('focus');\r\n          }\r\n        }\r\n      });\r\n\r\n      this.$menuInner.on('click', '.divider, .dropdown-header', function (e) {\r\n        e.preventDefault();\r\n        e.stopPropagation();\r\n        if (that.options.liveSearch) {\r\n          that.$searchbox.trigger('focus');\r\n        } else {\r\n          that.$button.trigger('focus');\r\n        }\r\n      });\r\n\r\n      this.$menu.on('click', '.' + classNames.POPOVERHEADER + ' .close', function () {\r\n        that.$button.trigger('click');\r\n      });\r\n\r\n      this.$searchbox.on('click', function (e) {\r\n        e.stopPropagation();\r\n      });\r\n\r\n      this.$menu.on('click', '.actions-btn', function (e) {\r\n        if (that.options.liveSearch) {\r\n          that.$searchbox.trigger('focus');\r\n        } else {\r\n          that.$button.trigger('focus');\r\n        }\r\n\r\n        e.preventDefault();\r\n        e.stopPropagation();\r\n\r\n        if ($(this).hasClass('bs-select-all')) {\r\n          that.selectAll();\r\n        } else {\r\n          that.deselectAll();\r\n        }\r\n      });\r\n\r\n      this.$button\r\n        .on('focus' + EVENT_KEY, function (e) {\r\n          var tabindex = that.$element[0].getAttribute('tabindex');\r\n\r\n          // only change when button is actually focused\r\n          if (tabindex !== undefined && e.originalEvent && e.originalEvent.isTrusted) {\r\n            // apply select element's tabindex to ensure correct order is followed when tabbing to the next element\r\n            this.setAttribute('tabindex', tabindex);\r\n            // set element's tabindex to -1 to allow for reverse tabbing\r\n            that.$element[0].setAttribute('tabindex', -1);\r\n            that.selectpicker.view.tabindex = tabindex;\r\n          }\r\n        })\r\n        .on('blur' + EVENT_KEY, function (e) {\r\n          // revert everything to original tabindex\r\n          if (that.selectpicker.view.tabindex !== undefined && e.originalEvent && e.originalEvent.isTrusted) {\r\n            that.$element[0].setAttribute('tabindex', that.selectpicker.view.tabindex);\r\n            this.setAttribute('tabindex', -1);\r\n            that.selectpicker.view.tabindex = undefined;\r\n          }\r\n        });\r\n\r\n      this.$element\r\n        .on('change' + EVENT_KEY, function () {\r\n          that.render();\r\n          that.$element.trigger('changed' + EVENT_KEY, changedArguments);\r\n          changedArguments = null;\r\n        })\r\n        .on('focus' + EVENT_KEY, function () {\r\n          if (!that.options.mobile) that.$button[0].focus();\r\n        });\r\n    },\r\n\r\n    liveSearchListener: function () {\r\n      var that = this;\r\n\r\n      this.$button.on('click.bs.dropdown.data-api', function () {\r\n        if (!!that.$searchbox.val()) {\r\n          that.$searchbox.val('');\r\n          that.selectpicker.search.previousValue = undefined;\r\n        }\r\n      });\r\n\r\n      this.$searchbox.on('click.bs.dropdown.data-api focus.bs.dropdown.data-api touchend.bs.dropdown.data-api', function (e) {\r\n        e.stopPropagation();\r\n      });\r\n\r\n      this.$searchbox.on('input propertychange', function () {\r\n        var searchValue = that.$searchbox[0].value;\r\n\r\n        that.selectpicker.search.elements = [];\r\n        that.selectpicker.search.data = [];\r\n\r\n        if (searchValue) {\r\n          var i,\r\n              searchMatch = [],\r\n              q = searchValue.toUpperCase(),\r\n              cache = {},\r\n              cacheArr = [],\r\n              searchStyle = that._searchStyle(),\r\n              normalizeSearch = that.options.liveSearchNormalize;\r\n\r\n          if (normalizeSearch) q = normalizeToBase(q);\r\n\r\n          for (var i = 0; i < that.selectpicker.main.data.length; i++) {\r\n            var li = that.selectpicker.main.data[i];\r\n\r\n            if (!cache[i]) {\r\n              cache[i] = stringSearch(li, q, searchStyle, normalizeSearch);\r\n            }\r\n\r\n            if (cache[i] && li.headerIndex !== undefined && cacheArr.indexOf(li.headerIndex) === -1) {\r\n              if (li.headerIndex > 0) {\r\n                cache[li.headerIndex - 1] = true;\r\n                cacheArr.push(li.headerIndex - 1);\r\n              }\r\n\r\n              cache[li.headerIndex] = true;\r\n              cacheArr.push(li.headerIndex);\r\n\r\n              cache[li.lastIndex + 1] = true;\r\n            }\r\n\r\n            if (cache[i] && li.type !== 'optgroup-label') cacheArr.push(i);\r\n          }\r\n\r\n          for (var i = 0, cacheLen = cacheArr.length; i < cacheLen; i++) {\r\n            var index = cacheArr[i],\r\n                prevIndex = cacheArr[i - 1],\r\n                li = that.selectpicker.main.data[index],\r\n                liPrev = that.selectpicker.main.data[prevIndex];\r\n\r\n            if (li.type !== 'divider' || (li.type === 'divider' && liPrev && liPrev.type !== 'divider' && cacheLen - 1 !== i)) {\r\n              that.selectpicker.search.data.push(li);\r\n              searchMatch.push(that.selectpicker.main.elements[index]);\r\n            }\r\n          }\r\n\r\n          that.activeIndex = undefined;\r\n          that.noScroll = true;\r\n          that.$menuInner.scrollTop(0);\r\n          that.selectpicker.search.elements = searchMatch;\r\n          that.createView(true);\r\n          showNoResults.call(that, searchMatch, searchValue);\r\n        } else if (that.selectpicker.search.previousValue) { // for IE11 (#2402)\r\n          that.$menuInner.scrollTop(0);\r\n          that.createView(false);\r\n        }\r\n\r\n        that.selectpicker.search.previousValue =  searchValue;\r\n      });\r\n    },\r\n\r\n    _searchStyle: function () {\r\n      return this.options.liveSearchStyle || 'contains';\r\n    },\r\n\r\n    val: function (value) {\r\n      var element = this.$element[0];\r\n\r\n      if (typeof value !== 'undefined') {\r\n        var prevValue = getSelectValues(element);\r\n\r\n        changedArguments = [null, null, prevValue];\r\n\r\n        this.$element\r\n          .val(value)\r\n          .trigger('changed' + EVENT_KEY, changedArguments);\r\n\r\n        if (this.$newElement.hasClass(classNames.SHOW)) {\r\n          if (this.multiple) {\r\n            this.setOptionStatus(true);\r\n          } else {\r\n            var liSelectedIndex = (element.options[element.selectedIndex] || {}).liIndex;\r\n\r\n            if (typeof liSelectedIndex === 'number') {\r\n              this.setSelected(this.selectedIndex, false);\r\n              this.setSelected(liSelectedIndex, true);\r\n            }\r\n          }\r\n        }\r\n\r\n        this.render();\r\n\r\n        changedArguments = null;\r\n\r\n        return this.$element;\r\n      } else {\r\n        return this.$element.val();\r\n      }\r\n    },\r\n\r\n    changeAll: function (status) {\r\n      if (!this.multiple) return;\r\n      if (typeof status === 'undefined') status = true;\r\n\r\n      var element = this.$element[0],\r\n          previousSelected = 0,\r\n          currentSelected = 0,\r\n          prevValue = getSelectValues(element);\r\n\r\n      element.classList.add('bs-select-hidden');\r\n\r\n      for (var i = 0, data = this.selectpicker.current.data, len = data.length; i < len; i++) {\r\n        var liData = data[i],\r\n            option = liData.option;\r\n\r\n        if (option && !liData.disabled && liData.type !== 'divider') {\r\n          if (liData.selected) previousSelected++;\r\n          option.selected = status;\r\n          if (status === true) currentSelected++;\r\n        }\r\n      }\r\n\r\n      element.classList.remove('bs-select-hidden');\r\n\r\n      if (previousSelected === currentSelected) return;\r\n\r\n      this.setOptionStatus();\r\n\r\n      changedArguments = [null, null, prevValue];\r\n\r\n      this.$element\r\n        .triggerNative('change');\r\n    },\r\n\r\n    selectAll: function () {\r\n      return this.changeAll(true);\r\n    },\r\n\r\n    deselectAll: function () {\r\n      return this.changeAll(false);\r\n    },\r\n\r\n    toggle: function (e) {\r\n      e = e || window.event;\r\n\r\n      if (e) e.stopPropagation();\r\n\r\n      this.$button.trigger('click.bs.dropdown.data-api');\r\n    },\r\n\r\n    keydown: function (e) {\r\n      var $this = $(this),\r\n          isToggle = $this.hasClass('dropdown-toggle'),\r\n          $parent = isToggle ? $this.closest('.dropdown') : $this.closest(Selector.MENU),\r\n          that = $parent.data('this'),\r\n          $items = that.findLis(),\r\n          index,\r\n          isActive,\r\n          liActive,\r\n          activeLi,\r\n          offset,\r\n          updateScroll = false,\r\n          downOnTab = e.which === keyCodes.TAB && !isToggle && !that.options.selectOnTab,\r\n          isArrowKey = REGEXP_ARROW.test(e.which) || downOnTab,\r\n          scrollTop = that.$menuInner[0].scrollTop,\r\n          isVirtual = that.isVirtual(),\r\n          position0 = isVirtual === true ? that.selectpicker.view.position0 : 0;\r\n\r\n      // do nothing if a function key is pressed\r\n      if (e.which >= 112 && e.which <= 123) return;\r\n\r\n      isActive = that.$newElement.hasClass(classNames.SHOW);\r\n\r\n      if (\r\n        !isActive &&\r\n        (\r\n          isArrowKey ||\r\n          (e.which >= 48 && e.which <= 57) ||\r\n          (e.which >= 96 && e.which <= 105) ||\r\n          (e.which >= 65 && e.which <= 90)\r\n        )\r\n      ) {\r\n        that.$button.trigger('click.bs.dropdown.data-api');\r\n\r\n        if (that.options.liveSearch) {\r\n          that.$searchbox.trigger('focus');\r\n          return;\r\n        }\r\n      }\r\n\r\n      if (e.which === keyCodes.ESCAPE && isActive) {\r\n        e.preventDefault();\r\n        that.$button.trigger('click.bs.dropdown.data-api').trigger('focus');\r\n      }\r\n\r\n      if (isArrowKey) { // if up or down\r\n        if (!$items.length) return;\r\n\r\n        liActive = that.selectpicker.main.elements[that.activeIndex];\r\n        index = liActive ? Array.prototype.indexOf.call(liActive.parentElement.children, liActive) : -1;\r\n\r\n        if (index !== -1) {\r\n          that.defocusItem(liActive);\r\n        }\r\n\r\n        if (e.which === keyCodes.ARROW_UP) { // up\r\n          if (index !== -1) index--;\r\n          if (index + position0 < 0) index += $items.length;\r\n\r\n          if (!that.selectpicker.view.canHighlight[index + position0]) {\r\n            index = that.selectpicker.view.canHighlight.slice(0, index + position0).lastIndexOf(true) - position0;\r\n            if (index === -1) index = $items.length - 1;\r\n          }\r\n        } else if (e.which === keyCodes.ARROW_DOWN || downOnTab) { // down\r\n          index++;\r\n          if (index + position0 >= that.selectpicker.view.canHighlight.length) index = that.selectpicker.view.firstHighlightIndex;\r\n\r\n          if (!that.selectpicker.view.canHighlight[index + position0]) {\r\n            index = index + 1 + that.selectpicker.view.canHighlight.slice(index + position0 + 1).indexOf(true);\r\n          }\r\n        }\r\n\r\n        e.preventDefault();\r\n\r\n        var liActiveIndex = position0 + index;\r\n\r\n        if (e.which === keyCodes.ARROW_UP) { // up\r\n          // scroll to bottom and highlight last option\r\n          if (position0 === 0 && index === $items.length - 1) {\r\n            that.$menuInner[0].scrollTop = that.$menuInner[0].scrollHeight;\r\n\r\n            liActiveIndex = that.selectpicker.current.elements.length - 1;\r\n          } else {\r\n            activeLi = that.selectpicker.current.data[liActiveIndex];\r\n            offset = activeLi.position - activeLi.height;\r\n\r\n            updateScroll = offset < scrollTop;\r\n          }\r\n        } else if (e.which === keyCodes.ARROW_DOWN || downOnTab) { // down\r\n          // scroll to top and highlight first option\r\n          if (index === that.selectpicker.view.firstHighlightIndex) {\r\n            that.$menuInner[0].scrollTop = 0;\r\n\r\n            liActiveIndex = that.selectpicker.view.firstHighlightIndex;\r\n          } else {\r\n            activeLi = that.selectpicker.current.data[liActiveIndex];\r\n            offset = activeLi.position - that.sizeInfo.menuInnerHeight;\r\n\r\n            updateScroll = offset > scrollTop;\r\n          }\r\n        }\r\n\r\n        liActive = that.selectpicker.current.elements[liActiveIndex];\r\n\r\n        that.activeIndex = that.selectpicker.current.data[liActiveIndex].index;\r\n\r\n        that.focusItem(liActive);\r\n\r\n        that.selectpicker.view.currentActive = liActive;\r\n\r\n        if (updateScroll) that.$menuInner[0].scrollTop = offset;\r\n\r\n        if (that.options.liveSearch) {\r\n          that.$searchbox.trigger('focus');\r\n        } else {\r\n          $this.trigger('focus');\r\n        }\r\n      } else if (\r\n        (!$this.is('input') && !REGEXP_TAB_OR_ESCAPE.test(e.which)) ||\r\n        (e.which === keyCodes.SPACE && that.selectpicker.keydown.keyHistory)\r\n      ) {\r\n        var searchMatch,\r\n            matches = [],\r\n            keyHistory;\r\n\r\n        e.preventDefault();\r\n\r\n        that.selectpicker.keydown.keyHistory += keyCodeMap[e.which];\r\n\r\n        if (that.selectpicker.keydown.resetKeyHistory.cancel) clearTimeout(that.selectpicker.keydown.resetKeyHistory.cancel);\r\n        that.selectpicker.keydown.resetKeyHistory.cancel = that.selectpicker.keydown.resetKeyHistory.start();\r\n\r\n        keyHistory = that.selectpicker.keydown.keyHistory;\r\n\r\n        // if all letters are the same, set keyHistory to just the first character when searching\r\n        if (/^(.)\\1+$/.test(keyHistory)) {\r\n          keyHistory = keyHistory.charAt(0);\r\n        }\r\n\r\n        // find matches\r\n        for (var i = 0; i < that.selectpicker.current.data.length; i++) {\r\n          var li = that.selectpicker.current.data[i],\r\n              hasMatch;\r\n\r\n          hasMatch = stringSearch(li, keyHistory, 'startsWith', true);\r\n\r\n          if (hasMatch && that.selectpicker.view.canHighlight[i]) {\r\n            matches.push(li.index);\r\n          }\r\n        }\r\n\r\n        if (matches.length) {\r\n          var matchIndex = 0;\r\n\r\n          $items.removeClass('active').find('a').removeClass('active');\r\n\r\n          // either only one key has been pressed or they are all the same key\r\n          if (keyHistory.length === 1) {\r\n            matchIndex = matches.indexOf(that.activeIndex);\r\n\r\n            if (matchIndex === -1 || matchIndex === matches.length - 1) {\r\n              matchIndex = 0;\r\n            } else {\r\n              matchIndex++;\r\n            }\r\n          }\r\n\r\n          searchMatch = matches[matchIndex];\r\n\r\n          activeLi = that.selectpicker.main.data[searchMatch];\r\n\r\n          if (scrollTop - activeLi.position > 0) {\r\n            offset = activeLi.position - activeLi.height;\r\n            updateScroll = true;\r\n          } else {\r\n            offset = activeLi.position - that.sizeInfo.menuInnerHeight;\r\n            // if the option is already visible at the current scroll position, just keep it the same\r\n            updateScroll = activeLi.position > scrollTop + that.sizeInfo.menuInnerHeight;\r\n          }\r\n\r\n          liActive = that.selectpicker.main.elements[searchMatch];\r\n\r\n          that.activeIndex = matches[matchIndex];\r\n\r\n          that.focusItem(liActive);\r\n\r\n          if (liActive) liActive.firstChild.focus();\r\n\r\n          if (updateScroll) that.$menuInner[0].scrollTop = offset;\r\n\r\n          $this.trigger('focus');\r\n        }\r\n      }\r\n\r\n      // Select focused option if \"Enter\", \"Spacebar\" or \"Tab\" (when selectOnTab is true) are pressed inside the menu.\r\n      if (\r\n        isActive &&\r\n        (\r\n          (e.which === keyCodes.SPACE && !that.selectpicker.keydown.keyHistory) ||\r\n          e.which === keyCodes.ENTER ||\r\n          (e.which === keyCodes.TAB && that.options.selectOnTab)\r\n        )\r\n      ) {\r\n        if (e.which !== keyCodes.SPACE) e.preventDefault();\r\n\r\n        if (!that.options.liveSearch || e.which !== keyCodes.SPACE) {\r\n          that.$menuInner.find('.active a').trigger('click', true); // retain active class\r\n          $this.trigger('focus');\r\n\r\n          if (!that.options.liveSearch) {\r\n            // Prevent screen from scrolling if the user hits the spacebar\r\n            e.preventDefault();\r\n            // Fixes spacebar selection of dropdown items in FF & IE\r\n            $(document).data('spaceSelect', true);\r\n          }\r\n        }\r\n      }\r\n    },\r\n\r\n    mobile: function () {\r\n      // ensure mobile is set to true if mobile function is called after init\r\n      this.options.mobile = true;\r\n      this.$element[0].classList.add('mobile-device');\r\n    },\r\n\r\n    refresh: function () {\r\n      // update options if data attributes have been changed\r\n      var config = $.extend({}, this.options, this.$element.data());\r\n      this.options = config;\r\n\r\n      this.checkDisabled();\r\n      this.buildData();\r\n      this.setStyle();\r\n      this.render();\r\n      this.buildList();\r\n      this.setWidth();\r\n\r\n      this.setSize(true);\r\n\r\n      this.$element.trigger('refreshed' + EVENT_KEY);\r\n    },\r\n\r\n    hide: function () {\r\n      this.$newElement.hide();\r\n    },\r\n\r\n    show: function () {\r\n      this.$newElement.show();\r\n    },\r\n\r\n    remove: function () {\r\n      this.$newElement.remove();\r\n      this.$element.remove();\r\n    },\r\n\r\n    destroy: function () {\r\n      this.$newElement.before(this.$element).remove();\r\n\r\n      if (this.$bsContainer) {\r\n        this.$bsContainer.remove();\r\n      } else {\r\n        this.$menu.remove();\r\n      }\r\n\r\n      if (this.selectpicker.view.titleOption && this.selectpicker.view.titleOption.parentNode) {\r\n        this.selectpicker.view.titleOption.parentNode.removeChild(this.selectpicker.view.titleOption);\r\n      }\r\n\r\n      this.$element\r\n        .off(EVENT_KEY)\r\n        .removeData('selectpicker')\r\n        .removeClass('bs-select-hidden selectpicker');\r\n\r\n      $(window).off(EVENT_KEY + '.' + this.selectId);\r\n    }\r\n  };\r\n\r\n  // SELECTPICKER PLUGIN DEFINITION\r\n  // ==============================\r\n  function Plugin (option) {\r\n    // get the args of the outer function..\r\n    var args = arguments;\r\n    // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them\r\n    // to get lost/corrupted in android 2.3 and IE9 #715 #775\r\n    var _option = option;\r\n\r\n    [].shift.apply(args);\r\n\r\n    // if the version was not set successfully\r\n    if (!version.success) {\r\n      // try to retreive it again\r\n      try {\r\n        version.full = ($.fn.dropdown.Constructor.VERSION || '').split(' ')[0].split('.');\r\n      } catch (err) {\r\n        // fall back to use BootstrapVersion if set\r\n        if (Selectpicker.BootstrapVersion) {\r\n          version.full = Selectpicker.BootstrapVersion.split(' ')[0].split('.');\r\n        } else {\r\n          version.full = [version.major, '0', '0'];\r\n\r\n          console.warn(\r\n            'There was an issue retrieving Bootstrap\\'s version. ' +\r\n            'Ensure Bootstrap is being loaded before bootstrap-select and there is no namespace collision. ' +\r\n            'If loading Bootstrap asynchronously, the version may need to be manually specified via $.fn.selectpicker.Constructor.BootstrapVersion.',\r\n            err\r\n          );\r\n        }\r\n      }\r\n\r\n      version.major = version.full[0];\r\n      version.success = true;\r\n    }\r\n\r\n    if (version.major === '4') {\r\n      // some defaults need to be changed if using Bootstrap 4\r\n      // check to see if they have already been manually changed before forcing them to update\r\n      var toUpdate = [];\r\n\r\n      if (Selectpicker.DEFAULTS.style === classNames.BUTTONCLASS) toUpdate.push({ name: 'style', className: 'BUTTONCLASS' });\r\n      if (Selectpicker.DEFAULTS.iconBase === classNames.ICONBASE) toUpdate.push({ name: 'iconBase', className: 'ICONBASE' });\r\n      if (Selectpicker.DEFAULTS.tickIcon === classNames.TICKICON) toUpdate.push({ name: 'tickIcon', className: 'TICKICON' });\r\n\r\n      classNames.DIVIDER = 'dropdown-divider';\r\n      classNames.SHOW = 'show';\r\n      classNames.BUTTONCLASS = 'btn-light';\r\n      classNames.POPOVERHEADER = 'popover-header';\r\n      classNames.ICONBASE = '';\r\n      classNames.TICKICON = 'bs-ok-default';\r\n\r\n      for (var i = 0; i < toUpdate.length; i++) {\r\n        var option = toUpdate[i];\r\n        Selectpicker.DEFAULTS[option.name] = classNames[option.className];\r\n      }\r\n    }\r\n\r\n    var value;\r\n    var chain = this.each(function () {\r\n      var $this = $(this);\r\n      if ($this.is('select')) {\r\n        var data = $this.data('selectpicker'),\r\n            options = typeof _option == 'object' && _option;\r\n\r\n        if (!data) {\r\n          var dataAttributes = $this.data();\r\n\r\n          for (var dataAttr in dataAttributes) {\r\n            if (Object.prototype.hasOwnProperty.call(dataAttributes, dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\r\n              delete dataAttributes[dataAttr];\r\n            }\r\n          }\r\n\r\n          var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, dataAttributes, options);\r\n          config.template = $.extend({}, Selectpicker.DEFAULTS.template, ($.fn.selectpicker.defaults ? $.fn.selectpicker.defaults.template : {}), dataAttributes.template, options.template);\r\n          $this.data('selectpicker', (data = new Selectpicker(this, config)));\r\n        } else if (options) {\r\n          for (var i in options) {\r\n            if (Object.prototype.hasOwnProperty.call(options, i)) {\r\n              data.options[i] = options[i];\r\n            }\r\n          }\r\n        }\r\n\r\n        if (typeof _option == 'string') {\r\n          if (data[_option] instanceof Function) {\r\n            value = data[_option].apply(data, args);\r\n          } else {\r\n            value = data.options[_option];\r\n          }\r\n        }\r\n      }\r\n    });\r\n\r\n    if (typeof value !== 'undefined') {\r\n      // noinspection JSUnusedAssignment\r\n      return value;\r\n    } else {\r\n      return chain;\r\n    }\r\n  }\r\n\r\n  var old = $.fn.selectpicker;\r\n  $.fn.selectpicker = Plugin;\r\n  $.fn.selectpicker.Constructor = Selectpicker;\r\n\r\n  // SELECTPICKER NO CONFLICT\r\n  // ========================\r\n  $.fn.selectpicker.noConflict = function () {\r\n    $.fn.selectpicker = old;\r\n    return this;\r\n  };\r\n\r\n  // get Bootstrap's keydown event handler for either Bootstrap 4 or Bootstrap 3\r\n  function keydownHandler () {\r\n    if ($.fn.dropdown) {\r\n      // wait to define until function is called in case Bootstrap isn't loaded yet\r\n      var bootstrapKeydown = $.fn.dropdown.Constructor._dataApiKeydownHandler || $.fn.dropdown.Constructor.prototype.keydown;\r\n      return bootstrapKeydown.apply(this, arguments);\r\n    }\r\n  }\r\n\r\n  $(document)\r\n    .off('keydown.bs.dropdown.data-api')\r\n    .on('keydown.bs.dropdown.data-api', ':not(.bootstrap-select) > [data-toggle=\"dropdown\"]', keydownHandler)\r\n    .on('keydown.bs.dropdown.data-api', ':not(.bootstrap-select) > .dropdown-menu', keydownHandler)\r\n    .on('keydown' + EVENT_KEY, '.bootstrap-select [data-toggle=\"dropdown\"], .bootstrap-select [role=\"listbox\"], .bootstrap-select .bs-searchbox input', Selectpicker.prototype.keydown)\r\n    .on('focusin.modal', '.bootstrap-select [data-toggle=\"dropdown\"], .bootstrap-select [role=\"listbox\"], .bootstrap-select .bs-searchbox input', function (e) {\r\n      e.stopPropagation();\r\n    });\r\n\r\n  // SELECTPICKER DATA-API\r\n  // =====================\r\n  $(window).on('load' + EVENT_KEY + '.data-api', function () {\r\n    $('.selectpicker').each(function () {\r\n      var $selectpicker = $(this);\r\n      Plugin.call($selectpicker, $selectpicker.data());\r\n    })\r\n  });\r\n})(jQuery);\r\n\n/*\r\n * Translated default messages for bootstrap-select.\r\n * Locale: IT (Italian; italiano)\r\n * Region: IT (Italy; Italia)\r\n * Author: Michele Beltrame <mb@cattlegrid.info>\r\n */\r\n(function ($) {\r\n  $.fn.selectpicker.defaults = {\r\n    noneSelectedText: 'Nessuna selezione',\r\n    noneResultsText: 'Nessun risultato per {0}',\r\n    countSelectedText: function (numSelected, numTotal) {\r\n      return (numSelected == 1) ? 'Selezionato {0} di {1}' : 'Selezionati {0} di {1}';\r\n    },\r\n    maxOptionsText: ['Limite raggiunto ({n} {var} max)', 'Limite del gruppo raggiunto ({n} {var} max)', ['elementi', 'elemento']],\r\n    multipleSeparator: ', ',\r\n    selectAllText: 'Seleziona Tutto',\r\n    deselectAllText: 'Deseleziona Tutto'\r\n  };\r\n})(jQuery);\r\n\n/*!\n * @copyright Copyright (c) 2017 IcoMoon.io\n * @license   Licensed under MIT license\n *            See https://github.com/Keyamoon/svgxuse\n * @version   1.2.6\n */\n/*jslint browser: true */\n/*global XDomainRequest, MutationObserver, window */\n(function () {\n    \"use strict\";\n    if (typeof window !== \"undefined\" && window.addEventListener) {\n        var cache = Object.create(null); // holds xhr objects to prevent multiple requests\n        var checkUseElems;\n        var tid; // timeout id\n        var debouncedCheck = function () {\n            clearTimeout(tid);\n            tid = setTimeout(checkUseElems, 100);\n        };\n        var unobserveChanges = function () {\n            return;\n        };\n        var observeChanges = function () {\n            var observer;\n            window.addEventListener(\"resize\", debouncedCheck, false);\n            window.addEventListener(\"orientationchange\", debouncedCheck, false);\n            if (window.MutationObserver) {\n                observer = new MutationObserver(debouncedCheck);\n                observer.observe(document.documentElement, {\n                    childList: true,\n                    subtree: true,\n                    attributes: true\n                });\n                unobserveChanges = function () {\n                    try {\n                        observer.disconnect();\n                        window.removeEventListener(\"resize\", debouncedCheck, false);\n                        window.removeEventListener(\"orientationchange\", debouncedCheck, false);\n                    } catch (ignore) {}\n                };\n            } else {\n                document.documentElement.addEventListener(\"DOMSubtreeModified\", debouncedCheck, false);\n                unobserveChanges = function () {\n                    document.documentElement.removeEventListener(\"DOMSubtreeModified\", debouncedCheck, false);\n                    window.removeEventListener(\"resize\", debouncedCheck, false);\n                    window.removeEventListener(\"orientationchange\", debouncedCheck, false);\n                };\n            }\n        };\n        var createRequest = function (url) {\n            // In IE 9, cross origin requests can only be sent using XDomainRequest.\n            // XDomainRequest would fail if CORS headers are not set.\n            // Therefore, XDomainRequest should only be used with cross origin requests.\n            function getOrigin(loc) {\n                var a;\n                if (loc.protocol !== undefined) {\n                    a = loc;\n                } else {\n                    a = document.createElement(\"a\");\n                    a.href = loc;\n                }\n                return a.protocol.replace(/:/g, \"\") + a.host;\n            }\n            var Request;\n            var origin;\n            var origin2;\n            if (window.XMLHttpRequest) {\n                Request = new XMLHttpRequest();\n                origin = getOrigin(location);\n                origin2 = getOrigin(url);\n                if (Request.withCredentials === undefined && origin2 !== \"\" && origin2 !== origin) {\n                    Request = XDomainRequest || undefined;\n                } else {\n                    Request = XMLHttpRequest;\n                }\n            }\n            return Request;\n        };\n        var xlinkNS = \"http://www.w3.org/1999/xlink\";\n        checkUseElems = function () {\n            var base;\n            var bcr;\n            var fallback = \"\"; // optional fallback URL in case no base path to SVG file was given and no symbol definition was found.\n            var hash;\n            var href;\n            var i;\n            var inProgressCount = 0;\n            var isHidden;\n            var Request;\n            var url;\n            var uses;\n            var xhr;\n            function observeIfDone() {\n                // If done with making changes, start watching for chagnes in DOM again\n                inProgressCount -= 1;\n                if (inProgressCount === 0) { // if all xhrs were resolved\n                    unobserveChanges(); // make sure to remove old handlers\n                    observeChanges(); // watch for changes to DOM\n                }\n            }\n            function attrUpdateFunc(spec) {\n                return function () {\n                    if (cache[spec.base] !== true) {\n                        spec.useEl.setAttributeNS(xlinkNS, \"xlink:href\", \"#\" + spec.hash);\n                        if (spec.useEl.hasAttribute(\"href\")) {\n                            spec.useEl.setAttribute(\"href\", \"#\" + spec.hash);\n                        }\n                    }\n                };\n            }\n            function onloadFunc(xhr) {\n                return function () {\n                    var body = document.body;\n                    var x = document.createElement(\"x\");\n                    var svg;\n                    xhr.onload = null;\n                    x.innerHTML = xhr.responseText;\n                    svg = x.getElementsByTagName(\"svg\")[0];\n                    if (svg) {\n                        svg.setAttribute(\"aria-hidden\", \"true\");\n                        svg.style.position = \"absolute\";\n                        svg.style.width = 0;\n                        svg.style.height = 0;\n                        svg.style.overflow = \"hidden\";\n                        body.insertBefore(svg, body.firstChild);\n                    }\n                    observeIfDone();\n                };\n            }\n            function onErrorTimeout(xhr) {\n                return function () {\n                    xhr.onerror = null;\n                    xhr.ontimeout = null;\n                    observeIfDone();\n                };\n            }\n            unobserveChanges(); // stop watching for changes to DOM\n            // find all use elements\n            uses = document.getElementsByTagName(\"use\");\n            for (i = 0; i < uses.length; i += 1) {\n                try {\n                    bcr = uses[i].getBoundingClientRect();\n                } catch (ignore) {\n                    // failed to get bounding rectangle of the use element\n                    bcr = false;\n                }\n                href = uses[i].getAttribute(\"href\")\n                        || uses[i].getAttributeNS(xlinkNS, \"href\")\n                        || uses[i].getAttribute(\"xlink:href\");\n                if (href && href.split) {\n                    url = href.split(\"#\");\n                } else {\n                    url = [\"\", \"\"];\n                }\n                base = url[0];\n                hash = url[1];\n                isHidden = bcr && bcr.left === 0 && bcr.right === 0 && bcr.top === 0 && bcr.bottom === 0;\n                if (bcr && bcr.width === 0 && bcr.height === 0 && !isHidden) {\n                    // the use element is empty\n                    // if there is a reference to an external SVG, try to fetch it\n                    // use the optional fallback URL if there is no reference to an external SVG\n                    if (fallback && !base.length && hash && !document.getElementById(hash)) {\n                        base = fallback;\n                    }\n                    if (uses[i].hasAttribute(\"href\")) {\n                        uses[i].setAttributeNS(xlinkNS, \"xlink:href\", href);\n                    }\n                    if (base.length) {\n                        // schedule updating xlink:href\n                        xhr = cache[base];\n                        if (xhr !== true) {\n                            // true signifies that prepending the SVG was not required\n                            setTimeout(attrUpdateFunc({\n                                useEl: uses[i],\n                                base: base,\n                                hash: hash\n                            }), 0);\n                        }\n                        if (xhr === undefined) {\n                            Request = createRequest(base);\n                            if (Request !== undefined) {\n                                xhr = new Request();\n                                cache[base] = xhr;\n                                xhr.onload = onloadFunc(xhr);\n                                xhr.onerror = onErrorTimeout(xhr);\n                                xhr.ontimeout = onErrorTimeout(xhr);\n                                xhr.open(\"GET\", base);\n                                xhr.send();\n                                inProgressCount += 1;\n                            }\n                        }\n                    }\n                } else {\n                    if (!isHidden) {\n                        if (cache[base] === undefined) {\n                            // remember this URL if the use element was not empty and no request was sent\n                            cache[base] = true;\n                        } else if (cache[base].onload) {\n                            // if it turns out that prepending the SVG is not necessary,\n                            // abort the in-progress xhr.\n                            cache[base].abort();\n                            delete cache[base].onload;\n                            cache[base] = true;\n                        }\n                    } else if (base.length && cache[base]) {\n                        setTimeout(attrUpdateFunc({\n                            useEl: uses[i],\n                            base: base,\n                            hash: hash\n                        }), 0);\n                    }\n                }\n            }\n            uses = \"\";\n            inProgressCount += 1;\n            observeIfDone();\n        };\n        var winLoad;\n        winLoad = function () {\n            window.removeEventListener(\"load\", winLoad, false); // to prevent memory leaks\n            tid = setTimeout(checkUseElems, 0);\n        };\n        if (document.readyState !== \"complete\") {\n            // The load event fires when all resources have finished loading, which allows detecting whether SVG use elements are empty.\n            window.addEventListener(\"load\", winLoad, false);\n        } else {\n            // No need to add a listener if the document is already loaded, initialize immediately.\n            winLoad();\n        }\n    }\n}());\n\nif (!Array.from) {\n  Array.from = (function () {\n    var toStr = Object.prototype.toString\n    var isCallable = function (fn) {\n      return typeof fn === 'function' || toStr.call(fn) === '[object Function]'\n    }\n    var toInteger = function (value) {\n      var number = Number(value)\n      if (isNaN(number)) {\n        return 0\n      }\n      if (number === 0 || !isFinite(number)) {\n        return number\n      }\n      return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number))\n    }\n    var maxSafeInteger = Math.pow(2, 53) - 1\n    var toLength = function (value) {\n      var len = toInteger(value)\n      return Math.min(Math.max(len, 0), maxSafeInteger)\n    }\n\n    // The length property of the from method is 1.\n    return function from(arrayLike /*, mapFn, thisArg */) {\n      // 1. Let C be the this value.\n      var C = this\n\n      // 2. Let items be ToObject(arrayLike).\n      var items = Object(arrayLike)\n\n      // 3. ReturnIfAbrupt(items).\n      if (arrayLike == null) {\n        throw new TypeError('Array.from requires an array-like object - not null or undefined')\n      }\n\n      // 4. If mapfn is undefined, then let mapping be false.\n      var mapFn = arguments.length > 1 ? arguments[1] : void undefined\n      var T\n      if (typeof mapFn !== 'undefined') {\n        // 5. else\n        // 5. a If IsCallable(mapfn) is false, throw a TypeError exception.\n        if (!isCallable(mapFn)) {\n          throw new TypeError('Array.from: when provided, the second argument must be a function')\n        }\n\n        // 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined.\n        if (arguments.length > 2) {\n          T = arguments[2]\n        }\n      }\n\n      // 10. Let lenValue be Get(items, \"length\").\n      // 11. Let len be ToLength(lenValue).\n      var len = toLength(items.length)\n\n      // 13. If IsConstructor(C) is true, then\n      // 13. a. Let A be the result of calling the [[Construct]] internal method of C with an argument list containing the single item len.\n      // 14. a. Else, Let A be ArrayCreate(len).\n      var A = isCallable(C) ? Object(new C(len)) : new Array(len)\n\n      // 16. Let k be 0.\n      var k = 0\n      // 17. Repeat, while k < len… (also steps a - h)\n      var kValue\n      while (k < len) {\n        kValue = items[k]\n        if (mapFn) {\n          A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k)\n        } else {\n          A[k] = kValue\n        }\n        k += 1\n      }\n      // 18. Let putStatus be Put(A, \"length\", len, true).\n      A.length = len\n      // 20. Return A.\n      return A\n    }\n  })()\n}\n\n/*\nCircularLoader-v1.3.js\nDeveloped by http://technoplugin.com\nFor support or web development drop a mail at developer@technoplugin.com\n*/\n!(function (r) {\n  function t(r) {\n    return (r * Math.PI) / 180\n  }\n  function e(e, a, s) {\n    var o = r('#' + s + 'canvas')[0],\n      n = r('#' + s + 'canvas'),\n      i = o.getContext('2d'),\n      l = o.width / 2,\n      d = o.height / 2\n    i.beginPath(),\n      i.arc(l, d, r(n).attr('data-radius'), 0, 2 * Math.PI, !1),\n      (i.fillStyle = 'transparent'),\n      i.fill(),\n      (i.lineWidth = r(n).attr('data-width')),\n      (i.strokeStyle = r(n).attr('data-progressBarBackground')),\n      i.stroke(),\n      i.closePath(),\n      i.beginPath(),\n      i.arc(l, d, r(n).attr('data-radius'), -t(90), -t(90) + t((e / 100) * 360), !1),\n      (i.fillStyle = 'transparent'),\n      i.fill(),\n      (i.lineWidth = r(n).attr('data-width')),\n      (i.strokeStyle = r(n).attr('data-stroke')),\n      i.stroke(),\n      i.closePath(),\n      'true' == r(n).attr('data-text').toLocaleLowerCase() &&\n        r('#' + s + ' .clProg').val(a + ('true' == r(n).attr('data-percent').toLocaleLowerCase() ? '%' : ''))\n  }\n  r.fn.circularloader = function (t) {\n    function a() {\n      h.beginPath(),\n        h.arc(u, f, i, 0, 2 * Math.PI, !1),\n        (h.fillStyle = n.backgroundColor),\n        h.fill(),\n        (h.lineWidth = l),\n        (h.strokeStyle = n.progressBarBackground),\n        h.stroke(),\n        h.closePath(),\n        c > 0 && e(c, d, o)\n    }\n    var s = this[0],\n      o = s.id\n    if (0 == r('#' + o + 'canvas').length) {\n      var n = r.extend(\n          {\n            backgroundColor: '#ffffff',\n            fontColor: '#000000',\n            fontSize: '40px',\n            radius: 70,\n            progressBarBackground: '#cdcdcd',\n            progressBarColor: '#aaaaaa',\n            progressBarWidth: 25,\n            progressPercent: 0,\n            progressValue: 0,\n            showText: !0,\n            title: '',\n          },\n          t\n        ),\n        i = parseInt(n.radius),\n        l = parseInt(n.progressBarWidth),\n        d = parseInt(parseInt(n.progressValue) > 0 ? n.progressValue : n.progressPercent),\n        c = parseInt(n.progressPercent),\n        p =\n          'color:' +\n          n.fontColor +\n          ';font-size:' +\n          parseInt(n.fontSize) +\n          'px;width:' +\n          2 * (i + l) +\n          'px;vertical-align:middle;position:relative;background-color:transparent;border:0 none;transform:translateY(-48%);-webkit-transform: translateY(-48%);-ms-transform: translateY(-48%);height:' +\n          2 * (i + l) +\n          'px;margin-left:-' +\n          2 * (i + l) +\n          'px;text-align:center;padding:0;' +\n          (n.showText ? '' : 'display:none;')\n      r(\n        '<canvas data-width=\"' +\n          l +\n          '\" data-radius=\"' +\n          i +\n          '\" data-stroke=\"' +\n          n.progressBarColor +\n          '\" data-progressBarBackground=\"' +\n          n.progressBarBackground +\n          '\" data-backgroundColor=\"' +\n          n.backgroundColor +\n          '\" data-text=' +\n          n.showText +\n          ' data-percent=' +\n          (void 0 == t.progressValue ? !0 : !1) +\n          ' id=\"' +\n          o +\n          'canvas\" width=' +\n          2 * (i + l) +\n          ' height=' +\n          2 * (i + l) +\n          '></canvas>'\n      ).appendTo(s),\n        r('<input class=\"clProg\" style=\"' + p + '\" value=\"' + d + (void 0 == t.progressValue ? '%' : '') + '\" aria-hidden=\"true\"></input>').appendTo(s),\n        '' == n.title\n          ? r('#' + o).css('height', 2 * (i + l))\n          : (r('#' + o).css('height', 2 * (i + l) + 20),\n            r('#' + o + 'canvas').before(\"<div class='titleCircularLoader' style='height:19px;text-align:center;'>\" + n.title + '</div>'),\n            r('.titleCircularLoader').css('width', 2 * (i + l)))\n      {\n        var g = r('#' + o + 'canvas')[0],\n          h = g.getContext('2d'),\n          u = g.width / 2,\n          f = g.height / 2\n        r('#' + o + 'canvas').offset().left, r('#' + o + 'canvas').offset().top\n      }\n      a()\n    } else if (void 0 != t.progressPercent || void 0 != t.progressValue) {\n      ;(c = 0), (d = 0)\n      ;(c =\n        void 0 == t.progressPercent\n          ? parseInt(t.progressValue) > 100\n            ? 100\n            : parseInt(t.progressValue)\n          : parseInt(t.progressPercent) > 100\n          ? 100\n          : parseInt(t.progressPercent)),\n        (d = void 0 == t.progressValue ? (parseInt(t.progressPercent) > 100 ? 100 : parseInt(t.progressPercent)) : parseInt(t.progressValue)),\n        e(c, d, o)\n    }\n    return this\n  }\n})(jQuery)\n\n/**\n * Original code by Òscar Casajuana a.k.a. elboletaire <elboletaire at underave dot net>\n * @link https://github.com/elboletaire/password-strength-meter\n */\n;(function ($) {\n  'use strict'\n\n  var Password = function ($object, options) {\n    var defaults = {\n      shortPass: 'Password molto debole',\n      badPass: 'Password debole',\n      goodPass: 'Password sicura',\n      strongPass: 'Password molto sicura',\n      enterPass: 'Inserisci almeno 8 caratteri e una lettera maiuscola',\n      showText: true,\n      minimumLength: 4,\n    }\n\n    options = $.extend({}, defaults, options)\n\n    /**\n     * Returns strings based on the score given.\n     *\n     * @param int score Score base.\n     * @return string\n     */\n    function scoreText(score) {\n      if (score === -1) {\n        return options.shortPass\n      }\n\n      score = score < 0 ? 0 : score\n\n      if (score < 26) {\n        return options.shortPass\n      }\n      if (score < 51) {\n        return options.badPass\n      }\n      if (score < 76) {\n        return options.goodPass\n      }\n\n      return options.strongPass\n    }\n\n    function scoreColor(score) {\n      if (score === -1) {\n        return 'danger'\n      }\n      if (score === -2) {\n        return 'muted'\n      }\n\n      score = score < 0 ? 0 : score\n\n      if (score < 26) {\n        return 'danger'\n      }\n      if (score < 51) {\n        return 'warning'\n      }\n      if (score < 76) {\n        return 'success'\n      }\n\n      return 'success'\n    }\n\n    /**\n     * Returns a value between -1 and 100 to score\n     * the user's password.\n     *\n     * @param  string password The password to be checked.\n     * @return int\n     */\n    function calculateScore(password) {\n      var score = 0\n\n      // empty password\n      if (password.trim().length === 0) {\n        return -2\n      }\n\n      // password < options.minimumLength\n      if (password.length < options.minimumLength) {\n        return -1\n      }\n\n      // password length\n      score += password.length * 4\n      score += checkRepetition(1, password).length - password.length\n      score += checkRepetition(2, password).length - password.length\n      score += checkRepetition(3, password).length - password.length\n      score += checkRepetition(4, password).length - password.length\n\n      // password has 3 numbers\n      if (password.match(/(.*[0-9].*[0-9].*[0-9])/)) {\n        score += 5\n      }\n\n      // password has at least 2 sybols\n      var symbols = '.*[!,@,#,$,%,^,&,*,?,_,~]'\n      symbols = new RegExp('(' + symbols + symbols + ')')\n      if (password.match(symbols)) {\n        score += 5\n      }\n\n      // password has Upper and Lower chars\n      if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) {\n        score += 10\n      }\n\n      // password has number and chars\n      if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/)) {\n        score += 15\n      }\n\n      // password has number and symbol\n      if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([0-9])/)) {\n        score += 15\n      }\n\n      // password has char and symbol\n      if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([a-zA-Z])/)) {\n        score += 15\n      }\n\n      // password is just numbers or chars\n      if (password.match(/^\\w+$/) || password.match(/^\\d+$/)) {\n        score -= 10\n      }\n\n      if (score > 100) {\n        score = 100\n      }\n\n      if (score < 0) {\n        score = 0\n      }\n\n      return score\n    }\n\n    /**\n     * Checks for repetition of characters in\n     * a string\n     *\n     * @param int rLen Repetition length.\n     * @param string str The string to be checked.\n     * @return string\n     */\n    function checkRepetition(rLen, str) {\n      var res = '',\n        repeated = false\n      for (var i = 0; i < str.length; i++) {\n        repeated = true\n        for (var j = 0; j < rLen && j + i + rLen < str.length; j++) {\n          repeated = repeated && str.charAt(j + i) === str.charAt(j + i + rLen)\n        }\n        if (j < rLen) {\n          repeated = false\n        }\n        if (repeated) {\n          i += rLen - 1\n          repeated = false\n        } else {\n          res += str.charAt(i)\n        }\n      }\n      return res\n    }\n\n    /**\n     * Initializes the plugin creating and binding the\n     * required layers and events.\n     *\n     * @return void\n     */\n    function init() {\n      var $text = options.showText\n\n      var $graybar = $('<div>').addClass('password-meter progress rounded-0 position-absolute')\n      $graybar.append(`<div class=\"row position-absolute w-100 m-0\">\n        <div class=\"col-3 border-left border-right border-white\"></div>\n        <div class=\"col-3 border-left border-right border-white\"></div>\n        <div class=\"col-3 border-left border-right border-white\"></div>\n        <div class=\"col-3 border-left border-right border-white\"></div>\n      </div>`)\n      var $colorbar = $('<div>').attr({\n        class: 'progress-bar',\n        role: 'progressbar',\n        'aria-valuenow': '0',\n        'aria-valuemin': '0',\n        'aria-valuemax': '100',\n      })\n      var $insert = $('<div>')\n        .attr({\n          class: 'password-strength-meter',\n        })\n        .append($graybar.append($colorbar))\n\n      if (options.showText) {\n        $text = $('<small>').addClass('form-text text-muted').html(options.enterPass)\n        $insert.prepend($text)\n      }\n\n      $object.after($insert)\n\n      $object.keyup(function () {\n        var score = calculateScore($object.val())\n        $object.trigger('password.score', [score])\n        var perc = score < 0 ? 0 : score\n        $colorbar.removeClass(function (index, className) {\n          return (className.match(/(^|\\s)bg-\\S+/g) || []).join(' ')\n        })\n        $colorbar.addClass('bg-' + scoreColor(score))\n        $colorbar.css({\n          width: perc + '%',\n        })\n        $colorbar.attr('aria-valuenow', perc)\n\n        if (options.showText) {\n          var text = scoreText(score)\n          if (!$object.val().length && score <= 0) {\n            text = options.enterPass\n          }\n\n          if ($text.html() !== $('<div>').html(text).html()) {\n            $text.html(text)\n            $text.removeClass(function (index, className) {\n              return (className.match(/(^|\\s)text-\\S+/g) || []).join(' ')\n            })\n            $text.addClass('text-' + scoreColor(score))\n            $object.trigger('password.text', [text, score])\n          }\n        }\n      })\n\n      return this\n    }\n\n    return init.call(this)\n  }\n\n  // Bind to jquery\n  $.fn.password = function () {\n    return this.each(function () {\n      new Password($(this), $(this).data())\n    })\n  }\n})(jQuery)\n\n// Gestione Password Caps Lock\nfunction showCapsLockMsg($input) {\n  $('.password-caps').remove()\n  $input.parents('.form-group').append('<small class=\"password-caps form-text text-warning position-absolute bg-white w-100\">CAPS LOCK inserito</small>')\n}\n\n$(function () {\n  var isShiftPressed = false\n  var isCapsOn = null\n\n  $('.input-password')\n    .on('keydown', function (e) {\n      var keyCode = e.keyCode ? e.keyCode : e.which\n      if (keyCode == 16) {\n        isShiftPressed = true\n      }\n    })\n    .on('keyup', function (e) {\n      var keyCode = e.keyCode ? e.keyCode : e.which\n      if (keyCode == 16) {\n        isShiftPressed = false\n      }\n      if (keyCode == 20) {\n        if (isCapsOn) {\n          isCapsOn = false\n          $('.password-caps').remove()\n        } else {\n          isCapsOn = true\n          $('input:focus').each(function () {\n            showCapsLockMsg($(this))\n          })\n        }\n      }\n    })\n    .on('keypress', function (e) {\n      var keyCode = e.keyCode ? e.keyCode : e.which\n      // i keyCode dal 65 al 90 identificano i caratteri alfabetici maiuscoli da \"A\" a \"Z\"\n      if (keyCode >= 65 && keyCode <= 90 && !isShiftPressed) {\n        isCapsOn = true\n        showCapsLockMsg($(this))\n      }\n    })\n\n  $('.input-password-strength-meter').password()\n\n  $('.password-icon').on('click', function () {\n    $(this).find('[class^=\"password-icon\"]').toggleClass('d-none')\n    var input = $(this).siblings('.input-password')\n    var inputType = input.attr('type') === 'password' ? 'text' : 'password'\n    input.attr('type', inputType)\n  })\n})\n\n;(function () {\n  'use strict'\n\n  if (typeof Date.dp_locales === 'undefined') {\n    Date.dp_locales = {\n      texts: {\n        buttonTitle: 'Scegli la data ...',\n        buttonLabel: 'Fare clic o premere il tasto Invio o la barra spaziatrice per aprire il calendario',\n        prevButtonLabel: 'Vai al mese precedente',\n        nextButtonLabel: 'Vai al mese successivo',\n        closeButtonTitle: 'Chiudere',\n        closeButtonLabel: 'Chiudere il calendario',\n        prevMonthButtonLabel: \"Vai all'anno precedente\",\n        prevYearButtonLabel: \"Vai a vent'anni precedenti\",\n        nextMonthButtonLabel: 'Vai al prossimo anno',\n        nextYearButtonLabel: 'Vai ai prossimi 20 anni',\n        changeMonthButtonLabel: 'Fare clic o premere il tasto Invio o la barra spaziatrice per cambiare il mese',\n        changeYearButtonLabel: \"Fare clic o premere il tasto Invio o la barra spaziatrice per cambiare l'anno\",\n        changeRangeButtonLabel: 'Fare clic o premere il tasto Invio o la barra spaziatrice per andare ai prossimi 20 anni',\n        calendarHelp:\n          \"- Freccia e Freccia giù - va allo stesso giorno della settimana in settimana precedente o successiva, rispettivamente. Se viene raggiunta la fine del mese, continua nel mese precedente o successivo a seconda dei casi.\\r\\n- Freccia Sinistra e Freccia destra - avanza un giorno all'altro, anche in un continuum. Visivamente fuoco viene spostato da un giorno all'altro e avvolge da riga a riga nella griglia di giorni.\\r\\n- Control + Pagina Su - Passa alla stessa data dell'anno precedente.\\r\\n- Control + Pagina giù - Passa alla stessa data nel prossimo anno.\\r\\n- Home - Passa al primo giorno del mese in corso.\\r\\n- End - Passa l'ultimo giorno del mese corrente.\\r\\n- Pagina Su - Passa alla stessa data del mese precedente.\\r\\n- Pagina giù - Passa alla stessa data del mese successivo.\\r\\n- Invio o Espace - chiude il calendario e la data selezionata viene visualizzata nella casella di testo associato.\\r\\n- Escape - chiude il calendario senza alcuna azione.\",\n      },\n      directionality: 'LTR',\n      month_names: ['gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre'],\n      month_names_abbreviated: ['gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic'],\n      month_names_narrow: ['G', 'F', 'M', 'A', 'M', 'G', 'L', 'A', 'S', 'O', 'N', 'D'],\n      day_names: ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato'],\n      day_names_abbreviated: ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'],\n      day_names_short: ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'],\n      day_names_narrow: ['D', 'L', 'M', 'M', 'G', 'V', 'S'],\n      day_periods: {\n        am: 'AM',\n        noon: 'mezzogiorno',\n        pm: 'PM',\n      },\n      day_periods_abbreviated: {\n        am: 'AM',\n        noon: 'mezzogiorno',\n        pm: 'PM',\n      },\n      day_periods_narrow: {\n        am: 'm.',\n        noon: 'n',\n        pm: 'p.',\n      },\n      quarter_names: ['1º trimestre', '2º trimestre', '3º trimestre', '4º trimestre'],\n      quarter_names_abbreviated: ['T1', 'T2', 'T3', 'T4'],\n      quarter_names_narrow: ['1', '2', '3', '4'],\n      era_names: ['a.C.', 'd.C.'],\n      era_names_abbreviated: ['aC', 'dC'],\n      era_names_narrow: ['aC', 'dC'],\n      full_format: 'EEEE d MMMM y',\n      long_format: 'd MMMM y',\n      medium_format: 'dd MMM y',\n      short_format: 'dd/MM/yy',\n      firstday_of_week: 1,\n    }\n  }\n})()\n\n/*!\n * Accessible Datepicker v2.1.10\n * Copyright 2015-2017 Eureka2, Jacques Archimède.\n * Based on the example of the Open AJAX Alliance Accessibility Tools Task Force : http://www.oaa-accessibility.org/examplep/datepicker1/\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * Inspired by :\n * http://wet-boew.github.io/wet-boew/demos/datepicker/datepicker-fr.html\n * http://eternicode.github.io/bootstrap-datepicker\n */\n\n/**\n *\tDescription:\n *\t===========\n *\tThis DatePicker widget allows the user to select a date.\n *\tThe DatePicker shows one month at least.\n *\n *\tThe calendar portion of the date picker follows a table structure\n *\twhere days of the week and calendar day numbers are layed out in HTML table cells where WAI-ARIA semantics for a grid are applied.\n *\tThis provides context so an assistive technology can render the day of the week;\n *\tits corresponding numeric calendar day, and week number if necessary.\n *\n *\tThe calendar portion can be displayed in a numbers of ways, including as a popup associated with another widget,\n *\tor as a static region of a page.\n *\n * \tThis component complies with the recommendations of the guide http://www.w3.org/TR/wai-aria-practices/#datepicker of W3C, namely :\n *\n *\tKeyboard Interaction:\n *\t=====================\n *\n *\tKeyboard navigation on days that are not included the currently displayed month should move to the month automatically and lead to the day in the next or previous month.\n *\n *\t\t- Tab - Like other widgets, the date picker widget receives focus by tabbing into it. Once focus is received, focus is repositioned on today's date in a grid of days and weeks. A second tab will take the user out of the date picker widget. Focus initially is placed on today's date.\n *\t\t- Shift+Tab - reverses the direction of the tab order. Once in the widget, a Shift+Tab will take the user to the previous focusable element in the tab order.\n *\t\t- Up Arrow and Down Arrow - goes to the same day of the week in the previous or next week respectively. If the user advances past the end of the month they continue into the next or previous month as appropriate.\n *\t\t- Left Arrow and Right Arrow - advances one day to the next, also in a continuum. Visually focus is moved from day to day and wraps from row to row in a grid of days and weeks.\n *\t\t- Alt+Page Up - Moves to the same date in the previous year.\n *\t\t- Alt+Page Down - Moves to the same date in the next year.\n *\t\t- Space -\n *\t\t\tSingleton Mode: acts as a toggle either selecting or deselecting the date.\n *\t\t\tContiguous Mode: Similar to selecting a range of text. Space selects the first date. Shift+Arrows add to the selection. Pressing Space again deselects the previous selections and selects the current focused date.\n *\t\t- Home - Moves to the first day of the current month.\n *\t\t- End - Moves to the last day of the current month.\n *\t\t- Page Up - Moves to the same date in the previous month.\n *\t\t- Page Down - Moves to the same date in the next month.\n *\t\t- Enter -\n *\t\t\tIf the the calendar is a popup attached to some other widget (e.g., a text field), then Enter dismisses the popup, and the selected date(s) are shown in the associated widget.\n *\t\t\tIf the calendar is a static region on the page, then Enter confirms the selected date(s).\n *\t\t- Escape - in the case of a popup date picker, closes the widget without any action.\n *\n *\n *\tWAI-ARIA Roles, States, and Properties:\n *\t======================================\n *\n *\t\tThe current month has a label representing the month and year. It is advisable to use a role heading but is not essential. This \"label\" should have a unique ID.\n *\t\tIf the author would like to ensure that a label is announced by a screen reader, as the label changes, include live region properties with the label element: aria-live=\"assertive\" and aria-atomic=\"true\".\n *\t\tThe container for the day of week headers and numeric days of the week has a role of grid.\n *\t\tThe grid has an aria-labelledby property with a value equivalent to the id of the label for the grid.\n *\t\tEach name for the day of the week has a role columnheader and is not navigable via the keyboard.\n *\t\tEach numeric day of the week has the role gridcell.\n *\t\tWhen a day is selected its aria-selected is set to true, otherwise it is set to false or removed.\n *\t\tChanges in aria states, identified here, as well as focus, are clearly styled to show the user where their point of regard is and what days are selected.\n *\n *\tWhen the datepicker is active a calender day of the week always has focus.\n *\tThis can be achieved by setting the tabindex on that day as appropriate and then using script to give it focus.\n *\tThe grid container set aria-activedescendant to the id of the currently focused gridcell.\n *\n */\n\n;(function () {\n  'use strict'\n  if (typeof Date.dp_locales === 'undefined') {\n    Date.dp_locales = {\n      texts: {\n        buttonTitle: 'Select date ...',\n        buttonLabel: 'Click or press the Enter key or the spacebar to open the calendar',\n        prevButtonLabel: 'Go to previous month',\n        prevMonthButtonLabel: 'Go to the previous year',\n        prevYearButtonLabel: 'Go to the previous twenty years',\n        nextButtonLabel: 'Go to next month',\n        nextMonthButtonLabel: 'Go to the next year',\n        nextYearButtonLabel: 'Go to the next twenty years',\n        changeMonthButtonLabel: 'Click or press the Enter key or the spacebar to change the month',\n        changeYearButtonLabel: 'Click or press the Enter key or the spacebar to change the year',\n        changeRangeButtonLabel: 'Click or press the Enter key or the spacebar to go to the next twenty years',\n        closeButtonTitle: 'Close',\n        closeButtonLabel: 'Close the calendar',\n        calendarHelp:\n          '- Up Arrow and Down Arrow - goes to the same day of the week in the previous or next week respectively. If the end of the month is reached, continues into the next or previous month as appropriate.\\r\\n- Left Arrow and Right Arrow - advances one day to the next, also in a continuum. Visually focus is moved from day to day and wraps from row to row in the grid of days.\\r\\n- Control+Page Up - Moves to the same date in the previous year.\\r\\n- Control+Page Down - Moves to the same date in the next year.\\r\\n- Home - Moves to the first day of the current month.\\r\\n- End - Moves to the last day of the current month.\\r\\n- Page Up - Moves to the same date in the previous month.\\r\\n- Page Down - Moves to the same date in the next month.\\r\\n- Enter or Espace - closes the calendar, and the selected date is shown in the associated text box.\\r\\n- Escape - closes the calendar without any action.',\n      },\n      directionality: 'LTR',\n      month_names: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n      month_names_abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n      month_names_narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n      day_names: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n      day_names_abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n      day_names_short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n      day_names_narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n      day_periods: {\n        am: 'AM',\n        noon: 'noon',\n        pm: 'PM',\n      },\n      day_periods_abbreviated: {\n        am: 'AM',\n        noon: 'noon',\n        pm: 'PM',\n      },\n      day_periods_narrow: {\n        am: 'a',\n        noon: 'n',\n        pm: 'p',\n      },\n      quarter_names: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'],\n      quarter_names_abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n      quarter_names_narrow: ['1', '2', '3', '4'],\n      era_names: ['Before Christ', 'Anno Domini'],\n      era_names_abbreviated: ['BC', 'AD'],\n      era_names_narrow: ['B', 'A'],\n      full_format: 'EEEE, MMMM d, y',\n      long_format: 'MMMM d, y',\n      medium_format: 'MMM d, y',\n      short_format: 'M/d/yy',\n      firstday_of_week: 0,\n    }\n  }\n})()\n;(function (factory) {\n  if (typeof define === 'function' && define.amd) {\n    define(['jquery'], factory)\n  } else if (typeof exports === 'object') {\n    factory(require('jquery'))\n  } else {\n    if (typeof jQuery === 'undefined') {\n      throw new Error(\"Datepicker's JavaScript requires jQuery\")\n    }\n    factory(jQuery)\n  }\n  /* eslint-disable no-shadow-restricted-names */\n})(function ($, undefined) {\n  'use strict'\n\n  var datepickerButton = [\n    '<a class=\"datepicker-button input-group-addon btn\" role=\"button\" aria-haspopup=\"true\" tabindex=\"0\" aria-labelledby=\"datepicker-bn-open-label-CALENDARID\">',\n    '\t<svg class=\"icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><title>it-calendar</title><g><path d=\"M21,9V8a3,3,0,0,0-3-3h-.55V4a1,1,0,0,0-2,0V5h-7V4a1,1,0,1,0-2,0V5H6A3,3,0,0,0,3,8V18a3,3,0,0,0,3,3H18a3,3,0,0,0,3-3V9ZM15.46,5h2V6a1,1,0,1,1-2,0Zm-9,0h2V6a1,1,0,1,1-2,0ZM20,18a2,2,0,0,1-2,2H6a2,2,0,0,1-2-2V10H20Z\"/></g></svg>',\n    '</a>',\n  ]\n  var datepickerCalendar = [\n    '<div class=\"datepicker-calendar\" id=\"datepicker-calendar-CALENDARID\" aria-hidden=\"false\">',\n    '\t<div class=\"datepicker-month-wrap\">',\n    '\t\t<div class=\"datepicker-month-fast-next pull-right\" role=\"button\" aria-labelledby=\"datepicker-bn-fast-next-label-CALENDARID\" tabindex=\"0\"><span class=\"icon-right\"></span><span class=\"icon-right\"></span></div>',\n    '\t\t<div class=\"datepicker-month-next pull-right\" role=\"button\" aria-labelledby=\"datepicker-bn-next-label-CALENDARID\" tabindex=\"0\"><span class=\"icon-right\"></span></div>',\n    '\t\t<div class=\"datepicker-month-fast-prev pull-left\" role=\"button\" aria-labelledby=\"datepicker-bn-fast-prev-label-CALENDARID\" tabindex=\"0\"><span class=\"icon-left\"></span><span class=\"icon-left\"></span></div>',\n    '\t\t<div class=\"datepicker-month-prev pull-left\" role=\"button\" aria-labelledby=\"datepicker-bn-prev-label-CALENDARID\" tabindex=\"0\"><span class=\"icon-left\"></span></div>',\n    '\t\t<div id=\"datepicker-month-CALENDARID\" class=\"datepicker-month\" tabindex=\"0\" role=\"heading\" aria-live=\"assertive\" aria-atomic=\"true\" title=\"Click or press the Enter key or the spacebar to change the month\">July 2015</div>',\n    '\t</div>',\n    '\t<table class=\"datepicker-grid\" role=\"grid\" aria-readonly=\"true\" aria-activedescendant=\"datepicker-err-msg-CALENDARID\" aria-labelledby=\"datepicker-month-CALENDARID\" tabindex=\"0\">',\n    '\t\t<thead>',\n    '\t\t\t<tr class=\"datepicker-weekdays\" role=\"row\">',\n    '\t\t\t\t<th scope=\"col\" id=\"day0-header-CALENDARID\" class=\"datepicker-day\" role=\"columnheader\" aria-label=\"Sunday\"><abbr title=\"Sunday\">Su</abbr></th>',\n    '\t\t\t\t<th scope=\"col\" id=\"day1-header-CALENDARID\" class=\"datepicker-day\" role=\"columnheader\" aria-label=\"Monday\"><abbr title=\"Monday\">Mo</abbr></th>',\n    '\t\t\t\t<th scope=\"col\" id=\"day2-header-CALENDARID\" class=\"datepicker-day\" role=\"columnheader\" aria-label=\"Tuesday\"><abbr title=\"Tuesday\">Tu</abbr></th>',\n    '\t\t\t\t<th scope=\"col\" id=\"day3-header-CALENDARID\" class=\"datepicker-day\" role=\"columnheader\" aria-label=\"Wednesday\"><abbr title=\"Wednesday\">We</abbr></th>',\n    '\t\t\t\t<th scope=\"col\" id=\"day4-header-CALENDARID\" class=\"datepicker-day\" role=\"columnheader\" aria-label=\"Thursday\"><abbr title=\"Thursday\">Th</abbr></th>',\n    '\t\t\t\t<th scope=\"col\" id=\"day5-header-CALENDARID\" class=\"datepicker-day\" role=\"columnheader\" aria-label=\"Friday\"><abbr title=\"Friday\">Fr</abbr></th>',\n    '\t\t\t\t<th scope=\"col\" id=\"day6-header-CALENDARID\" class=\"datepicker-day\" role=\"columnheader\" aria-label=\"Saturday\"><abbr title=\"Saturday\">Sa</abbr></th>',\n    '\t\t\t</tr>',\n    '\t\t</thead>',\n    '\t\t<tbody>',\n    '\t\t\t<tr>',\n    '\t\t\t\t<td id=\"datepicker-err-msg-CALENDARID\" colspan=\"7\"><span>Javascript must be enabled</span></td>',\n    '\t\t\t</tr>',\n    '\t\t</tbody>',\n    '\t</table>',\n    '\t<div class=\"datepicker-close-wrap\">',\n    '\t\t<button class=\"datepicker-close\" id=\"datepicker-close-CALENDARID\" aria-labelledby=\"datepicker-bn-close-label-CALENDARID\">Close</button>',\n    '\t</div>',\n    '\t<div id=\"datepicker-bn-open-label-CALENDARID\" class=\"datepicker-bn-open-label offscreen\">Click or press the Enter key or the spacebar to open the calendar</div>',\n    '\t<div id=\"datepicker-bn-prev-label-CALENDARID\" class=\"datepicker-bn-prev-label offscreen\">Go to previous month</div>',\n    '\t<div id=\"datepicker-bn-next-label-CALENDARID\" class=\"datepicker-bn-next-label offscreen\">Go to next month</div>',\n    '\t<div id=\"datepicker-bn-fast-prev-label-CALENDARID\" class=\"datepicker-bn-fast-prev-label offscreen\">Go to previous year</div>',\n    '\t<div id=\"datepicker-bn-fast-next-label-CALENDARID\" class=\"datepicker-bn-fast-next-label offscreen\">Go to next year</div>',\n    '\t<div id=\"datepicker-bn-close-label-CALENDARID\" class=\"datepicker-bn-close-label offscreen\">Close the date picker</div>',\n    '</div>',\n  ]\n\n  var Datepicker = function (target, options) {\n    var self = this\n    this.$target = $(target) // textbox that will receive the selected date string and focus (if modal)\n    this.options = $.extend({}, Datepicker.DEFAULTS, options)\n    this.locales = Date.dp_locales\n    this.startview(this.options.startView)\n    if (typeof this.options.inputFormat === 'string') {\n      this.options.inputFormat = [this.options.inputFormat]\n    }\n    if (!$.isArray(this.options.datesDisabled)) {\n      this.options.datesDisabled = [this.options.datesDisabled]\n    }\n    $.each(this.options.datesDisabled, function (i, v) {\n      if (typeof v === 'string') {\n        var date = self.parseDate(v)\n        if (date === null) {\n          self.options.datesDisabled[i] = null\n        } else {\n          self.options.datesDisabled[i] = self.format(date)\n        }\n      } else if (v instanceof Date && !isNaN(v.valueOf())) {\n        self.options.datesDisabled[i] = self.format(v)\n      } else {\n        self.options.datesDisabled[i] = null\n      }\n    })\n    if (this.options.min != null) {\n      this.options.min = this.parseDate(this.options.min)\n    } else if (this.$target.attr('min')) {\n      this.options.min = this.parseDate(this.$target.attr('min'))\n    }\n    if (this.options.max != null) {\n      this.options.max = this.parseDate(this.options.max)\n    } else if (this.$target.attr('max')) {\n      this.options.max = this.parseDate(this.$target.attr('max'))\n    }\n    if (typeof this.options.previous === 'string') {\n      this.options.previous = $(this.options.previous)\n    } else if (!(this.options.previous instanceof jQuery)) {\n      this.options.previous = null\n    }\n    if (typeof this.options.next === 'string') {\n      this.options.next = $(this.options.next)\n    } else if (!(this.options.next instanceof jQuery)) {\n      this.options.next = null\n    }\n    this.id = this.$target.attr('id') || 'datepicker-' + Math.floor(Math.random() * 100000)\n    var calendar = datepickerCalendar.join('')\n    calendar = calendar.replace(/CALENDARID/g, this.id + '')\n\n    // complete the target textbox if any\n    if (this.$target.parent('.input-group').length == 0) {\n      this.$target.wrap('<div class=\"input-group\"></div>')\n    }\n    this.$label = this.$target.parents().find('label[for=' + this.id + ']')\n    this.$group = this.$target.parent('.input-group')\n    this.$target.attr('aria-autocomplete', 'none')\n    this.$target.css('min-width', '7em')\n    this.$target.addClass('form-control')\n\n    if (!this.$target.attr('placeholder')) {\n      this.$target.attr('placeholder', this.options.inputFormat[0])\n    }\n\n    var button = datepickerButton.join('')\n    button = button.replace(/CALENDARID/g, this.id + '')\n    this.$button = $(button)\n    this.$button.addClass(this.options.theme)\n    this.$calendar = $(calendar)\n    this.$calendar.addClass(this.options.theme)\n    this.$target.after(this.$button)\n\n    // be sure parent of the calendar is positionned  to calculate the position of the calendar\n    if (this.$calendar.parent().css('position') === 'static') {\n      this.$calendar.parent().css('position', 'relative')\n    }\n    this.$calendar.find('.datepicker-bn-open-label').html(this.options.buttonLabel)\n    if (this.$target.attr('id')) {\n      this.$calendar.attr('aria-controls', this.$target.attr('id'))\n    }\n    this.$button.find('span').attr('title', this.options.buttonTitle)\n    this.$calendar.css('left', this.$target.parent().position().left + 'px')\n    this.$monthObj = this.$calendar.find('.datepicker-month')\n    this.$prev = this.$calendar.find('.datepicker-month-prev')\n    this.$next = this.$calendar.find('.datepicker-month-next')\n    this.$fastprev = this.$calendar.find('.datepicker-month-fast-prev')\n    this.$fastnext = this.$calendar.find('.datepicker-month-fast-next')\n    this.$grid = this.$calendar.find('.datepicker-grid')\n    if (this.locales.directionality === 'RTL') {\n      this.$grid.addClass('rtl')\n    }\n    this.drawCalendarHeader()\n    if (this.options.inline == false && this.options.modal == true) {\n      this.$close = this.$calendar.find('.datepicker-close')\n      this.$close.html(this.options.closeButtonTitle).attr('title', this.options.closeButtonLabel)\n      this.$calendar.find('.datepicker-bn-close-label').html(this.options.closeButtonLabel)\n    } else {\n      this.hideObject(this.$calendar.find('.datepicker-close-wrap'))\n      this.hideObject(this.$calendar.find('.datepicker-bn-close-label'))\n    }\n\n    if (this.options.inline != false) {\n      this.hideObject(this.$button)\n      var $container = typeof this.options.inline === 'string' ? $('#' + this.options.inline) : this.options.inline\n      $container.append(this.$calendar)\n      this.$calendar.css({ position: 'relative', left: '0px' })\n      this.initializeDate()\n    } else {\n      this.$calendar.css({ display: 'none' })\n      this.$target.parent().after(this.$calendar)\n      this.hide(!this.options.gainFocusOnConstruction)\n    }\n\n    this.keys = {\n      tab: 9,\n      enter: 13,\n      esc: 27,\n      space: 32,\n      pageup: 33,\n      pagedown: 34,\n      end: 35,\n      home: 36,\n      left: 37,\n      up: 38,\n      right: 39,\n      down: 40,\n    }\n\n    this.bindHandlers()\n    this.$button.click(function (e) {\n      if (!$(this).hasClass('disabled')) {\n        if (self.$calendar.attr('aria-hidden') === 'true') {\n          self.initializeDate()\n          self.show()\n        } else {\n          self.hide()\n        }\n        self.selectGridCell(self.$grid.attr('aria-activedescendant'))\n      }\n      e.stopPropagation()\n      return false\n    })\n    this.$button.keydown(function (e) {\n      var ev = e || event\n      if (ev.keyCode == self.keys.enter || ev.keyCode == self.keys.space) {\n        $(this).trigger('click')\n        return false\n      }\n    })\n    this.$calendar.on('blur', function () {\n      if (self.$calendar.attr('aria-hidden') === 'false') {\n        self.hide()\n      }\n    })\n  }\n\n  Datepicker.VERSION = '2.1.10'\n\n  Datepicker.DEFAULTS = {\n    firstDayOfWeek: Date.dp_locales.firstday_of_week, // Determines the first column of the calendar grid\n    weekDayFormat: 'short', // Display format of the weekday names - values are 'short' or 'narrow'\n    startView: 0, // Initial calendar - values are 0 or 'days', 1 or 'months', 2 or 'years'\n    daysOfWeekDisabled: [],\n    datesDisabled: [],\n    isDateDisabled: null,\n    isMonthDisabled: null,\n    isYearDisabled: null,\n    inputFormat: [Date.dp_locales.short_format],\n    outputFormat: Date.dp_locales.short_format,\n    titleFormat: Date.dp_locales.full_format,\n    buttonTitle: Date.dp_locales.texts.buttonTitle,\n    buttonLabel: Date.dp_locales.texts.buttonLabel,\n    prevButtonLabel: Date.dp_locales.texts.prevButtonLabel,\n    prevMonthButtonLabel: Date.dp_locales.texts.prevMonthButtonLabel,\n    prevYearButtonLabel: Date.dp_locales.texts.prevYearButtonLabel,\n    nextButtonLabel: Date.dp_locales.texts.nextButtonLabel,\n    nextMonthButtonLabel: Date.dp_locales.texts.nextMonthButtonLabel,\n    nextYearButtonLabel: Date.dp_locales.texts.nextYearButtonLabel,\n    changeMonthButtonLabel: Date.dp_locales.texts.changeMonthButtonLabel,\n    changeYearButtonLabel: Date.dp_locales.texts.changeYearButtonLabel,\n    changeRangeButtonLabel: Date.dp_locales.texts.changeRangeButtonLabel,\n    closeButtonTitle: Date.dp_locales.texts.closeButtonTitle,\n    closeButtonLabel: Date.dp_locales.texts.closeButtonLabel,\n    onUpdate: function () {},\n    previous: null,\n    next: null,\n    theme: 'default',\n    modal: false,\n    inline: false,\n    gainFocusOnConstruction: false,\n    min: null,\n    max: null,\n  }\n\n  /**\n   *\tinitializeDate() is a member function to initialize the Datepicker date with the content of the target textbox\n   *\n   *\t@return N/A\n   *\n   */\n  Datepicker.prototype.initializeDate = function () {\n    var val = this.$target.val()\n    var date = val === '' ? new Date() : this.parseDate(val)\n    this.setDate(date, true)\n  } // end initializeDate()\n\n  /**\n   * getDate() is a member function to retrieve the current Datepicker date.\n   * @return the Date object\n   */\n  Datepicker.prototype.getDate = function () {\n    var val = this.$target.val()\n    var date = val === '' ? new Date() : this.parseDate(val)\n    return date\n  } // end getDate()\n\n  /**\n   *\tsetDate() is a member function to set the Datepicker date with the content of newDate\n   *\n   *\t@param\t(newDate Date) the new value of the Datepicker date.\n   *\t@return N/A\n   *\n   */\n  Datepicker.prototype.setDate = function (newDate, init) {\n    this.dateObj = newDate\n    init = typeof init === 'undefined' ? false : init\n    if (this.dateObj == null) {\n      this.$target.attr('aria-invalid', true)\n      this.$target.parents('.form-group').addClass('has-error')\n      this.dateObj = new Date()\n      this.dateObj.setHours(0, 0, 0, 0)\n    }\n    if (this.options.min != null && this.dateObj < this.options.min) {\n      this.$target.attr('aria-invalid', true)\n      this.$target.parents('.form-group').addClass('has-error')\n      this.dateObj = this.options.min\n    } else if (this.options.max != null && this.dateObj > this.options.max) {\n      this.$target.attr('aria-invalid', true)\n      this.$target.parents('.form-group').addClass('has-error')\n      this.dateObj = this.options.max\n    }\n    if (!init || this.$target.val() != '') {\n      this.$target.val(this.format(this.dateObj))\n    }\n    this.curYear = this.dateObj.getFullYear()\n    this.year = this.curYear\n    this.curMonth = this.dateObj.getMonth()\n    this.month = this.curMonth\n    this.date = this.dateObj.getDate()\n    // populate the calendar grid\n    switch (this.options.startView) {\n      case 1: // months\n        this.populateMonthsCalendar()\n        // update the table's activedescdendant to point to the current month\n        this.$grid.attr('aria-activedescendant', this.$grid.find('.curMonth').attr('id'))\n        break\n      case 2: // years\n        this.populateYearsCalendar()\n        // update the table's activedescdendant to point to the current year\n        this.$grid.attr('aria-activedescendant', this.$grid.find('.curYear').attr('id'))\n        break\n      default:\n        this.populateDaysCalendar()\n        // update the table's activedescdendant to point to the current day\n        this.$grid.attr('aria-activedescendant', this.$grid.find('.curDay').attr('id'))\n    }\n  } // end setDate()\n\n  /**\n   *\tdrawCalendarHeader() is a member function to populate the calendar header with the days name.\n   *\n   *\t@return N/A\n   */\n  Datepicker.prototype.drawCalendarHeader = function () {\n    var $days = this.$grid.find('th.datepicker-day')\n    var weekday = this.options.firstDayOfWeek\n    for (var i = 0; i < 7; i++) {\n      $days.eq(i).attr('aria-label', this.locales.day_names[weekday])\n      $days\n        .children('abbr')\n        .eq(i)\n        .attr('title', this.locales.day_names[weekday])\n        .text(this.options.weekDayFormat === 'short' ? this.locales.day_names_short[weekday] : this.locales.day_names_narrow[weekday])\n      weekday = (weekday + 1) % 7\n    }\n  } // end drawCalendarHeader()\n\n  /**\n   *\tpopulateDaysCalendar() is a member function to populate the datepicker grid with calendar days\n   *\trepresenting the current month\n   *\n   *\t@return N/A\n   *\n   */\n  Datepicker.prototype.populateDaysCalendar = function () {\n    this.$calendar.find('.datepicker-bn-prev-label').html(this.options.prevButtonLabel)\n    this.$calendar.find('.datepicker-bn-next-label').html(this.options.nextButtonLabel)\n    this.$calendar.find('.datepicker-bn-fast-prev-label').html(this.options.prevMonthButtonLabel)\n    this.$calendar.find('.datepicker-bn-fast-next-label').html(this.options.nextMonthButtonLabel)\n    if (\n      this.options.min != null &&\n      (this.year - 1 < this.options.min.getFullYear() || (this.year - 1 == this.options.min.getFullYear() && this.month < this.options.min.getMonth()))\n    ) {\n      this.$fastprev.attr('title', '')\n      this.$fastprev.addClass('disabled')\n      this.$fastprev.removeClass('enabled')\n    } else {\n      this.$fastprev.attr('title', this.options.prevMonthButtonLabel)\n      this.$fastprev.addClass('enabled')\n      this.$fastprev.removeClass('disabled')\n    }\n    var previousMonth = this.previousMonth(this.year, this.month)\n    if (\n      this.options.min != null &&\n      (previousMonth.year < this.options.min.getFullYear() ||\n        (previousMonth.year == this.options.min.getFullYear() && previousMonth.month < this.options.min.getMonth()))\n    ) {\n      this.$prev.attr('title', '')\n      this.$prev.addClass('disabled')\n      this.$prev.removeClass('enabled')\n    } else {\n      this.$prev.attr('title', this.options.prevButtonLabel)\n      this.$prev.addClass('enabled')\n      this.$prev.removeClass('disabled')\n    }\n    this.$monthObj.attr('title', this.options.changeMonthButtonLabel)\n    var nextMonth = this.nextMonth(this.year, this.month)\n    if (\n      this.options.max != null &&\n      (nextMonth.year > this.options.max.getFullYear() || (nextMonth.year == this.options.max.getFullYear() && nextMonth.month > this.options.max.getMonth()))\n    ) {\n      this.$next.attr('title', '')\n      this.$next.addClass('disabled')\n      this.$next.removeClass('enabled')\n    } else {\n      this.$next.attr('title', this.options.nextButtonLabel)\n      this.$next.addClass('enabled')\n      this.$next.removeClass('disabled')\n    }\n    if (\n      this.options.max != null &&\n      (this.year + 1 > this.options.max.getFullYear() || (this.year + 1 == this.options.max.getFullYear() && this.month > this.options.max.getMonth()))\n    ) {\n      this.$fastnext.attr('title', '')\n      this.$fastnext.addClass('disabled')\n      this.$fastnext.removeClass('enabled')\n    } else {\n      this.$fastnext.attr('title', this.options.nextMonthButtonLabel)\n      this.$fastnext.addClass('enabled')\n      this.$fastnext.removeClass('disabled')\n    }\n    this.showObject(this.$fastprev)\n    this.showObject(this.$fastnext)\n    var numDays = this.getDaysInMonth(this.year, this.month)\n    var numPrevDays = this.getDaysInMonth(previousMonth.year, previousMonth.month)\n    var startWeekday = new Date(this.year, this.month, 1).getDay()\n    var lastDayOfWeek = (this.options.firstDayOfWeek + 6) % 7\n    var curDay = 1\n    var rowCount = 1\n    this.$monthObj.html(this.locales.month_names[this.month] + ' ' + this.year)\n    this.showObject(this.$grid.find('thead'))\n    // clear the grid\n    var gridCells = '\\t<tr id=\"row0-' + this.id + '\" role=\"row\">\\n'\n    // Insert the leading empty cells\n    var numEmpties = 0\n    var weekday = this.options.firstDayOfWeek\n    while (weekday != startWeekday) {\n      numEmpties++\n      weekday = (weekday + 1) % 7\n    }\n    for (; numEmpties > 0; numEmpties--) {\n      gridCells += '\\t\\t<td class=\"empty\">' + (numPrevDays - numEmpties + 1) + '</td>\\n'\n    }\n    var isYearDisabled = this.options.isYearDisabled && this.options.isYearDisabled(this.year)\n    var isMonthDisabled = this.options.isMonthDisabled && this.options.isMonthDisabled(this.year, this.month + 1)\n    // insert the days of the month.\n    for (curDay = 1; curDay <= numDays; curDay++) {\n      var date = new Date(this.year, this.month, curDay, 0, 0, 0, 0)\n      var longdate = this.formatDate(date, this.options.titleFormat)\n      var curDayClass = curDay == this.date && this.month == this.curMonth && this.year == this.curYear ? ' curDay' : ''\n      if (isYearDisabled || isMonthDisabled) {\n        gridCells += '\\t\\t<td id=\"cell' + curDay + '-' + this.id + '\" class=\"day unselectable' + curDayClass + '\"'\n      } else if ($.inArray(weekday, this.options.daysOfWeekDisabled) > -1) {\n        gridCells += '\\t\\t<td id=\"cell' + curDay + '-' + this.id + '\" class=\"day unselectable' + curDayClass + '\"'\n      } else if (this.options.min != null && date < this.options.min) {\n        gridCells += '\\t\\t<td id=\"cell' + curDay + '-' + this.id + '\" class=\"day unselectable' + curDayClass + '\"'\n      } else if (this.options.max != null && date > this.options.max) {\n        gridCells += '\\t\\t<td id=\"cell' + curDay + '-' + this.id + '\" class=\"day unselectable' + curDayClass + '\"'\n      } else if ($.inArray(this.format(date), this.options.datesDisabled) > -1) {\n        gridCells += '\\t\\t<td id=\"cell' + curDay + '-' + this.id + '\" class=\"day unselectable' + curDayClass + '\"'\n      } else if (this.options.isDateDisabled && this.options.isDateDisabled(date)) {\n        gridCells += '\\t\\t<td id=\"cell' + curDay + '-' + this.id + '\" class=\"day unselectable' + curDayClass + '\"'\n      } else {\n        gridCells += '\\t\\t<td id=\"cell' + curDay + '-' + this.id + '\" class=\"day selectable' + curDayClass + '\"'\n      }\n      gridCells += ' data-value=\"' + curDay + '\"'\n      gridCells += ' title=\"' + longdate + '\"'\n      gridCells += ' aria-label=\"' + longdate + '\"'\n      gridCells += ' headers=\"day' + weekday + '-header-' + this.id + '\" role=\"gridcell\" tabindex=\"-1\" aria-selected=\"false\"><span>' + curDay + '</span>'\n      gridCells += '</td>'\n      if (weekday == lastDayOfWeek && curDay < numDays) {\n        // This was the last day of the week, close it out\n        // and begin a new one\n        gridCells += '\\t</tr>\\n\\t<tr id=\"row' + rowCount + '-' + this.id + '\" role=\"row\">\\n'\n        rowCount++\n      }\n      if (curDay < numDays) {\n        weekday = (weekday + 1) % 7\n      }\n    }\n    // Insert any trailing empty cells\n    while (weekday != lastDayOfWeek) {\n      gridCells += '\\t\\t<td class=\"empty\">' + ++numEmpties + '</td>\\n'\n      weekday = (weekday + 1) % 7\n    }\n    gridCells += '\\t</tr>'\n    var $tbody = this.$grid.find('tbody')\n    $tbody.empty()\n    $tbody.append(gridCells)\n    this.gridType = 0 // 0 = days grid, 1 = months grid, 2 = years Grid\n  } // end populateDaysCalendar()\n\n  /**\n   *\tpopulateMonthsCalendar() is a member function to populate the datepicker grid with calendar months\n   *\trepresenting the current year\n   *\n   *\t@return N/A\n   *\n   */\n  Datepicker.prototype.populateMonthsCalendar = function () {\n    this.$calendar.find('.datepicker-bn-prev-label').html(this.options.prevMonthButtonLabel)\n    this.$calendar.find('.datepicker-bn-next-label').html(this.options.nextMonthButtonLabel)\n    this.hideObject(this.$fastprev)\n    this.hideObject(this.$fastnext)\n    if (this.options.min != null && this.year - 1 < this.options.min.getFullYear()) {\n      this.$prev.attr('title', '')\n      this.$prev.addClass('disabled')\n      this.$prev.removeClass('enabled')\n    } else {\n      this.$prev.attr('title', this.options.prevMonthButtonLabel)\n      this.$prev.addClass('enabled')\n      this.$prev.removeClass('disabled')\n    }\n    this.$monthObj.attr('title', this.options.changeYearButtonLabel)\n    if (this.options.max != null && this.year + 1 > this.options.max.getFullYear()) {\n      this.$next.attr('title', '')\n      this.$next.addClass('disabled')\n      this.$next.removeClass('enabled')\n    } else {\n      this.$next.attr('title', this.options.nextMonthButtonLabel)\n      this.$next.addClass('enabled')\n      this.$next.removeClass('disabled')\n    }\n    var curMonth = 0\n    var rowCount = 1\n    var $tbody = this.$grid.find('tbody')\n    this.$monthObj.html(this.year)\n    // clear the grid\n    this.hideObject(this.$grid.find('thead'))\n    $tbody.empty()\n    $('#datepicker-err-msg-' + this.id).empty()\n    var gridCells = '\\t<tr id=\"row0-' + this.id + '\" role=\"row\">\\n'\n    var isYearDisabled = this.options.isYearDisabled && this.options.isYearDisabled(this.year)\n    // insert the months of the year.\n    for (curMonth = 0; curMonth < 12; curMonth++) {\n      if (isYearDisabled) {\n        gridCells += '\\t\\t<td id=\"cell' + (curMonth + 1) + '-' + this.id + '\" class=\"month unselectable\"'\n      } else if (curMonth == this.month && this.year == this.curYear) {\n        gridCells += '\\t\\t<td id=\"cell' + (curMonth + 1) + '-' + this.id + '\" class=\"month curMonth selectable\"'\n      } else if (\n        this.options.min != null &&\n        (this.year < this.options.min.getFullYear() || (this.year == this.options.min.getFullYear() && curMonth < this.options.min.getMonth()))\n      ) {\n        gridCells += '\\t\\t<td id=\"cell' + (curMonth + 1) + '-' + this.id + '\" class=\"month unselectable\"'\n      } else if (\n        this.options.max != null &&\n        (this.year > this.options.max.getFullYear() || (this.year == this.options.max.getFullYear() && curMonth > this.options.max.getMonth()))\n      ) {\n        gridCells += '\\t\\t<td id=\"cell' + (curMonth + 1) + '-' + this.id + '\" class=\"month unselectable\"'\n      } else if (this.options.isMonthDisabled && this.options.isMonthDisabled(this.year, curMonth + 1)) {\n        gridCells += '\\t\\t<td id=\"cell' + (curMonth + 1) + '-' + this.id + '\" class=\"month unselectable\"'\n      } else {\n        gridCells += '\\t\\t<td id=\"cell' + (curMonth + 1) + '-' + this.id + '\" class=\"month selectable\"'\n      }\n      gridCells += ' data-value=\"' + curMonth + '\"'\n      gridCells += ' title=\"' + this.locales.month_names[curMonth] + ' ' + this.year + '\"'\n      gridCells += ' aria-label=\"' + this.locales.month_names[curMonth] + ' ' + this.year + '\"'\n      gridCells += ' role=\"gridcell\" tabindex=\"-1\" aria-selected=\"false\">' + this.locales.month_names_abbreviated[curMonth]\n      gridCells += '</td>'\n      if (curMonth == 3 || curMonth == 7) {\n        gridCells += '\\t</tr>\\n\\t<tr id=\"row' + rowCount + '-' + this.id + '\" role=\"row\">\\n'\n        rowCount++\n      }\n    }\n    gridCells += '\\t</tr>'\n    $tbody.append(gridCells)\n    this.gridType = 1 // 0 = days grid, 1 = months grid, 2 = years Grid\n  } // end populateMonthsCalendar()\n\n  /**\n   *\tpopulateYearsCalendar() is a member function to populate the datepicker grid with 20 calendar years\n   *\taround the current year\n   *\n   *\t@return N/A\n   *\n   */\n  Datepicker.prototype.populateYearsCalendar = function () {\n    this.$calendar.find('.datepicker-bn-prev-label').html(this.options.prevYearButtonLabel)\n    this.$calendar.find('.datepicker-bn-next-label').html(this.options.nextYearButtonLabel)\n    this.hideObject(this.$fastprev)\n    this.hideObject(this.$fastnext)\n    if (this.options.min != null && this.year - 20 < this.options.min.getFullYear()) {\n      this.$prev.attr('title', '')\n      this.$prev.addClass('disabled')\n      this.$prev.removeClass('enabled')\n    } else {\n      this.$prev.attr('title', this.options.prevYearButtonLabel)\n      this.$prev.addClass('enabled')\n      this.$prev.removeClass('disabled')\n    }\n    this.$monthObj.attr('title', this.options.changeRangeButtonLabel)\n    if (this.options.max != null && this.year + 20 > this.options.max.getFullYear()) {\n      this.$next.attr('title', '')\n      this.$next.addClass('disabled')\n      this.$next.removeClass('enabled')\n    } else {\n      this.$next.attr('title', this.options.nextYearButtonLabel)\n      this.$next.addClass('enabled')\n      this.$next.removeClass('disabled')\n    }\n    var startYear = Math.floor(this.year / 10) * 10\n    var endYear = startYear + 19\n    var rowCount = 1\n    var $tbody = this.$grid.find('tbody')\n    this.$monthObj.html(startYear + '-' + endYear)\n    // clear the grid\n    this.hideObject(this.$grid.find('thead'))\n    $tbody.empty()\n    $('#datepicker-err-msg-' + this.id).empty()\n    var gridCells = '\\t<tr id=\"row0-' + this.id + '\" role=\"row\">\\n'\n    // insert the months of the year.\n    for (var curYear = startYear; curYear <= endYear; curYear++) {\n      if (curYear == this.year) {\n        gridCells += '\\t\\t<td id=\"cell' + (curYear - startYear + 1) + '-' + this.id + '\" class=\"year curYear selectable\"'\n      } else if (this.options.min != null && curYear < this.options.min.getFullYear()) {\n        gridCells += '\\t\\t<td id=\"cell' + (curYear - startYear + 1) + '-' + this.id + '\" class=\"year unselectable\"'\n      } else if (this.options.max != null && curYear > this.options.max.getFullYear()) {\n        gridCells += '\\t\\t<td id=\"cell' + (curYear - startYear + 1) + '-' + this.id + '\" class=\"year unselectable\"'\n      } else if (this.options.isYearDisabled && this.options.isYearDisabled(curYear)) {\n        gridCells += '\\t\\t<td id=\"cell' + (curYear - startYear + 1) + '-' + this.id + '\" class=\"year unselectable\"'\n      } else {\n        gridCells += '\\t\\t<td id=\"cell' + (curYear - startYear + 1) + '-' + this.id + '\" class=\"year selectable\"'\n      }\n      gridCells += ' data-value=\"' + curYear + '\"'\n      gridCells += ' title=\"' + curYear + '\"'\n      gridCells += ' role=\"gridcell\" tabindex=\"-1\" aria-selected=\"false\">' + curYear\n      gridCells += '</td>'\n      var curPos = curYear - startYear\n      if (curPos == 4 || curPos == 9 || curPos == 14) {\n        gridCells += '\\t</tr>\\n\\t<tr id=\"row' + rowCount + '-' + this.id + '\" role=\"row\">\\n'\n        rowCount++\n      }\n    }\n    gridCells += '\\t</tr>'\n    $tbody.append(gridCells)\n    this.gridType = 2 // 0 = days grid, 1 = months grid, 2 = years Grid\n  } // end populateYearsCalendar()\n\n  /**\n   *\tshowDaysOfPrevMonth() is a member function to show the days of the previous month\n   *\n   *\t@param\t(offset int) offset may be used to specify an offset for setting\n   *\t\t\tfocus on a day the specified number of days from the end of the month.\n   *\t@return true if the previous month is between the minimum and the maximum date otherwise return false\n   */\n  Datepicker.prototype.showDaysOfPrevMonth = function (offset) {\n    // show the previous month\n    var previousMonth = this.previousMonth(this.year, this.month)\n    if (\n      this.options.min != null &&\n      (previousMonth.year < this.options.min.getFullYear() ||\n        (previousMonth.year == this.options.min.getFullYear() && previousMonth.month < this.options.min.getMonth()))\n    ) {\n      return false\n    }\n    this.month = previousMonth.month\n    this.year = previousMonth.year\n    // populate the calendar grid\n    this.populateDaysCalendar()\n\n    // if offset was specified, set focus on the last day - specified offset\n    if (offset != null) {\n      var numDays = this.getDaysInMonth(this.year, this.month)\n      var day = 'cell' + (numDays - offset) + '-' + this.id\n      this.$grid.attr('aria-activedescendant', day)\n      this.selectGridCell(day)\n    }\n    return true\n  } // end showDaysOfPrevMonth()\n\n  /**\n   *\tshowDaysOfMonth() is a member function to show the days of the specified month\n   *\n   *\t@param\t(month int) the month to show.\n   *\t@return true if the  month is between the minimum and the maximum date otherwise return false\n   */\n  Datepicker.prototype.showDaysOfMonth = function (month) {\n    if (\n      this.options.min != null &&\n      (this.year < this.options.min.getFullYear() || (this.year == this.options.min.getFullYear() && month < this.options.min.getMonth()))\n    ) {\n      return false\n    }\n    if (\n      this.options.max != null &&\n      (this.year > this.options.max.getFullYear() || (this.year == this.options.max.getFullYear() && month > this.options.max.getMonth()))\n    ) {\n      return false\n    }\n    this.month = month\n    this.date = Math.min(this.date, this.getDaysInMonth(this.year, this.month))\n    this.populateDaysCalendar()\n    // update the table's activedescendant to point to the active day\n    var $active = this.$grid.find(\"tbody td[data-value='\" + this.date + \"']\")\n    this.selectGridCell($active.attr('id'))\n    return true\n  } // end showDaysOfMonth()\n\n  /**\n   *\tshowMonthsOfPrevYear() is a member function to show the months of the previous year\n   *\n   *\t@param\t(offset int) offset may be used to specify an offset for setting\n   *\t\t\tfocus on a month the specified number of months from the end of the year.\n   *\t@return true if the previous year is between the minimum and the maximum date otherwise return false\n   */\n  Datepicker.prototype.showMonthsOfPrevYear = function (offset) {\n    if (this.options.min != null && this.year - 1 < this.options.min.getFullYear()) {\n      return false\n    }\n    // show the previous year\n    this.year--\n    // populate the calendar grid\n    this.populateMonthsCalendar()\n\n    // if offset was specified, set focus on the last month - specified offset\n    if (offset != null) {\n      var month = 'cell' + (12 - offset) + '-' + this.id\n      this.$grid.attr('aria-activedescendant', month)\n      this.selectGridCell(month)\n    }\n    return true\n  } // end showMonthsOfPrevYear()\n\n  /**\n   *\tshowMonthsOfYear() is a member function to show the months of the specified year\n   *\n   *\t@param\t(year int) the year to show.\n   *\t@return true if the year is between the minimum and the maximum date otherwise return false\n   */\n  Datepicker.prototype.showMonthsOfYear = function (year) {\n    if (this.options.min != null && year < this.options.min.getFullYear()) {\n      return false\n    }\n    if (this.options.max != null && year > this.options.max.getFullYear()) {\n      return false\n    }\n    this.year = year\n    this.populateMonthsCalendar()\n    // update the table's activedescendant to point to the active month\n    var $active = this.$grid.find(\"tbody td[data-value='\" + this.month + \"']\")\n    this.$grid.attr('aria-activedescendant', $active.attr('id'))\n    this.selectGridCell($active.attr('id'))\n    return true\n  } // end showMonthsOfYear()\n\n  /**\n   *\tshowYearsOfPrevRange() is a member function to show the years of the previous range of twenty years\n   *\n   *\t@param\t(offset int) offset may be used to specify an offset for setting\n   *\t\t\tfocus on a year the specified number of years from the end of the range.\n   *\t@return true if the year - 20 is between the minimum and the maximum date otherwise return false\n   */\n  Datepicker.prototype.showYearsOfPrevRange = function (offset) {\n    if (this.options.min != null && this.year - 20 < this.options.min.getFullYear()) {\n      return false\n    }\n    // show the previous range\n    this.year -= 20\n    // populate the calendar grid\n    this.populateYearsCalendar()\n\n    // if offset was specified, set focus on the last month - specified offset\n    if (offset != null) {\n      var year = 'cell' + (20 - offset) + '-' + this.id\n      this.$grid.attr('aria-activedescendant', year)\n      this.selectGridCell(year)\n    }\n    return true\n  } // end showYearsOfPrevRange()\n\n  /**\n   * showDaysOfNextMonth() is a member function to show the next month\n   *\n   *\t@param\t(offset int) offset may be used to specify an offset for setting\n   *\t\t\tfocus on a day the specified number of days from\n   *\t\t\tthe beginning of the month.\n   *\t@return true if the nextmMonth is between the minimum and the maximum date otherwise return false\n   */\n  Datepicker.prototype.showDaysOfNextMonth = function (offset) {\n    // show the next month\n    var nextMonth = this.nextMonth(this.year, this.month)\n    if (\n      this.options.max != null &&\n      (nextMonth.year > this.options.max.getFullYear() || (nextMonth.year == this.options.max.getFullYear() && nextMonth.month > this.options.max.getMonth()))\n    ) {\n      return false\n    }\n    this.month = nextMonth.month\n    this.year = nextMonth.year\n    // populate the calendar grid\n    this.populateDaysCalendar()\n\n    // if offset was specified, set focus on the first day + specified offset\n    if (offset != null) {\n      var day = 'cell' + offset + '-' + this.id\n      this.$grid.attr('aria-activedescendant', day)\n      this.selectGridCell(day)\n    }\n    return true\n  } // end showDaysOfNextMonth()\n\n  /**\n   * showMonthsOfNextYear() is a member function to show the months of next year\n   *\n   *\t@param\t(offset int) offset may be used to specify an offset for setting\n   *\t\t\tfocus on a month the specified number of month from\n   *\t\t\tthe beginning of the year.\n   *\t@return true if the next year is between the minimum and the maximum date otherwise return false\n   */\n  Datepicker.prototype.showMonthsOfNextYear = function (offset) {\n    if (this.options.max != null && this.year + 1 > this.options.max.getFullYear()) {\n      return false\n    }\n    // show the next year\n    this.year++\n    // populate the calendar grid\n    this.populateMonthsCalendar()\n\n    // if offset was specified, set focus on the first day + specified offset\n    if (offset != null) {\n      var month = 'cell' + offset + '-' + this.id\n      this.$grid.attr('aria-activedescendant', month)\n      this.selectGridCell(month)\n    }\n    return true\n  } // end showMonthsOfNextYear()\n\n  /**\n   * showYearsOfNextRange() is a member function to show the years of next range of years\n   *\n   *\t@param\t(offset int) offset may be used to specify an offset for setting\n   *\t\t\tfocus on a year the specified number of years from\n   *\t\t\tthe beginning of the range.\n   *\t@return true if the year + 20 is between the minimum and the maximum date otherwise return false\n   */\n  Datepicker.prototype.showYearsOfNextRange = function (offset) {\n    if (this.options.max != null && this.year + 20 > this.options.max.getFullYear()) {\n      return false\n    }\n    // show the next year\n    this.year += 20\n    // populate the calendar grid\n    this.populateYearsCalendar()\n\n    // if offset was specified, set focus on the first day + specified offset\n    if (offset != null) {\n      var year = 'cell' + offset + '-' + this.id\n      this.$grid.attr('aria-activedescendant', year)\n      this.selectGridCell(year)\n    }\n    return true\n  } // end showYearsOfNextRange()\n\n  /**\n   *\tshowDaysOfPrevYear() is a member function to show the previous year\n   *\n   *\t@return true if the previous year is between the minimum and the maximum date otherwise return false\n   */\n  Datepicker.prototype.showDaysOfPrevYear = function () {\n    if (\n      this.options.min != null &&\n      (this.year - 1 < this.options.min.getFullYear() || (this.year - 1 == this.options.min.getFullYear() && this.month < this.options.min.getMonth()))\n    ) {\n      return false\n    }\n    // decrement the year\n    this.year--\n\n    // populate the calendar grid\n    this.populateDaysCalendar()\n    return true\n  } // end showDaysOfPrevYear()\n\n  /**\n   *\tshowDaysOfNextYear() is a member function to show the next year\n   *\n   *\t@return true if the next year is between the minimum and the maximum date otherwise return false\n   */\n  Datepicker.prototype.showDaysOfNextYear = function () {\n    if (\n      this.options.max != null &&\n      (this.year + 1 > this.options.max.getFullYear() || (this.year + 1 == this.options.max.getFullYear() && this.month > this.options.max.getMonth()))\n    ) {\n      return false\n    }\n    // increment the year\n    this.year++\n\n    // populate the calendar grid\n    this.populateDaysCalendar()\n    return true\n  } // end showDaysOfNextYear()\n\n  /**\n   *\tbindHandlers() is a member function to bind event handlers for the widget\n   *\n   *\t@return N/A\n   */\n  Datepicker.prototype.bindHandlers = function () {\n    var self = this\n\n    // bind button handlers\n    this.$fastprev.click(function (e) {\n      return self.handleFastPrevClick(e)\n    })\n    this.$prev.click(function (e) {\n      return self.handlePrevClick(e)\n    })\n    this.$next.click(function (e) {\n      return self.handleNextClick(e)\n    })\n    this.$fastnext.click(function (e) {\n      return self.handleFastNextClick(e)\n    })\n    this.$monthObj.click(function (e) {\n      return self.handleMonthClick(e)\n    })\n    this.$monthObj.keydown(function (e) {\n      return self.handleMonthKeyDown(e)\n    })\n    this.$fastprev.keydown(function (e) {\n      return self.handleFastPrevKeyDown(e)\n    })\n    this.$prev.keydown(function (e) {\n      return self.handlePrevKeyDown(e)\n    })\n    this.$next.keydown(function (e) {\n      return self.handleNextKeyDown(e)\n    })\n    this.$fastnext.keydown(function (e) {\n      return self.handleFastNextKeyDown(e)\n    })\n    if (this.options.modal == true) {\n      this.$close.click(function (e) {\n        return self.handleCloseClick(e)\n      })\n      this.$close.keydown(function (e) {\n        return self.handleCloseKeyDown(e)\n      })\n    }\n\n    // bind grid handlers\n    this.$grid.keydown(function (e) {\n      return self.handleGridKeyDown(e)\n    })\n    this.$grid.keypress(function (e) {\n      return self.handleGridKeyPress(e)\n    })\n    this.$grid.focus(function (e) {\n      return self.handleGridFocus(e)\n    })\n    this.$grid.blur(function (e) {\n      return self.handleGridBlur(e)\n    })\n    this.$grid.delegate('td', 'click', function (e) {\n      return self.handleGridClick(this, e)\n    })\n\n    // bind target handlers\n    this.$target.change(function () {\n      var date = self.parseDate($(this).val())\n      self.updateLinked(date)\n    })\n  } // end bindHandlers();\n\n  /**\n   *\thandleFastPrevClick() is a member function to process click events for the fast prev month button\n   *\n   *\t@param (e obj) e is the event object associated with the event\n   *\n   *\t@return (boolean) false if consuming event, true if propagating\n   */\n  Datepicker.prototype.handleFastPrevClick = function (e) {\n    if (this.showDaysOfPrevYear()) {\n      var active = this.$grid.attr('aria-activedescendant')\n      if (this.month != this.curMonth || this.year != this.curYear) {\n        this.$grid.attr('aria-activedescendant', 'cell1' + '-' + this.id)\n        this.selectGridCell('cell1' + '-' + this.id)\n      } else {\n        this.$grid.attr('aria-activedescendant', active)\n        this.selectGridCell(active)\n      }\n    }\n    e.stopPropagation()\n    return false\n  } // end handleFastPrevClick()\n\n  /**\n   *\thandlePrevClick() is a member function to process click events for the prev month button\n   *\n   *\t@param (e obj) e is the event object associated with the event\n   *\n   *\t@return (boolean) false if consuming event, true if propagating\n   */\n  Datepicker.prototype.handlePrevClick = function (e) {\n    var active = this.$grid.attr('aria-activedescendant')\n    switch (this.gridType) {\n      case 0: // days grid\n        var ok\n        if (e.ctrlKey) {\n          ok = this.showDaysOfPrevYear()\n        } else {\n          ok = this.showDaysOfPrevMonth()\n        }\n        if (ok) {\n          if (this.month != this.curMonth || this.year != this.curYear) {\n            this.$grid.attr('aria-activedescendant', 'cell1' + '-' + this.id)\n            this.selectGridCell('cell1' + '-' + this.id)\n          } else {\n            this.$grid.attr('aria-activedescendant', active)\n            this.selectGridCell(active)\n          }\n        }\n        break\n      case 1: // months grid\n        if (this.showMonthsOfPrevYear()) {\n          if (this.year != this.curYear) {\n            this.$grid.attr('aria-activedescendant', 'cell1' + '-' + this.id)\n            this.selectGridCell('cell1' + '-' + this.id)\n          } else {\n            this.$grid.attr('aria-activedescendant', active)\n            this.selectGridCell(active)\n          }\n        }\n        break\n      case 2: // years grid\n        if (this.showYearsOfPrevRange()) {\n          this.$grid.attr('aria-activedescendant', 'cell1' + '-' + this.id)\n          this.selectGridCell('cell1' + '-' + this.id)\n        }\n        break\n    }\n    e.stopPropagation()\n    return false\n  } // end handlePrevClick()\n\n  /**\n   *\thandleMonthClick() is a member function to process click events for the month header\n   *\n   *\t@param (e obj) e is the event object associated with the event\n   *\n   *\t@return (boolean) false if consuming event, true if propagating\n   */\n  Datepicker.prototype.handleMonthClick = function (e) {\n    this.changeGrid(e)\n    e.stopPropagation()\n    return false\n  } // end handleMonthClick()\n\n  /**\n   *\thandleNextClick() is a member function to process click events for the next month button\n   *\n   *\t@param (e obj) e is the event object associated with the event\n   *\n   *\t@return (boolean) false if consuming event, true if propagating\n   */\n  Datepicker.prototype.handleNextClick = function (e) {\n    var active = this.$grid.attr('aria-activedescendant')\n    switch (this.gridType) {\n      case 0: // days grid\n        var ok\n        if (e.ctrlKey) {\n          ok = this.showDaysOfNextYear()\n        } else {\n          ok = this.showDaysOfNextMonth()\n        }\n        if (ok) {\n          if (this.month != this.curMonth || this.year != this.curYear) {\n            this.$grid.attr('aria-activedescendant', 'cell1' + '-' + this.id)\n            this.selectGridCell('cell1' + '-' + this.id)\n          } else {\n            this.$grid.attr('aria-activedescendant', active)\n            this.selectGridCell(active)\n          }\n        }\n        break\n      case 1: // months grid\n        if (this.showMonthsOfNextYear()) {\n          if (this.year != this.curYear) {\n            this.$grid.attr('aria-activedescendant', 'cell1' + '-' + this.id)\n            this.selectGridCell('cell1' + '-' + this.id)\n          } else {\n            this.$grid.attr('aria-activedescendant', active)\n            this.selectGridCell(active)\n          }\n        }\n        break\n      case 2: // years grid\n        if (this.showYearsOfNextRange()) {\n          this.$grid.attr('aria-activedescendant', 'cell1' + '-' + this.id)\n          this.selectGridCell('cell1' + '-' + this.id)\n        }\n        break\n    }\n    e.stopPropagation()\n    return false\n  } // end handleNextClick()\n\n  /**\n   *\thandleFastNextClick() is a member function to process click events for the fast next month button\n   *\n   *\t@param (e obj) e is the event object associated with the event\n   *\n   *\t@return (boolean) false if consuming event, true if propagating\n   */\n  Datepicker.prototype.handleFastNextClick = function (e) {\n    if (this.showDaysOfNextYear()) {\n      var active = this.$grid.attr('aria-activedescendant')\n      if (this.month != this.curMonth || this.year != this.curYear) {\n        this.$grid.attr('aria-activedescendant', 'cell1' + '-' + this.id)\n        this.selectGridCell('cell1' + '-' + this.id)\n      } else {\n        this.$grid.attr('aria-activedescendant', active)\n        this.selectGridCell(active)\n      }\n    }\n    e.stopPropagation()\n    return false\n  } // end handleFastNextClick()\n\n  /**\n   *\thandleCloseClick() is a member function to process click events for the close button\n   *\n   *\t@param (e obj) e is the event object associated with the event\n   *\n   *\t@return (boolean) false if consuming event, true if propagating\n   */\n  Datepicker.prototype.handleCloseClick = function (e) {\n    // dismiss the dialog box\n    this.hide()\n    e.stopPropagation()\n    return false\n  } // end handleCloseClick()\n\n  /**\n   *\thandleFastPrevKeyDown() is a member function to process keydown events for the fast prev month button\n   *\n   *\t@param (e obj) e is the event object associated with the event\n   *\n   *\t@return (boolean) false if consuming event, true if propagating\n   */\n  Datepicker.prototype.handleFastPrevKeyDown = function (e) {\n    if (e.altKey) {\n      return true\n    }\n    switch (e.keyCode) {\n      case this.keys.tab: {\n        if (this.options.modal == false || e.ctrlKey) {\n          return true\n        }\n        if (e.shiftKey) {\n          this.$close.focus()\n        } else {\n          this.$prev.focus()\n        }\n        e.stopPropagation()\n        return false\n      }\n      case this.keys.enter:\n      case this.keys.space: {\n        if (e.shiftKey || e.ctrlKey) {\n          return true\n        }\n        this.showDaysOfPrevYear()\n        e.stopPropagation()\n        return false\n      }\n      case this.keys.esc: {\n        // dismiss the dialog box\n        this.hide()\n        e.stopPropagation()\n        return false\n      }\n    }\n    return true\n  } // end handleFastPrevKeyDown()\n\n  /**\n   *\thandlePrevKeyDown() is a member function to process keydown events for the prev month button\n   *\n   *\t@param (e obj) e is the event object associated with the event\n   *\n   *\t@return (boolean) false if consuming event, true if propagating\n   */\n  Datepicker.prototype.handlePrevKeyDown = function (e) {\n    if (e.altKey) {\n      return true\n    }\n    switch (e.keyCode) {\n      case this.keys.tab: {\n        if (this.options.modal == false || e.ctrlKey) {\n          return true\n        }\n        if (e.shiftKey) {\n          if (this.gridType == 0) {\n            this.$fastprev.focus()\n          } else {\n            this.$close.focus()\n          }\n        } else {\n          this.$monthObj.focus()\n        }\n        e.stopPropagation()\n        return false\n      }\n      case this.keys.enter:\n      case this.keys.space: {\n        if (e.shiftKey) {\n          return true\n        }\n        switch (this.gridType) {\n          case 0: // days grid\n            if (e.ctrlKey) {\n              this.showDaysOfPrevYear()\n            } else {\n              this.showDaysOfPrevMonth()\n            }\n            break\n          case 1: // months grid\n            this.showMonthsOfPrevYear()\n            break\n          case 2: // years grid\n            this.showYearsOfPrevRange()\n            break\n        }\n        e.stopPropagation()\n        return false\n      }\n      case this.keys.esc: {\n        // dismiss the dialog box\n        this.hide()\n        e.stopPropagation()\n        return false\n      }\n    }\n    return true\n  } // end handlePrevKeyDown()\n\n  /**\n   *\thandleMonthKeyDown() is a member function to process keydown events for the month title\n   *\n   *\t@param (e obj) e is the event object associated with the event\n   *\n   *\t@return (boolean) false if consuming event, true if propagating\n   */\n  Datepicker.prototype.handleMonthKeyDown = function (e) {\n    if (e.altKey) {\n      return true\n    }\n    switch (e.keyCode) {\n      case this.keys.tab: {\n        if (this.options.modal == false || e.ctrlKey) {\n          return true\n        }\n        if (e.shiftKey) {\n          this.$prev.focus()\n        } else {\n          this.$next.focus()\n        }\n        e.stopPropagation()\n        return false\n      }\n      case this.keys.enter:\n      case this.keys.space: {\n        this.changeGrid(e)\n        e.stopPropagation()\n        return false\n      }\n      case this.keys.esc: {\n        // dismiss the dialog box\n        this.hide()\n        e.stopPropagation()\n        return false\n      }\n    }\n    return true\n  } // end handleMonthKeyDown()\n\n  /**\n   *\thandleNextKeyDown() is a member function to process keydown events for the next month button\n   *\n   *\t@param (e obj) e is the event object associated with the event\n   *\n   *\t@return (boolean) false if consuming event, true if propagating\n   */\n  Datepicker.prototype.handleNextKeyDown = function (e) {\n    if (e.altKey) {\n      return true\n    }\n    switch (e.keyCode) {\n      case this.keys.tab: {\n        if (this.options.modal == false || e.ctrlKey) {\n          return true\n        }\n        if (e.shiftKey) {\n          this.$monthObj.focus()\n        } else {\n          if (this.gridType == 0) {\n            this.$fastnext.focus()\n          } else {\n            this.$grid.focus()\n          }\n        }\n        e.stopPropagation()\n        return false\n      }\n      case this.keys.enter:\n      case this.keys.space: {\n        switch (this.gridType) {\n          case 0: // days grid\n            if (e.ctrlKey) {\n              this.showDaysOfNextYear()\n            } else {\n              this.showDaysOfNextMonth()\n            }\n            break\n          case 1: // months grid\n            this.showMonthsOfNextYear()\n            break\n          case 2: // years grid\n            this.showYearsOfNextRange()\n            break\n        }\n        e.stopPropagation()\n        return false\n      }\n      case this.keys.esc: {\n        // dismiss the dialog box\n        this.hide()\n        e.stopPropagation()\n        return false\n      }\n    }\n    return true\n  } // end handleNextKeyDown()\n\n  /**\n   *\thandleFastNextKeyDown() is a member function to process keydown events for the fast next month button\n   *\n   *\t@param (e obj) e is the event object associated with the event\n   *\n   *\t@return (boolean) false if consuming event, true if propagating\n   */\n  Datepicker.prototype.handleFastNextKeyDown = function (e) {\n    if (e.altKey) {\n      return true\n    }\n    switch (e.keyCode) {\n      case this.keys.tab: {\n        if (this.options.modal == false || e.ctrlKey) {\n          return true\n        }\n        if (e.shiftKey) {\n          this.$next.focus()\n        } else {\n          this.$grid.focus()\n        }\n        e.stopPropagation()\n        return false\n      }\n      case this.keys.enter:\n      case this.keys.space: {\n        this.showDaysOfNextYear()\n        e.stopPropagation()\n        return false\n      }\n      case this.keys.esc: {\n        // dismiss the dialog box\n        this.hide()\n        e.stopPropagation()\n        return false\n      }\n    }\n    return true\n  } // end handleFastNextKeyDown()\n\n  /**\n   *\thandleCloseKeyDown() is a member function to process keydown events for the close button\n   *\n   *\t@param (e obj) e is the event object associated with the event\n   *\n   *\t@return (boolean) false if consuming event, true if propagating\n   */\n  Datepicker.prototype.handleCloseKeyDown = function (e) {\n    if (e.altKey) {\n      return true\n    }\n    switch (e.keyCode) {\n      case this.keys.tab: {\n        if (e.ctrlKey) {\n          return true\n        }\n        if (e.shiftKey) {\n          this.$grid.focus()\n        } else {\n          if (this.gridType == 0) {\n            this.$fastprev.focus()\n          } else {\n            this.$prev.focus()\n          }\n        }\n        e.stopPropagation()\n        return false\n      }\n      case this.keys.enter:\n      case this.keys.esc:\n      case this.keys.space: {\n        if (e.shiftKey || e.ctrlKey) {\n          return true\n        }\n        // dismiss the dialog box\n        this.hide()\n        e.stopPropagation()\n        return false\n      }\n    }\n    return true\n  } // end handlePrevKeyDown()\n\n  /**\n   *\thandleGridKeyDown() is a member function to process keydown events for the Datepicker grid\n   *\n   *\t@param (e obj) e is the event object associated with the event\n   *\n   *\t@return (boolean) false if consuming event, true if propagating\n   */\n  Datepicker.prototype.handleGridKeyDown = function (e) {\n    var $curCell = $('#' + this.$grid.attr('aria-activedescendant'))\n    var $cells = this.$grid.find('td.selectable')\n    var colCount = this.$grid.find('tbody tr').eq(0).find('td').length\n    if (e.altKey && e.keyCode != this.keys.pageup && e.keyCode != this.keys.pagedown) {\n      return true\n    }\n    switch (e.keyCode) {\n      case this.keys.tab: {\n        if (this.options.modal == true) {\n          if (e.shiftKey) {\n            if (this.gridType == 0) {\n              this.$fastnext.focus()\n            } else {\n              this.$next.focus()\n            }\n          } else {\n            this.$close.focus()\n          }\n          e.stopPropagation()\n          return false\n        } else {\n          // dismiss the dialog box\n          this.hide()\n          this.handleTabOut(e)\n          e.stopPropagation()\n          return false\n        }\n      }\n      case this.keys.enter:\n      case this.keys.space: {\n        if (e.ctrlKey) {\n          return true\n        }\n        switch (this.gridType) {\n          case 0: // days grid\n            // update the target box\n            this.update()\n            // dismiss the dialog box\n            this.hide()\n            break\n          case 1: // months grid\n            this.showDaysOfMonth(parseInt($curCell.attr('data-value'), 10))\n            break\n          case 2: // years grid\n            this.showMonthsOfYear(parseInt($curCell.attr('data-value'), 10))\n            break\n        }\n        e.stopPropagation()\n        return false\n      }\n      case this.keys.esc: {\n        // dismiss the dialog box\n        this.hide()\n        e.stopPropagation()\n        return false\n      }\n      case this.keys.left:\n      case this.keys.right: {\n        if ((e.keyCode == this.keys.left && this.locales.directionality === 'LTR') || (e.keyCode == this.keys.right && this.locales.directionality === 'RTL')) {\n          if (e.ctrlKey || e.shiftKey) {\n            return true\n          }\n          var cellIndex = $cells.index($curCell) - 1\n          var $prevCell = null\n          if (cellIndex >= 0) {\n            $prevCell = $cells.eq(cellIndex)\n            this.unSelectGridCell($curCell.attr('id'))\n            this.$grid.attr('aria-activedescendant', $prevCell.attr('id'))\n            this.selectGridCell($prevCell.attr('id'))\n          } else {\n            switch (this.gridType) {\n              case 0: // days grid\n                this.showDaysOfPrevMonth(0)\n                break\n              case 1: // months grid\n                this.showMonthsOfPrevYear(0)\n                break\n              case 2: // years grid\n                this.showYearsOfPrevRange(0)\n                break\n            }\n          }\n          e.stopPropagation()\n          return false\n        } else {\n          if (e.ctrlKey || e.shiftKey) {\n            return true\n          }\n          cellIndex = $cells.index($curCell) + 1\n          var $nextCell = null\n          if (cellIndex < $cells.length) {\n            $nextCell = $cells.eq(cellIndex)\n            this.unSelectGridCell($curCell.attr('id'))\n            this.$grid.attr('aria-activedescendant', $nextCell.attr('id'))\n            this.selectGridCell($nextCell.attr('id'))\n          } else {\n            switch (this.gridType) {\n              case 0: // days grid\n                // move to the next month\n                this.showDaysOfNextMonth(1)\n                break\n              case 1: // months grid\n                this.showMonthsOfNextYear(1)\n                break\n              case 2: // years grid\n                this.showYearsOfNextRange(1)\n                break\n            }\n          }\n          e.stopPropagation()\n          return false\n        }\n      }\n      case this.keys.up: {\n        if (e.ctrlKey || e.shiftKey) {\n          return true\n        }\n        cellIndex = $cells.index($curCell) - colCount\n        $prevCell = null\n        if (cellIndex >= 0) {\n          $prevCell = $cells.eq(cellIndex)\n          this.unSelectGridCell($curCell.attr('id'))\n          this.$grid.attr('aria-activedescendant', $prevCell.attr('id'))\n          this.selectGridCell($prevCell.attr('id'))\n        } else {\n          // move to appropriate day in previous month\n          cellIndex = colCount - 1 - $cells.index($curCell)\n          switch (this.gridType) {\n            case 0: // days grid\n              this.showDaysOfPrevMonth(cellIndex)\n              break\n            case 1: // months grid\n              this.showMonthsOfPrevYear(cellIndex)\n              break\n            case 2: // years grid\n              this.showYearsOfPrevRange(cellIndex)\n              break\n          }\n        }\n        e.stopPropagation()\n        return false\n      }\n      case this.keys.down: {\n        if (e.ctrlKey || e.shiftKey) {\n          return true\n        }\n        cellIndex = $cells.index($curCell) + colCount\n        $nextCell = null\n        if (cellIndex < $cells.length) {\n          $nextCell = $cells.eq(cellIndex)\n          this.unSelectGridCell($curCell.attr('id'))\n          this.$grid.attr('aria-activedescendant', $nextCell.attr('id'))\n          this.selectGridCell($nextCell.attr('id'))\n        } else {\n          // move to appropriate day in next month\n          cellIndex = colCount + 1 - ($cells.length - $cells.index($curCell))\n          switch (this.gridType) {\n            case 0: // days grid\n              this.showDaysOfNextMonth(cellIndex)\n              break\n            case 1: // months grid\n              this.showMonthsOfNextYear(cellIndex)\n              break\n            case 2: // years grid\n              this.showYearsOfNextRange(cellIndex)\n              break\n          }\n        }\n        e.stopPropagation()\n        return false\n      }\n      case this.keys.pageup: {\n        var active = this.$grid.attr('aria-activedescendant')\n        if (e.shiftKey || e.ctrlKey) {\n          return true\n        }\n        e.preventDefault()\n        var ok = false\n        switch (this.gridType) {\n          case 0: // days grid\n            if (e.altKey) {\n              e.stopImmediatePropagation()\n              ok = this.showDaysOfPrevYear()\n            } else {\n              ok = this.showDaysOfPrevMonth()\n            }\n            break\n          case 1: // months grid\n            ok = this.showMonthsOfPrevYear()\n            break\n          case 2: // years grid\n            ok = this.showYearsOfPrevRange()\n            break\n        }\n        if (ok) {\n          if ($('#' + active).attr('id') == undefined) {\n            $cells = this.$grid.find('td.selectable')\n            var $lastCell = $cells.eq($cells.length - 1)\n            this.$grid.attr('aria-activedescendant', $lastCell.attr('id'))\n            this.selectGridCell($lastCell.attr('id'))\n          } else {\n            this.selectGridCell(active)\n          }\n        }\n        e.stopPropagation()\n        return false\n      }\n      case this.keys.pagedown: {\n        active = this.$grid.attr('aria-activedescendant')\n        if (e.shiftKey || e.ctrlKey) {\n          return true\n        }\n        e.preventDefault()\n        ok = false\n        switch (this.gridType) {\n          case 0: // days grid\n            if (e.altKey) {\n              e.stopImmediatePropagation()\n              ok = this.showDaysOfNextYear()\n            } else {\n              ok = this.showDaysOfNextMonth()\n            }\n            break\n          case 1: // months grid\n            ok = this.showMonthsOfNextYear()\n            break\n          case 2: // years grid\n            ok = this.showYearsOfNextRange()\n            break\n        }\n        if (ok) {\n          if ($('#' + active).attr('id') == undefined) {\n            $cells = this.$grid.find('td.selectable')\n            $lastCell = $cells.eq($cells.length - 1)\n            this.$grid.attr('aria-activedescendant', $lastCell.attr('id'))\n            this.selectGridCell($lastCell.attr('id'))\n          } else {\n            this.selectGridCell(active)\n          }\n        }\n        e.stopPropagation()\n        return false\n      }\n      case this.keys.home: {\n        if (e.ctrlKey || e.shiftKey) {\n          return true\n        }\n        var $firstCell = $cells.eq(0)\n        this.unSelectGridCell($curCell.attr('id'))\n        this.$grid.attr('aria-activedescendant', $firstCell.attr('id'))\n        this.selectGridCell($firstCell.attr('id'))\n        e.stopPropagation()\n        return false\n      }\n      case this.keys.end: {\n        if (e.ctrlKey || e.shiftKey) {\n          return true\n        }\n        $lastCell = $cells.eq($cells.length - 1)\n        this.unSelectGridCell($curCell.attr('id'))\n        this.$grid.attr('aria-activedescendant', $lastCell.attr('id'))\n        this.selectGridCell($lastCell.attr('id'))\n        e.stopPropagation()\n        return false\n      }\n    }\n    return true\n  } // end handleGridKeyDown()\n\n  /**\n   *\thandleGridKeyPress() is a member function to consume keypress events for browsers that\n   *\tuse keypress to scroll the screen and manipulate tabs\n   *\n   *\t@param (e obj) e is the event object associated with the event\n   *\n   * \t@return (boolean) false if consuming event, true if propagating\n   */\n  Datepicker.prototype.handleGridKeyPress = function (e) {\n    if (e.altKey) {\n      return true\n    }\n    switch (e.keyCode) {\n      case this.keys.tab:\n      case this.keys.enter:\n      case this.keys.space:\n      case this.keys.esc:\n      case this.keys.left:\n      case this.keys.right:\n      case this.keys.up:\n      case this.keys.down:\n      case this.keys.pageup:\n      case this.keys.pagedown:\n      case this.keys.home:\n      case this.keys.end: {\n        e.stopPropagation()\n        return false\n      }\n    }\n    return true\n  } // end handleGridKeyPress()\n\n  /**\n   *\thandleGridClick() is a member function to process mouse click events for the Datepicker grid\n   *\n   *\t@param (id string) id is the id of the object triggering the event\n   *\n   *\t@param (e obj) e is the event object associated with the event\n   *\n   *\t@return (boolean) false if consuming event, true if propagating\n   */\n  Datepicker.prototype.handleGridClick = function (id, e) {\n    var $cell = $(id)\n    if ($cell.is('.empty') || $cell.is('.unselectable')) {\n      return true\n    }\n    this.$grid.find('.focus').removeClass('focus').attr('aria-selected', 'false').attr('tabindex', -1)\n    switch (this.gridType) {\n      case 0: // days grid\n        this.$grid.attr('aria-activedescendant', $cell.attr('id'))\n        this.selectGridCell($cell.attr('id'))\n        // update the target box\n        this.update()\n        // dismiss the dialog box\n        this.hide()\n        break\n      case 1: // months grid\n        this.showDaysOfMonth(parseInt($cell.attr('data-value'), 10))\n        break\n      case 2: // years grid\n        this.showMonthsOfYear(parseInt($cell.attr('data-value'), 10))\n        break\n    }\n    e.stopPropagation()\n    return false\n  } // end handleGridClick()\n\n  /**\n   *\thandleGridFocus() is a member function to process focus events for the Datepicker grid\n   *\n   *\t@param (e obj) e is the event object associated with the event\n   *\n   *\t@return (boolean) true\n   */\n  Datepicker.prototype.handleGridFocus = function () {\n    var active = this.$grid.attr('aria-activedescendant')\n    if ($('#' + active).attr('id') == undefined) {\n      var $cells = this.$grid.find('td.selectable')\n      var $lastCell = $cells.eq($cells.length - 1)\n      this.$grid.attr('aria-activedescendant', $lastCell.attr('id'))\n      this.selectGridCell($lastCell.attr('id'))\n    } else {\n      this.selectGridCell(active)\n    }\n    return true\n  } // end handleGridFocus()\n\n  /**\n   *\thandleGridBlur() is a member function to process blur events for the Datepicker grid\n   *\t@param (e obj) e is the event object associated with the event\n   *\n   *\t@return (boolean) true\n   */\n  Datepicker.prototype.handleGridBlur = function () {\n    this.unSelectGridCell(this.$grid.attr('aria-activedescendant'))\n    return true\n  } // end handleGridBlur()\n\n  /**\n   *\thandleTabOut() is a member function to process tab key in Datepicker grid\n   *\n   * @param (e obj) e is the event object associated with the event\n   * @return (boolean) true\n   */\n  Datepicker.prototype.handleTabOut = function (e) {\n    var fields = $('body').find('input:visible,textarea:visible,select:visible')\n    var index = fields.index(this.$target)\n    if (index > -1 && index < fields.length) {\n      if (e.shiftKey) {\n        if (index > 0) {\n          index--\n        }\n      } else {\n        if (index + 1 < fields.length) {\n          index++\n        }\n      }\n      fields.eq(index).focus()\n    }\n    return true\n  } // end handleTabOut()\n\n  /**\n   *\tchangeGrid() is a member function to change the calendar after click or enter into the calendar title\n   *\n   *\t@param (e obj) e is the event object associated with the event\n   *\t@return true\n   */\n  Datepicker.prototype.changeGrid = function (e) {\n    switch (this.gridType) {\n      case 0: // days grid\n        this.populateMonthsCalendar()\n        if (this.year != this.curYear) {\n          var $cells = this.$grid.find('td.selectable')\n          this.$grid.attr('aria-activedescendant', $cells.eq(0).attr('id'))\n        } else {\n          this.$grid.attr('aria-activedescendant', this.$grid.find('.curMonth').attr('id'))\n        }\n        this.selectGridCell(this.$grid.attr('aria-activedescendant'))\n        break\n      case 2: // years grid\n        if (e.shiftKey) {\n          // goto previous twenty years\n          this.year -= 20\n        } else {\n          // goto next twenty years\n          this.year += 20\n        }\n        break\n      case 1: // months grid\n        this.populateYearsCalendar()\n        if (this.year != this.curYear) {\n          $cells = this.$grid.find('td.selectable')\n          this.$grid.attr('aria-activedescendant', $cells.eq(0).attr('id'))\n        } else {\n          this.$grid.attr('aria-activedescendant', this.$grid.find('.curYear').attr('id'))\n        }\n        this.selectGridCell(this.$grid.attr('aria-activedescendant'))\n        break\n    }\n    return true\n  } // end changeGrid()\n\n  /**\n   *\tselectGridCell() is a member function to put focus on the current cell of the grid.\n   *\n   *\t@return N/A\n   */\n  Datepicker.prototype.selectGridCell = function (cellId) {\n    $('#' + cellId)\n      .addClass('focus')\n      .attr('aria-selected', 'true')\n      .attr('tabindex', 0)\n      .focus()\n  } // end selectGridCell()\n\n  /**\n   *\tunSelectGridCell() is a member function to put focus on the current cell of the grid.\n   *\n   *\t@return N/A\n   */\n  Datepicker.prototype.unSelectGridCell = function (cellId) {\n    $('#' + cellId)\n      .removeClass('focus')\n      .attr('aria-selected', 'false')\n      .attr('tabindex', -1)\n  } // end unSelectGridCell()\n\n  /**\n   *\tupdate() is a member function to update the target textbox.\n   *\n   *\t@return N/A\n   */\n  Datepicker.prototype.update = function () {\n    var $curDay = $('#' + this.$grid.attr('aria-activedescendant'))\n    var date = new Date(this.year, this.month, parseInt($curDay.attr('data-value'), 10))\n    var val = this.formatDate(date, this.options.outputFormat)\n    this.$target.val(val)\n    this.$target.removeAttr('aria-invalid')\n    this.$target.parents('.form-group').removeClass('has-error')\n    this.$target.trigger('change')\n    if (this.options.onUpdate) {\n      this.options.onUpdate(val)\n    }\n  } // end update()\n\n  /**\n   *\tupdateLinked() is a member function to update the linked textbox.\n   *\n   *\t@param\t(date Date) the current value of this Datepicker date.\n   *\t@return N/A\n   */\n  Datepicker.prototype.updateLinked = function (date) {\n    if (this.options.previous !== null && this.options.previous.val() !== '') {\n      var previousDate = this.options.previous.datepicker('getDate')\n      if (previousDate > date) {\n        var previousVal = this.formatDate(date, this.options.previous.datepicker('outputFormat'))\n        this.options.previous.val(previousVal)\n      }\n    }\n    if (this.options.next !== null && this.options.next.val() !== '') {\n      var nextDate = this.options.next.datepicker('getDate')\n      if (nextDate < date) {\n        var nextVal = this.formatDate(date, this.options.next.datepicker('outputFormat'))\n        this.options.next.val(nextVal)\n      }\n    }\n  } // end updateLinked()\n\n  /**\n   *\thideObject() is a member function to hide an element of the datepicker.\n   *\n   *\t@param ($element jQuery object) the element to hide\n   *\t@return N/A\n   */\n  Datepicker.prototype.hideObject = function ($element) {\n    $element.attr('aria-hidden', true)\n    $element.fadeOut(100)\n  } // end hideObject()\n\n  /**\n   *\tshowObject() is a member function to show an element of the datepicker.\n   *\n   *\t@param ($element jQuery object) the element to show\n   *\t@return N/A\n   */\n  Datepicker.prototype.showObject = function ($element) {\n    $element.attr('aria-hidden', false)\n    $element.fadeIn(100)\n  } // end showObject()\n\n  /**\n   *\tshow() is a member function to show the Datepicker and give it focus.\n   *\n   *\t@return N/A\n   */\n  Datepicker.prototype.show = function () {\n    var self = this\n    $('.datepicker-calendar').trigger('ab.datepicker.opening', [self.id])\n    if (this.options.modal == true) {\n      if (!this.modalEventHandler) {\n        this.modalEventHandler = function (e) {\n          //ensure focus remains on the dialog\n          self.$grid.focus()\n          // Consume all mouse events and do nothing\n          e.stopPropagation\n          return false\n        }\n      }\n      // Bind an event listener to the document to capture all mouse events to make dialog modal\n      $(document).on('click mousedown mouseup', this.modalEventHandler)\n      this.greyOut(true)\n      var zIndex = parseInt($('#datepicker-overlay').css('z-index'), 10) || 40\n      this.$calendar.css('z-index', zIndex + 1)\n    } else {\n      // Bind an event listener to the document to capture only the mouse click event\n      $(document).on('click', $.proxy(this.handleDocumentClick, this))\n      this.$calendar.on('ab.datepicker.opening', function (e, id) {\n        if (id != self.id) {\n          self.hide()\n        } else {\n          //ensure focus remains on the dialog\n          self.$grid.focus()\n        }\n      })\n    }\n    this.$calendar.on('ab.datepicker.opened', function (e, id) {\n      if (id == self.id) {\n        self.$grid.focus()\n      }\n    })\n\n    // adjust position of the calendar\n    var groupOffsetTop = Math.max(0, Math.floor(this.$group.offset().top - this.$label.offset().top))\n    var groupOffsetLeft = Math.max(0, Math.floor(this.$group.offset().left - this.$label.offset().left))\n    var parentPaddingLeft = parseInt(this.$calendar.parent().css('padding-left'), 10)\n    var calendarHeight = this.$calendar.outerHeight()\n    var groupTop = this.$group.offset().top\n    var groupHeight = this.$group.outerHeight(true)\n    var roomBefore = Math.floor(groupTop - $(window).scrollTop())\n    var roomAfter = Math.floor($(window).height() - (groupTop + groupHeight - $(window).scrollTop()))\n    if (roomAfter < calendarHeight && roomAfter < roomBefore) {\n      // show calendar above group\n      this.$calendar.addClass('above')\n      this.$calendar.css({\n        top: groupOffsetTop - calendarHeight + 'px',\n        left: groupOffsetLeft + parentPaddingLeft + 'px',\n      })\n    } else {\n      // show calendar below group\n      this.$calendar.addClass('below')\n      this.$calendar.css({\n        top: groupHeight + groupOffsetTop + 'px',\n        left: groupOffsetLeft + parentPaddingLeft + 'px',\n      })\n    }\n\n    // show the dialog\n    this.$calendar.attr('aria-hidden', 'false')\n    this.$calendar.fadeIn(100)\n    $('.datepicker-calendar').trigger('ab.datepicker.opened', [self.id])\n  } // end show()\n\n  /**\n   *\trefresh() is a member function to refesh the datepicker content when an option change.\n   *\n   *\t@return N/A\n   */\n  Datepicker.prototype.refresh = function () {\n    this.drawCalendarHeader()\n    switch (this.gridType) {\n      case 0:\n        this.populateDaysCalendar()\n        break\n      case 1:\n        this.populateMonthsCalendar()\n        break\n      case 2:\n        this.populateYearsCalendar()\n        break\n    }\n  } // end refresh()\n\n  /**\n   *\thandleDocumentClick() is a member function to handle click on document.\n   *\n   *\t@param (e obj) e is the event object associated with the event\n   *\n   *\t@return (boolean) false if consuming event, true if propagating\n   */\n  Datepicker.prototype.handleDocumentClick = function (e) {\n    if ($(e.target).parents('#datepicker-calendar-' + this.id).length == 0) {\n      this.hide()\n      return true\n    } else {\n      //ensure focus remains on the dialog\n      this.$grid.focus()\n      // Consume all mouse events and do nothing\n      e.stopPropagation\n      return false\n    }\n  } // end handleDocumentClick()\n\n  /**\n   *\thide() is a member function to hide the Datepicker and remove focus.\n   *\n   *\t@return N/A\n   */\n  Datepicker.prototype.hide = function (omitSettingFocus) {\n    if (this.options.inline == false) {\n      var self = this\n      // unbind the modal event sinks\n      if (this.options.modal == true) {\n        if (this.modalEventHandler) {\n          $(document).off('click mousedown mouseup', this.modalEventHandler)\n        }\n        this.greyOut(false)\n      } else {\n        $(document).off('click', self.handleDocumentClick)\n        this.$calendar.off('ab.datepicker.opening')\n      }\n      // hide the dialog\n      this.$calendar.removeClass('above below')\n      this.$calendar.attr('aria-hidden', 'true')\n      this.$calendar.fadeOut(100)\n      $('.datepicker-calendar').trigger('ab.datepicker.closed', [self.id])\n      // set focus on the focus target\n      if (!omitSettingFocus) {\n        this.$target.focus()\n      }\n    }\n  } // end hide()\n\n  /**\n   *\tgreyOut() is a member function to grey out the document background.\n   *\n   *\t@return N/A\n   */\n  Datepicker.prototype.greyOut = function (on) {\n    var $overlay = $('#datepicker-overlay')\n    if ($overlay.length == 0 && on) {\n      $('body').append('<div id=\"datepicker-overlay\" class=\"datepicker-overlay\"></div>')\n      $overlay = $('#datepicker-overlay')\n    }\n    if (on) {\n      $overlay.fadeIn(100)\n    } else {\n      $overlay.fadeOut(100)\n    }\n  } // end greyOut()\n\n  /**\n   *\tabsolutePosition() is a member function that compute the absolute position\n   *\tof some element within document.\n   *\n   *\t@param (element obj) the element of the document\n   *\t@return an object containing the properties top and left.\n   */\n  Datepicker.prototype.absolutePosition = function (element) {\n    var top = 0,\n      left = 0\n    if (element.getBoundingClientRect) {\n      var box = element.getBoundingClientRect()\n      var body = document.body\n      var docElem = document.documentElement\n      var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop\n      var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft\n      var clientTop = docElem.clientTop || body.clientTop || 0\n      var clientLeft = docElem.clientLeft || body.clientLeft || 0\n      top = Math.round(box.top + scrollTop - clientTop)\n      left = Math.round(box.left + scrollLeft - clientLeft)\n    } else {\n      while (element) {\n        top = top + parseInt(element.offsetTop, 10)\n        left = left + parseInt(element.offsetLeft, 10)\n        element = element.offsetParent\n      }\n    }\n    return { top: top, left: left }\n  } // end absolutePosition()\n\n  /**\n   *\tgetDaysInMonth() is a member function to calculate the number of days in a given month\n   *\n   *\t@param (year int) the year\n   *\t@param (month int) the given month\n   *\n   *\t@return (integer) number of days\n   */\n  Datepicker.prototype.getDaysInMonth = function (year, month) {\n    return 32 - new Date(year, month, 32).getDate()\n  } // end getDaysInMonth()\n\n  /**\n   *\tpreviousMonth() is a member function that compute the month\n   *\tpreceding a given month.\n   *\n   *\t@param (year int) the given year\n   *\t@param (month int) the given month\n   *\t@return an object containing the properties year and month.\n   */\n  Datepicker.prototype.previousMonth = function (year, month) {\n    if (month == 0) {\n      month = 11\n      year--\n    } else {\n      month--\n    }\n    return { year: year, month: month }\n  } // end previousMonth()\n\n  /**\n   *\tnextMonth() is a member function that compute the month\n   *\tfollowing a given month.\n   *\n   *\t@param (year int) the given year\n   *\t@param (month int) the given month\n   *\t@return an object containing the properties year and month.\n   */\n  Datepicker.prototype.nextMonth = function (year, month) {\n    if (month == 11) {\n      month = 0\n      year++\n    } else {\n      month++\n    }\n    return { year: year, month: month }\n  } // end nextMonth()\n\n  /**\n   *\tformatDate (date_object, format)\n   *\tThe format string uses the same abbreviations as in createDateFromFormat()\n   *\n   *\t@param (date date object) the given date\n   *\t@param (format string) the given output format\n   *\t@returns a date in the output format specified.\n   */\n  Datepicker.prototype.formatDate = function (date, format) {\n    var zeroPad = function (x) {\n      return (x < 0 || x > 9 ? '' : '0') + x\n    }\n    var getWeekOfMonth = function (date) {\n      return Math.ceil((date.getDate() - 1 - date.getDay()) / 7)\n    }\n    var getWeekOfYear = function (date) {\n      var onejan = new Date(date.getFullYear(), 0, 1)\n      return Math.ceil(((date - onejan) / 86400000 + onejan.getDay() + 1) / 7)\n    }\n    var getDayOfYear = function (date) {\n      var start = new Date(date.getFullYear(), 0, 0)\n      return Math.floor((date - start) / 86400000)\n    }\n    var getMillisecondsInDay = function (date) {\n      var date1 = new Date(date.getTime())\n      date1.setHours(0)\n      return date - date1\n    }\n    var y = date.getFullYear() + ''\n    var M = date.getMonth() + 1\n    var d = date.getDate()\n    var D = getDayOfYear(date)\n    var E = date.getDay()\n    var H = date.getHours()\n    var m = date.getMinutes()\n    var s = date.getSeconds()\n    var w = getWeekOfYear(date)\n    var W = getWeekOfMonth(date)\n    var F = Math.floor(date.getDate() / 7) + 1\n    var Q = Math.ceil((date.getMonth() + 1) / 3)\n    var era = date.getFullYear() < 1 ? 0 : 1\n    var values = {\n      y: '' + y,\n      yyyy: y,\n      yy: y.substring(2, 4),\n      L: M,\n      LL: zeroPad(M),\n      LLL: this.locales.month_names_abbreviated[M - 1],\n      LLLL: this.locales.month_names[M - 1],\n      LLLLL: this.locales.month_names_narrow[M - 1],\n      M: M,\n      MM: zeroPad(M),\n      MMM: this.locales.month_names_abbreviated[M - 1],\n      MMMM: this.locales.month_names[M - 1],\n      MMMMM: this.locales.month_names_narrow[M - 1],\n      d: d,\n      dd: zeroPad(d),\n      D: D,\n      DD: D,\n      DDD: D,\n      A: Math.round(getMillisecondsInDay(date) * Math.pow(10, -2)),\n      AA: Math.round(getMillisecondsInDay(date) * Math.pow(10, -1)),\n      AAA: Math.round(getMillisecondsInDay(date) * Math.pow(10, 0)),\n      AAAA: Math.round(getMillisecondsInDay(date) * Math.pow(10, 1)),\n      AAAAA: Math.round(getMillisecondsInDay(date) * Math.pow(10, 2)),\n      AAAAAA: Math.round(getMillisecondsInDay(date) * Math.pow(10, 3)),\n      E: this.locales.day_names_abbreviated[E],\n      EE: this.locales.day_names_abbreviated[E],\n      EEE: this.locales.day_names_abbreviated[E],\n      EEEE: this.locales.day_names[E],\n      EEEEE: this.locales.day_names_narrow[E],\n      EEEEEE: this.locales.day_names_short[E],\n      e: E,\n      ee: E,\n      eee: this.locales.day_names_abbreviated[E],\n      eeee: this.locales.day_names[E],\n      eeeee: this.locales.day_names_narrow[E],\n      eeeeee: this.locales.day_names_short[E],\n      c: E,\n      cc: E,\n      ccc: this.locales.day_names_abbreviated[E],\n      cccc: this.locales.day_names[E],\n      ccccc: this.locales.day_names_narrow[E],\n      cccccc: this.locales.day_names_short[E],\n      F: F,\n      G: this.locales.era_names_abbreviated[era],\n      GG: this.locales.era_names_abbreviated[era],\n      GGG: this.locales.era_names_abbreviated[era],\n      GGGG: this.locales.era_names[era],\n      GGGGG: this.locales.era_names_narrow[era],\n      Q: Q,\n      QQ: zeroPad(Q),\n      QQQ: this.locales.quarter_names_abbreviated[Q - 1],\n      QQQQ: this.locales.quarter_names[Q - 1],\n      QQQQQ: this.locales.quarter_names_narrow[Q - 1],\n      q: Q,\n      qq: zeroPad(Q),\n      qqq: this.locales.quarter_names_abbreviated[Q - 1],\n      qqqq: this.locales.quarter_names[Q - 1],\n      qqqqq: this.locales.quarter_names_narrow[Q - 1],\n      H: H,\n      HH: zeroPad(H),\n      h: H == 0 ? 12 : H > 12 ? H - 12 : H,\n      hh: zeroPad(H == 0 ? 12 : H > 12 ? H - 12 : H),\n      K: H > 11 ? H - 12 : H,\n      k: H + 1,\n      KK: zeroPad(H > 11 ? H - 12 : H),\n      kk: zeroPad(H + 1),\n      a: H > 11 ? this.locales.day_periods.pm : this.locales.day_periods.am,\n      m: m,\n      mm: zeroPad(m),\n      s: s,\n      ss: zeroPad(s),\n      w: w,\n      ww: zeroPad(w),\n      W: W,\n    }\n    return format.replace(\n      /('[^']+'|y{1,4}|L{1,5}|M{1,5}|c{1,6}|d{1,2}|D{1,3}|E{1,6}|e{1,6}|F{1,1}|G{1,5}|Q{1,5}|q{1,5}|H{1,2}|h{1,2}|K{1,2}|k{1,2}|m{1,2}|s{1,2}|w{1,2}|W{1,1}|A{1,6})/g,\n      function (mask) {\n        return mask.charAt(0) === \"'\" ? mask.substr(1, mask.length - 2) : values[mask] || mask\n      }\n    )\n  } // end formatDate()\n\n  /**\n   *\tcreateDateFromFormat( format_string, date_string )\n   *\n   *\tThis function takes a date string and a format string. It matches\n   *\tIf the date string matches the format string, it returns the\n   *\tthe date object. If it does not match, it returns null.\n   */\n  Datepicker.prototype.createDateFromFormat = function (format, value) {\n    var extractInteger = function (str, pos, minlength, maxlength) {\n      for (var x = maxlength; x >= minlength; x--) {\n        var integer = str.substring(pos, pos + x)\n        if (integer.length < minlength) {\n          return null\n        }\n        if (/^\\d+$/.test(integer)) {\n          return integer\n        }\n      }\n      return null\n    }\n    var skipName = function (names, pos) {\n      for (var i = 0; i < names.length; i++) {\n        var name = names[i]\n        if (value.substring(pos, pos + name.length).toLowerCase() == name.toLowerCase()) {\n          return name.length\n        }\n      }\n      return 0\n    }\n    var pos = 0\n    var now = new Date()\n    var year = now.getYear()\n    var month = now.getMonth() + 1\n    var date = 1\n    var hh = 0\n    var mm = 0\n    var ss = 0\n    var ampm = ''\n    var self = this\n\n    $.each(format.match(/(.).*?\\1*/g), function (k, token) {\n      // Extract contents of value based on format token\n      switch (token) {\n        case 'yyyy':\n          year = extractInteger(value, pos, 4, 4)\n          if (year != null) {\n            pos += year.length\n          }\n          break\n        case 'yy':\n          year = extractInteger(value, pos, 2, 2)\n          if (year != null) {\n            pos += year.length\n          }\n          break\n        case 'y':\n          year = extractInteger(value, pos, 2, 4)\n          if (year != null) {\n            pos += year.length\n          }\n          break\n        case 'MMM':\n        case 'LLL':\n          month = 0\n          for (var i = 0; i < self.locales.month_names_abbreviated.length; i++) {\n            var month_name = self.locales.month_names_abbreviated[i]\n            if (value.substring(pos, pos + month_name.length).toLowerCase() == month_name.toLowerCase()) {\n              month = i + 1\n              pos += month_name.length\n              break\n            }\n          }\n          break\n        case 'MMMM':\n        case 'LLLL':\n          month = 0\n          for (i = 0; i < self.locales.month_names.length; i++) {\n            month_name = self.locales.month_names[i]\n            if (value.substring(pos, pos + month_name.length).toLowerCase() == month_name.toLowerCase()) {\n              month = i + 1\n              pos += month_name.length\n              break\n            }\n          }\n          break\n        case 'EEE':\n        case 'EE':\n        case 'E':\n        case 'eee':\n          pos += skipName(self.locales.day_names_abbreviated, pos)\n          break\n        case 'EEEE':\n        case 'eeee':\n        case 'cccc':\n          pos += skipName(self.locales.day_names, pos)\n          break\n        case 'EEEEEE':\n        case 'eeeeee':\n        case 'cccccc':\n          pos += skipName(self.locales.day_names_short, pos)\n          break\n        case 'MM':\n        case 'M':\n        case 'LL':\n        case 'L':\n          month = extractInteger(value, pos, token.length, 2)\n          if (month == null || month < 1 || month > 12) {\n            return null\n          }\n          pos += month.length\n          break\n        case 'dd':\n        case 'd':\n          date = extractInteger(value, pos, token.length, 2)\n          if (date == null || date < 1 || date > 31) {\n            return null\n          }\n          pos += date.length\n          break\n        case 'hh':\n        case 'h':\n          hh = extractInteger(value, pos, token.length, 2)\n          if (hh == null || hh < 1 || hh > 12) {\n            return null\n          }\n          pos += hh.length\n          break\n        case 'HH':\n        case 'H':\n          hh = extractInteger(value, pos, token.length, 2)\n          if (hh == null || hh < 0 || hh > 23) {\n            return null\n          }\n          pos += hh.length\n          break\n        case 'KK':\n        case 'K':\n          hh = extractInteger(value, pos, token.length, 2)\n          if (hh == null || hh < 0 || hh > 11) {\n            return null\n          }\n          pos += hh.length\n          break\n        case 'kk':\n        case 'k':\n          hh = extractInteger(value, pos, token.length, 2)\n          if (hh == null || hh < 1 || hh > 24) {\n            return null\n          }\n          pos += hh.length\n          hh--\n          break\n        case 'mm':\n        case 'm':\n          mm = extractInteger(value, pos, token.length, 2)\n          if (mm == null || mm < 0 || mm > 59) {\n            return null\n          }\n          pos += mm.length\n          break\n        case 'ss':\n        case 's':\n          ss = extractInteger(value, pos, token.length, 2)\n          if (ss == null || ss < 0 || ss > 59) {\n            return null\n          }\n          pos += ss.length\n          break\n        case 'a':\n          var amlength = self.locales.day_periods.am.length\n          var pmlength = self.locales.day_periods.pm.length\n          if (value.substring(pos, pos + amlength) == self.locales.day_periods.am) {\n            ampm = 'AM'\n            pos += amlength\n          } else if (value.substring(pos, pos + pmlength) == self.locales.day_periods.pm) {\n            ampm = 'PM'\n            pos += pmlength\n          } else {\n            return null\n          }\n          break\n        default:\n          if (value.substring(pos, pos + token.length) != token) {\n            return null\n          } else {\n            pos += token.length\n          }\n      }\n    })\n    // If there are any trailing characters left in the value, it doesn't match\n    if (pos != value.length) {\n      return null\n    }\n    if (year == null) {\n      return null\n    }\n    if (year.length == 2) {\n      if (year > 50) {\n        year = 1900 + (year - 0)\n      } else {\n        year = 2000 + (year - 0)\n      }\n    }\n    // Is date valid for month?\n    if (month < 1 || month > 12) {\n      return null\n    }\n    if (month == 2) {\n      // Check for leap year\n      if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {\n        // leap year\n        if (date > 29) {\n          return null\n        }\n      } else {\n        if (date > 28) {\n          return null\n        }\n      }\n    }\n    if (month == 4 || month == 6 || month == 9 || month == 11) {\n      if (date > 30) {\n        return null\n      }\n    }\n    // Correct hours value\n    if (hh < 12 && ampm == 'PM') {\n      hh = hh - 0 + 12\n    } else if (hh > 11 && ampm == 'AM') {\n      hh -= 12\n    }\n    return new Date(year, month - 1, date, hh, mm, ss)\n  } // end createDateFromFormat()\n\n  /**\n   *\tparseDate() is a member function which parse a date string.\n   *\n   *\tThis function takes a date string and try to parse it with the input formats.\n   *\tIf the date string matches one of the format string, it returns the\n   *\tthe date object. Otherwise, it returns null.\n   *\n   *\t@param (value string) the date string\n   *\t@return a date objet or null\n   */\n  Datepicker.prototype.parseDate = function (value) {\n    var date = null\n    var self = this\n    $.each(this.options.inputFormat, function (i, format) {\n      date = self.createDateFromFormat(format, value)\n      if (date != null) {\n        return false\n      }\n    })\n    if (date == null) {\n      // last try with the output format\n      date = self.createDateFromFormat(this.options.outputFormat, value)\n    }\n    return date\n  } // end parseDate()\n\n  /**\n   *\tmin() is a public member function which allow change the smallest selectable date.\n   *\n   *\t@param (value string) the new date\n   *\t@return the smallest selectable date\n   */\n  Datepicker.prototype.min = function (value) {\n    if (value != null) {\n      this.options.min = value instanceof Date ? value : this.parseDate(value)\n      if (this.options.min != null && this.dateObj < this.options.min) {\n        this.$target.attr('aria-invalid', true)\n        this.$target.parents('.form-group').addClass('has-error')\n        this.dateObj = this.options.min\n      }\n      if (this.options.inline != false) {\n        this.refresh()\n      }\n    }\n    return this.options.min\n  } // end min()\n\n  /**\n   *\tmax() is a public member function which allow change the biggest selectable date.\n   *\n   *\t@param (value string) the new date\n   *\t@return the biggest selectable date\n   */\n  Datepicker.prototype.max = function (value) {\n    if (value != null) {\n      this.options.max = value instanceof Date ? value : this.parseDate(value)\n      if (this.options.max != null && this.dateObj > this.options.max) {\n        this.$target.attr('aria-invalid', true)\n        this.$target.parents('.form-group').addClass('has-error')\n        this.dateObj = this.options.max\n      }\n      if (this.options.inline != false) {\n        this.refresh()\n      }\n    }\n    return this.options.max\n  } // end max()\n\n  /**\n   *\ttheme() is a public member function which allow change the datepicker theme.\n   *\n   *\t@param (value string) the new theme\n   *\t@return the datepicker theme\n   */\n  Datepicker.prototype.theme = function (value) {\n    if (value != null) {\n      this.$button.removeClass(this.options.theme)\n      this.$calendar.removeClass(this.options.theme)\n      this.options.theme = value\n      this.$button.addClass(this.options.theme)\n      this.$calendar.addClass(this.options.theme)\n    }\n    return this.options.theme\n  } // end theme()\n\n  /**\n   *\tfirstDayOfWeek() is a public member function which allow change the first Day Of Week.\n   *\n   *\t@param (value integer) the new first Day Of Week\n   *\t@return the first Day Of Week\n   */\n  Datepicker.prototype.firstDayOfWeek = function (value) {\n    if (value != null) {\n      this.options.firstDayOfWeek = parseInt(value, 10)\n      if (this.options.inline == false) {\n        this.drawCalendarHeader()\n      } else {\n        this.refresh()\n      }\n    }\n    return this.options.firstDayOfWeek\n  } // end firstDayOfWeek()\n\n  /**\n   *\tdaysOfWeekDisabled() is a public member function which allow disabling of some weekdays.\n   *\n   *\t@param (value string) the new disabled week days\n   *\t@return the disabled week days\n   */\n  Datepicker.prototype.daysOfWeekDisabled = function (value) {\n    if (value != null) {\n      this.options.daysOfWeekDisabled = []\n      if (!$.isArray(value)) {\n        value = [value]\n      }\n      var self = this\n      $.each(value, function (i, val) {\n        if (typeof val === 'number') {\n          self.options.daysOfWeekDisabled.push(val)\n        } else if (typeof val === 'string') {\n          self.options.daysOfWeekDisabled.push(parseInt(val, 10))\n        }\n      })\n    }\n    return this.options.daysOfWeekDisabled\n  } // end daysOfWeekDisabled()\n\n  /**\n   *\tweekDayFormat() is a public member function which allow change the format of weekdays name.\n   *\n   *\t@param (value string) the new format. Allowed : 'short' or 'narrow'\n   *\t@return the format of weekdays name\n   */\n  Datepicker.prototype.weekDayFormat = function (value) {\n    if (value != null) {\n      this.options.weekDayFormat = value\n      this.drawCalendarHeader()\n    }\n    return this.options.weekDayFormat\n  } // end weekDayFormat()\n\n  /**\n   *\tinputFormat() is a public member function which allow change the input format.\n   *\n   *\t@param (value string) the new format\n   *\t@return the input format\n   */\n  Datepicker.prototype.inputFormat = function (value) {\n    if (value != null) {\n      if (!$.isArray(value)) {\n        value = [value]\n      }\n      if (this.$target.attr('placeholder') == this.options.inputFormat[0]) {\n        this.$target.attr('placeholder', value[0])\n      }\n      this.options.inputFormat = value\n    }\n    return this.options.inputFormat\n  } // end inputFormat()\n\n  /**\n   *\toutputFormat() is a public member function which allow change the output format.\n   *\n   *\t@param (value string) the new format\n   *\t@return the output format\n   */\n  Datepicker.prototype.outputFormat = function (value) {\n    if (value != null) {\n      this.options.outputFormat = value\n    }\n    return this.options.outputFormat\n  } // end outputFormat()\n\n  /**\n   *\tmodal() is a public member function which allow to set or unset the modal mode.\n   *\n   *\t@param (value boolean) the new modal mode\n   *\t@return the modal mode\n   */\n  Datepicker.prototype.modal = function (value) {\n    if (value != null) {\n      this.options.modal = value\n      if (this.options.modal == true) {\n        if (this.options.inline == false) {\n          this.showObject(this.$calendar.find('.datepicker-close-wrap'))\n          this.showObject(this.$calendar.find('.datepicker-bn-close-label'))\n        }\n        this.$close = this.$calendar.find('.datepicker-close')\n        this.$close.html(this.options.closeButtonTitle).attr('title', this.options.closeButtonLabel)\n        this.$calendar.find('.datepicker-bn-close-label').html(this.options.closeButtonLabel)\n        var self = this\n        this.$close.click(function (e) {\n          return self.handleCloseClick(e)\n        })\n        this.$close.keydown(function (e) {\n          return self.handleCloseKeyDown(e)\n        })\n      } else {\n        this.hideObject(this.$calendar.find('.datepicker-close-wrap'))\n        this.hideObject(this.$calendar.find('.datepicker-bn-close-label'))\n      }\n    }\n    return this.options.modal\n  } // end modal()\n\n  /**\n   *\tinline() is a public member function which allow to set or unset the inline mode.\n   *\n   *\t@param (value string or false) the id or jquery object of the datepicker container, false otherwise (not inline)\n   *\t@return the given value\n   */\n  Datepicker.prototype.inline = function (value) {\n    if (value != null) {\n      if (value != false) {\n        this.hideObject(this.$button)\n        this.hideObject(this.$calendar.find('.datepicker-close-wrap'))\n        this.hideObject(this.$calendar.find('.datepicker-bn-close-label'))\n        var $container = typeof value === 'string' ? $('#' + value) : value\n        $container.append(this.$calendar)\n        this.$calendar.css({ position: 'relative', left: '0px', top: '0px' })\n        this.options.inline = value\n        this.initializeDate()\n        this.showObject(this.$calendar)\n      } else {\n        this.$target.parent().after(this.$calendar)\n        this.showObject(this.$button)\n        if (this.options.modal == true) {\n          this.showObject(this.$calendar.find('.datepicker-close-wrap'))\n          this.showObject(this.$calendar.find('.datepicker-bn-close-label'))\n        }\n        if (this.$calendar.parent().css('position') === 'static') {\n          this.$calendar.parent().css('position', 'relative')\n        }\n        this.$calendar.css({ position: 'absolute' })\n        this.options.inline = value\n        this.hide()\n      }\n    }\n    return this.options.inline\n  } // end inline()\n\n  /**\n   *\tformat() is a public member function to format a date according the output format.\n   *\n   *\t@param (value date object) the date\n   *\t@return formatted date string\n   */\n  Datepicker.prototype.format = function (date) {\n    return this.formatDate(date, this.options.outputFormat)\n  } // end format()\n\n  /**\n   *\tenable() is a public member function to enable this datepicker.\n   */\n  Datepicker.prototype.enable = function () {\n    this.$button.removeClass('disabled')\n    this.$button.attr('aria-disabled', false)\n    this.$button.attr('tabindex', 0)\n  } // end enable()\n\n  /**\n   *\tdisable() is a public member function to disable this datepicker.\n   */\n  Datepicker.prototype.disable = function () {\n    this.hide()\n    this.$button.addClass('disabled')\n    this.$button.attr('aria-disabled', true)\n    this.$button.attr('tabindex', -1)\n  } // end enable()\n\n  /**\n   *\tdatesDisabled() is a public member function to set dates to be disabled.\n   */\n  Datepicker.prototype.datesDisabled = function (dates) {\n    this.options.datesDisabled = []\n    if (!$.isArray(dates)) {\n      dates = [dates]\n    }\n    var self = this\n    $.each(dates, function (i, v) {\n      if (typeof v === 'string') {\n        var date = self.parseDate(v)\n        if (date !== null) {\n          self.options.datesDisabled.push(self.format(date))\n        }\n      } else if (v instanceof Date && !isNaN(v.valueOf())) {\n        self.options.datesDisabled.push(self.format(v))\n      }\n    })\n  } // end datesDisabled()\n\n  /**\n   *\tstartview() is a public member function to format a date according the output format.\n   *\n   *\t@param (value int|string) the new view\n   *\t@return  N/A\n   */\n  Datepicker.prototype.startview = function (view) {\n    switch (view) {\n      case 1:\n      case 'months':\n        this.options.startView = 1\n        break\n      case 2:\n      case 'years':\n        this.options.startView = 2\n        break\n      default:\n        this.options.startView = 0\n    }\n  } // end startview()\n\n  /**\n   *\tsetLocales() is a public member function which allow change the locales.\n   *\n   *\t@param (value obj) the new locales\n   *\t@return N/A\n   */\n  Datepicker.prototype.setLocales = function (value) {\n    this.locales = value\n    this.options.inputFormat = [this.locales.short_format]\n    this.options.outputFormat = this.locales.short_format\n    ;(this.options.titleFormat = this.locales.full_format), (this.options.firstDayOfWeek = this.locales.firstday_of_week)\n    this.options.buttonTitle = this.locales.texts.buttonTitle\n    this.$button.find('span').attr('title', this.options.buttonTitle)\n    this.options.buttonLabel = this.locales.texts.buttonLabel\n    this.options.prevButtonLabel = this.locales.texts.prevButtonLabel\n    this.options.prevMonthButtonLabel = this.locales.texts.prevMonthButtonLabel\n    this.options.prevYearButtonLabel = this.locales.texts.prevYearButtonLabel\n    this.options.nextButtonLabel = this.locales.texts.nextButtonLabel\n    this.options.nextMonthButtonLabel = this.locales.texts.nextMonthButtonLabel\n    this.options.nextYearButtonLabel = this.locales.texts.nextYearButtonLabel\n    this.options.changeMonthButtonLabel = this.locales.texts.changeMonthButtonLabel\n    this.options.changeYearButtonLabel = this.locales.texts.changeYearButtonLabel\n    this.options.changeRangeButtonLabel = this.locales.texts.changeRangeButtonLabel\n    this.options.closeButtonTitle = this.locales.texts.closeButtonTitle\n    this.options.closeButtonLabel = this.locales.texts.closeButtonLabel\n    this.options.calendarHelp = this.locales.texts.calendarHelp\n    this.drawCalendarHeader()\n    if (this.locales.directionality === 'RTL') {\n      this.$grid.addClass('rtl')\n    } else {\n      this.$grid.removeClass('rtl')\n    }\n  } // end outputFormat()\n\n  // DATEPICKER PLUGIN DEFINITION\n  // ==========================\n\n  var old = $.fn.datepicker\n\n  $.fn.datepicker = function (option, value) {\n    if (typeof option == 'string' && $(this).length == 1) {\n      var data = $(this).eq(0).data('ab.datepicker')\n      if (data) return data[option](value)\n    } else {\n      return this.each(function () {\n        var $this = $(this)\n        var data = $this.data('ab.datepicker')\n        var options = $.extend({}, Datepicker.DEFAULTS, $this.data(), typeof option == 'object' && option)\n        if (!data) $this.data('ab.datepicker', (data = new Datepicker(this, options)))\n        if (typeof option == 'string') data[option](value)\n      })\n    }\n  }\n\n  $.fn.datepicker.Constructor = Datepicker\n\n  // DATEPICKER NO CONFLICT\n  // ====================\n\n  $.fn.datepicker.noConflict = function () {\n    $.fn.datepicker = old\n    return this\n  }\n})\n\n/* !\n * \"position: sticky\" jQuery plugin / polyfill\n * https://github.com/regru/i-sticky\n * License: MIT\n */\n;(function ($) {\n  var prefixTestList = ['', '-webkit-', '-ms-', '-moz-', '-o-'],\n    stickyTestElement = document.createElement('div'),\n    hasNativeSupport = false,\n    areWindowEventsAttached = false,\n    isAnimationRequested = false,\n    lastKnownScrollTop = 0,\n    affectedChromeVersions = ['56'],\n    // requestAnimationFrame may be prefixed\n    requestAnimationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame,\n    idCounter = 0,\n    stickies = [],\n    methods = {\n      unstick: function () {\n        var currentId = $(this).data('sticky-id'),\n          removeIndex,\n          el\n\n        for (var i = stickies.length - 1; i >= 0; i--) {\n          if (stickies[i].id == currentId) {\n            removeIndex = i\n            break\n          }\n        }\n\n        if (typeof removeIndex !== 'undefined') {\n          el = stickies.splice(removeIndex, 1)\n        }\n\n        if (typeof el !== 'undefined') {\n          $(this)\n            .removeAttr('style')\n            .next('.' + el[0].options.holderClass)\n            .remove()\n        }\n\n        return this\n      },\n    }\n\n  if (!checkIfBrowserAffectedWithBug()) {\n    for (var i = 0, l = prefixTestList.length; i < l; i++) {\n      stickyTestElement.setAttribute('style', 'position:' + prefixTestList[i] + 'sticky')\n\n      if (stickyTestElement.style.position !== '') {\n        hasNativeSupport = true\n        break\n      }\n    }\n  }\n\n  $.fn.iSticky = function (methodOrOptions) {\n    if (hasNativeSupport) {\n      if (typeof methodOrOptions === 'object' && methodOrOptions.force) {\n        attachWindowEvents()\n      } else {\n        return this\n      }\n    }\n\n    if (typeof methodOrOptions === 'string' && methods[methodOrOptions]) {\n      return methods[methodOrOptions].apply(this, Array.prototype.slice.call(arguments, 1))\n    }\n\n    var options = $.extend(\n        {\n          holderClass: 'i-sticky__holder',\n          holderAutoHeight: true,\n          debug: false,\n          fixWidth: true,\n          stuckClass: '',\n        },\n        methodOrOptions\n      ),\n      selector = this.selector\n\n    return this.each(function () {\n      var $this = $(this),\n        id = 'sticky-' + ++idCounter,\n        topCSSstring,\n        bottomCSSstring,\n        item\n\n      // 'auto' value workaround\n      // http://stackoverflow.com/questions/13455931/jquery-css-firefox-dont-return-auto-values\n      $this.hide()\n\n      topCSSstring = $this.css('top')\n      bottomCSSstring = $this.css('bottom')\n\n      $this.show()\n\n      if (!topCSSstring && !bottomCSSstring) {\n        if (options.debug) {\n          console.warn('i-sticky: element `top` or `bottom` properties must be set in pixels', selector, this)\n        }\n\n        return\n      }\n\n      $this.data('sticky-id', id).after('<span class=\"' + options.holderClass + '\" style=\"display:none;\"></span>')\n\n      item = {\n        id: id,\n        el: this,\n        parent: this.parentElement,\n        holder: this.nextSibling,\n        style: {\n          home: 'position:static;',\n          top: undefined,\n          bottom: undefined,\n          current: '',\n          height: 0,\n          isStuck: false,\n          margin: { left: parseInt($this.css('margin-left'), 10) },\n        },\n        options: {\n          holderClass: options.holderClass,\n          holderAutoHeight: options.holderAutoHeight,\n          fixWidth: options.fixWidth,\n          stuckClass: options.stuckClass || '',\n        },\n      }\n\n      if (topCSSstring !== 'auto') {\n        item.style.top = {\n          fixed: 'position:fixed;top:' + topCSSstring + ';bottom:auto;',\n          opposite: 'position:absolute;bottom:0;top:auto;',\n          px: parseInt(topCSSstring, 10),\n        }\n      }\n\n      if (bottomCSSstring !== 'auto') {\n        item.style.bottom = {\n          fixed: 'position:fixed;bottom:' + bottomCSSstring + ';top:auto;',\n          opposite: 'position:absolute;top:0;bottom:auto;',\n          px: parseInt(bottomCSSstring, 10),\n        }\n      }\n\n      stickies.push(item)\n\n      updateScrollPos()\n    })\n  }\n\n  function getOffset(elem) {\n    var docElem,\n      body,\n      win,\n      clientTop,\n      clientLeft,\n      scrollTop,\n      scrollLeft,\n      box = {\n        top: 0,\n        left: 0,\n      },\n      doc = elem && elem.ownerDocument\n\n    if (!doc) {\n      if (options.debug) {\n        console.error('i-sticky: no element.ownerDocument defined')\n      }\n\n      return\n    }\n\n    if ((body = doc.body) === elem) {\n      return {\n        top: body.offsetTop,\n        left: body.offsetLeft,\n      }\n    }\n\n    docElem = doc.documentElement\n\n    if (typeof elem.getBoundingClientRect !== 'undefined') {\n      box = elem.getBoundingClientRect()\n    }\n\n    win = window\n    clientTop = docElem.clientTop || body.clientTop || 0\n    clientLeft = docElem.clientLeft || body.clientLeft || 0\n    scrollTop = win.pageYOffset || docElem.scrollTop\n    scrollLeft = win.pageXOffset || docElem.scrollLeft\n\n    return {\n      top: box.top + scrollTop - clientTop,\n      left: box.left + scrollLeft - clientLeft,\n    }\n  }\n\n  function setPositions() {\n    var scrollTop = lastKnownScrollTop,\n      scrollLeft = window.pageXOffset || document.documentElement.scrollLeft,\n      windowHeight = window.innerHeight || document.documentElement.clientHeight,\n      scrollBottom = scrollTop + windowHeight\n\n    isAnimationRequested = false\n\n    for (var i = 0, l = stickies.length; i < l; i++) {\n      var item = stickies[i],\n        height = item.el.offsetHeight,\n        parentOffset = getOffset(item.parent),\n        homeOffset = item.style.isStuck ? getOffset(item.holder) : getOffset(item.el),\n        topPx = item.style.top ? item.style.top.px : 0,\n        bottomPx = item.style.bottom ? item.style.bottom.px : 0,\n        style = item.style.home,\n        isStuck = true,\n        classes = item.el.className.split(' '),\n        index = 0,\n        points = {\n          parent: parentOffset.top,\n          home: homeOffset.top - topPx,\n          under: parentOffset.top + item.parent.offsetHeight - height - topPx,\n          parentBottom: parentOffset.top + height + bottomPx,\n          homeBottom: homeOffset.top + height + bottomPx,\n        }\n\n      for (index in classes) {\n        if (classes[index] === item.options.stuckClass) {\n          classes.splice(index, 1)\n        }\n      }\n\n      item.el.className = classes.join(' ')\n\n      if (item.style.bottom && scrollBottom <= points.parentBottom) {\n        style = item.style.bottom.opposite\n      } else if (item.style.bottom && scrollBottom > points.parentBottom && scrollBottom < points.homeBottom) {\n        style = item.style.bottom.fixed\n      } else if (item.style.top && scrollTop > points.home && scrollTop < points.under) {\n        style = item.style.top.fixed\n      } else if (item.style.top && scrollTop >= points.under) {\n        style = item.style.top.opposite\n      } else {\n        isStuck = false\n      }\n\n      if (item.style.isStuck !== isStuck) {\n        item.holder.style.display = isStuck ? 'block' : 'none'\n      }\n\n      if (isStuck && item.options.stuckClass) {\n        item.el.className += ' ' + item.options.stuckClass\n      }\n\n      if (isStuck) {\n        style += 'margin-left:-' + (scrollLeft - item.style.margin.left) + 'px;'\n      }\n\n      if (item.options.fixWidth) {\n        style += 'width:' + (isStuck ? item.holder.offsetWidth + 'px;' : 'auto;')\n      } else {\n        style += 'min-width:' + (isStuck ? item.holder.offsetWidth + 'px;' : 'auto;')\n      }\n\n      if (style !== item.style.current) {\n        item.el.setAttribute('style', style)\n        item.style.isStuck = isStuck\n        item.style.current = style\n      }\n\n      if (item.options.holderAutoHeight && isStuck && height != item.style.height) {\n        item.holder.style.height = height + 'px'\n        item.style.height = height\n      }\n    }\n  }\n\n  var timeout\n\n  // Debounced scroll handling\n  function updateScrollPos() {\n    if (!stickies.length) {\n      return\n    }\n\n    lastKnownScrollTop = document.documentElement.scrollTop || document.body.scrollTop\n\n    // Only trigger a layout change if we’re not already waiting for one\n    if (!isAnimationRequested) {\n      isAnimationRequested = true\n\n      // Don’t update until next animation frame if we can, otherwise use a\n      // timeout - either will help avoid too many repaints\n      if (requestAnimationFrame) {\n        requestAnimationFrame(setPositions)\n      } else {\n        if (timeout) {\n          clearTimeout(timeout)\n        }\n\n        timeout = setTimeout(setPositions, 15)\n      }\n    }\n  }\n\n  function attachWindowEvents() {\n    if (areWindowEventsAttached) {\n      return\n    }\n\n    $(window).on('scroll', updateScrollPos).on('resize', updateScrollPos)\n\n    updateScrollPos()\n    areWindowEventsAttached = true\n  }\n\n  function checkIfBrowserAffectedWithBug() {\n    if (!window.chrome) {\n      return false\n    }\n\n    var matches = /Chrom(e|ium)\\/(\\d+)/.exec(navigator.appVersion)\n\n    return matches && ~affectedChromeVersions.indexOf(matches[2])\n  }\n\n  if (!hasNativeSupport) {\n    attachWindowEvents()\n  }\n})(jQuery)\n\n/**\n * sticky-header js lib\n * @ Fabio Fumis\n */\n;(function () {\n  const elSticky = document.querySelector('.it-header-sticky')\n  function isHidden(el) {\n    let hidden = false\n    if (el) {\n      const style = window.getComputedStyle(el)\n      hidden = style.display === 'none' || style.visibility === 'hidden'\n    }\n    return hidden\n  }\n  if (elSticky) {\n    const elToggler = document.querySelector('.custom-navbar-toggler')\n    const isDesktop = isHidden(elToggler)\n\n    let isSticky = false\n    let scrollToGap = 0\n\n    let runCheckSticky = undefined\n\n    const initSticky = (isDesktop) => {\n      const elSlim = document.querySelector('.it-header-slim-wrapper')\n      const elCenter = document.querySelector('.it-header-center-wrapper')\n      const elNavbar = document.querySelector('.it-header-navbar-wrapper')\n\n      const navbarHeight = (elNavbar && elNavbar.offsetHeight) || 0\n      const slimHeight = (elSlim && elSlim.offsetHeight) || 0\n      let navOffsetTop = slimHeight\n\n      if (isDesktop && navbarHeight) {\n        navOffsetTop = slimHeight + elCenter ? elCenter.offsetHeight : 0\n      }\n\n      const toggleClonedElement = (isDesktop, toAdd = true, callback) => {\n        if (isDesktop) {\n          const target = document.querySelector('.menu-wrapper')\n\n          if (toAdd) {\n            const elBrand = document.querySelector('.it-brand-wrapper')\n            const elSearch = document.querySelector('.it-search-wrapper')\n            const elUser = document.querySelector('.it-user-wrapper')\n\n            const clonedBrand = elBrand ? elBrand.cloneNode(true) : null\n            const clonedSearch = elSearch ? elSearch.cloneNode(true) : null\n            const clonedUser = elUser ? elUser.cloneNode(true) : null\n\n            if (clonedBrand) target.insertBefore(clonedBrand, target.childNodes[0]).classList.add('cloned-header')\n            if (clonedSearch) target.appendChild(clonedSearch).classList.add('cloned-header')\n            if (clonedUser) {\n              target.appendChild(clonedUser).classList.add('cloned-header')\n              target.appendChild(clonedUser).classList.remove('show')\n            }\n          } else {\n            const clonedItems = document.getElementsByClassName('cloned-header')\n            clonedItems &&\n              Array.from(clonedItems).forEach((item) => {\n                item.parentElement.removeChild(item)\n              })\n\n            if (typeof callback === 'function') {\n              callback()\n            }\n          }\n        }\n\n        if (toAdd) {\n          elSticky.nextElementSibling.style.paddingTop = navbarHeight + (isDesktop ? navOffsetTop - scrollToGap : navbarHeight - scrollToGap) + 'px'\n        } else {\n          elSticky.nextElementSibling.style.paddingTop = 0 + 'px'\n        }\n      }\n\n      const toggleOn = () => {\n        isSticky = true\n        elSticky.classList.add('is-sticky')\n        toggleClonedElement(isDesktop, true)\n      }\n\n      const toggleOff = () => {\n        isSticky = false\n        elSticky.classList.remove('is-sticky')\n        toggleClonedElement(isDesktop, false)\n      }\n\n      runCheckSticky = () => {\n        const nbh = navbarHeight\n        if (window.scrollY + scrollToGap >= navOffsetTop && !isSticky) {\n          toggleOn()\n          if (nbh !== navbarHeight) scrollToGap = navbarHeight - nbh\n        } else if (window.scrollY + scrollToGap < navOffsetTop && isSticky) {\n          toggleOff()\n        }\n      }\n\n      window.addEventListener('scroll', runCheckSticky)\n\n      runCheckSticky()\n    }\n\n    initSticky(isDesktop)\n  }\n})()\n\n;(function () {\n  const elWrappers = document.getElementsByClassName('sticky-wrapper')\n  const elToggler = document.querySelector('.custom-navbar-toggler')\n  const isDesktop = isHidden(elToggler)\n\n  let runCheckOnScroll = undefined\n\n  function isHidden(el) {\n    let _ret = false\n    if (el) {\n      const style = window.getComputedStyle(el)\n      _ret = style.display === 'none' || style.visibility === 'hidden'\n    }\n    return _ret\n  }\n\n  if (elWrappers && elWrappers.length) {\n    let isSticky = false\n\n    const initSticky = (isDesktop) => {\n      const getPadding = (parent, size) => {\n        return isDesktop ? parseInt((window.getComputedStyle ? getComputedStyle(parent, null) : parent.currentStyle)[size]) : 0\n      }\n\n      const getPosition = (isNavBottom, gap, position) => {\n        if (!isDesktop && isNavBottom && position === 'bottom') {\n          return '0px'\n        } else if (!isDesktop && isNavBottom && position === 'top') {\n          return 'auto'\n        } else if (position === 'bottom') {\n          return ''\n        } else {\n          return gap + 'px'\n        }\n      }\n\n      // Get header height\n      const elNavigation = isDesktop ? document.querySelector('.it-header-navbar-wrapper') : document.querySelector('.it-header-center-wrapper')\n\n      runCheckOnScroll = () => {\n        // Set monitoring offset top\n        const navOffsetTop = elNavigation ? elNavigation.offsetHeight : 0\n        // Check the sticky status\n        const runCheckSticky = (elSticky) => {\n          // Check is set on bottom\n          // Force position of navscroll to bottom\n          // const navBottom = elSticky.outerHTML.includes('it-bottom-navscroll')\n          const navBottom = true\n\n          const elHeight = elSticky.offsetHeight\n          // Get parent params\n          const parent = elSticky.parentNode\n          parent.style.position = 'relative'\n          const parentWidth = parent.offsetWidth || 0\n          const parentHeight = parent.offsetHeight\n          const parentPaddingTop = getPadding(parent, 'paddingTop')\n          const parentPaddingWidth = getPadding(parent, 'paddingRight')\n          // Get distance of a element from top\n          const distanceToTop = parent.getBoundingClientRect().top || 0\n          const gap = navOffsetTop + parentPaddingTop\n\n          // Check if the element is actually in a sticky position\n          // if (!isSticky && distanceToTop <= navOffsetTop) {\n          if (distanceToTop <= navOffsetTop) {\n            isSticky = true\n            elSticky.classList.add('is-sticky')\n            elSticky.style.top = getPosition(navBottom, gap, 'top')\n            elSticky.style.bottom = getPosition(navBottom, gap, 'bottom')\n            if (isDesktop) {\n              elSticky.style.width = parentWidth - parentPaddingWidth + 'px'\n            } else {\n              elSticky.style.width = ''\n            }\n          } else if (isSticky && distanceToTop > navOffsetTop) {\n            isSticky = false\n            elSticky.classList.remove('is-sticky')\n            elSticky.style.top = ''\n            elSticky.style.bottom = ''\n            elSticky.style.width = ''\n          }\n\n          // Check if at bottom of parent\n          if (isSticky && isDesktop) {\n            if (distanceToTop < 0 && Math.abs(distanceToTop) + elHeight + parentPaddingTop + navOffsetTop > parentHeight) {\n              elSticky.classList.add('at-bottom')\n            } else {\n              elSticky.classList.remove('at-bottom')\n            }\n          }\n        }\n\n        Array.from(elWrappers).forEach((elSticky) => {\n          runCheckSticky(elSticky)\n        })\n      }\n\n      window.addEventListener('scroll', runCheckOnScroll)\n\n      runCheckOnScroll()\n    }\n\n    const onResize = () => {\n      if (runCheckOnScroll) {\n        window.removeEventListener('scroll', runCheckOnScroll)\n        const stillDesktop = isHidden(elToggler)\n        initSticky(stillDesktop)\n      }\n    }\n\n    window.addEventListener('resize', onResize)\n\n    initSticky(isDesktop)\n  }\n})()\n\nfunction isIe() {\n  return window.navigator.userAgent.indexOf('MSIE ') > 0 || !!navigator.userAgent.match(/Trident.*rv:11\\./)\n}\nwindow.isIe = isIe\n\n// Create our stylesheet\nvar styleNode = document.createElement('style')\nconst __PUBLIC_PATH__ = window.__PUBLIC_PATH__ ? window.__PUBLIC_PATH__ : '/bootstrap-italia/dist/fonts'\nstyleNode.innerHTML = `\n/* Titillium+Web:300,400,600,700 */\n\n/* titillium-web-300 - latin-ext_latin */\n@font-face {\n  font-family: 'Titillium Web';\n  font-style: normal;\n  font-weight: 300;\n  src: url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-300.eot'); /* IE9 Compat Modes */\n  src: local(''),\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-300.woff2') format('woff2'), /* Super Modern Browsers */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-300.woff') format('woff'), /* Modern Browsers */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-300.ttf') format('truetype'), /* Safari, Android, iOS */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-300.svg#TitilliumWeb') format('svg'); /* Legacy iOS */\n}\n\n/* titillium-web-300italic - latin-ext_latin */\n@font-face {\n  font-family: 'Titillium Web';\n  font-style: italic;\n  font-weight: 300;\n  src: url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-300italic.eot'); /* IE9 Compat Modes */\n  src: local(''),\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-300italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-300italic.woff2') format('woff2'), /* Super Modern Browsers */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-300italic.woff') format('woff'), /* Modern Browsers */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-300italic.ttf') format('truetype'), /* Safari, Android, iOS */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-300italic.svg#TitilliumWeb') format('svg'); /* Legacy iOS */\n}\n\n/* titillium-web-regular - latin-ext_latin */\n@font-face {\n  font-family: 'Titillium Web';\n  font-style: normal;\n  font-weight: 400;\n  src: url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-regular.eot'); /* IE9 Compat Modes */\n  src: local(''),\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-regular.woff2') format('woff2'), /* Super Modern Browsers */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-regular.woff') format('woff'), /* Modern Browsers */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-regular.svg#TitilliumWeb') format('svg'); /* Legacy iOS */\n}\n\n/* titillium-web-italic - latin-ext_latin */\n@font-face {\n  font-family: 'Titillium Web';\n  font-style: italic;\n  font-weight: 400;\n  src: url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-italic.eot'); /* IE9 Compat Modes */\n  src: local(''),\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-italic.woff2') format('woff2'), /* Super Modern Browsers */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-italic.woff') format('woff'), /* Modern Browsers */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-italic.ttf') format('truetype'), /* Safari, Android, iOS */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-italic.svg#TitilliumWeb') format('svg'); /* Legacy iOS */\n}\n\n/* titillium-web-600 - latin-ext_latin */\n@font-face {\n  font-family: 'Titillium Web';\n  font-style: normal;\n  font-weight: 600;\n  src: url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-600.eot'); /* IE9 Compat Modes */\n  src: local(''),\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-600.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-600.woff2') format('woff2'), /* Super Modern Browsers */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-600.woff') format('woff'), /* Modern Browsers */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-600.ttf') format('truetype'), /* Safari, Android, iOS */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-600.svg#TitilliumWeb') format('svg'); /* Legacy iOS */\n}\n\n/* titillium-web-600italic - latin-ext_latin */\n@font-face {\n  font-family: 'Titillium Web';\n  font-style: italic;\n  font-weight: 600;\n  src: url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-600italic.eot'); /* IE9 Compat Modes */\n  src: local(''),\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-600italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-600italic.woff2') format('woff2'), /* Super Modern Browsers */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-600italic.woff') format('woff'), /* Modern Browsers */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-600italic.ttf') format('truetype'), /* Safari, Android, iOS */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-600italic.svg#TitilliumWeb') format('svg'); /* Legacy iOS */\n}\n\n/* titillium-web-700 - latin-ext_latin */\n@font-face {\n  font-family: 'Titillium Web';\n  font-style: normal;\n  font-weight: 700;\n  src: url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-700.eot'); /* IE9 Compat Modes */\n  src: local(''),\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-700.woff2') format('woff2'), /* Super Modern Browsers */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-700.woff') format('woff'), /* Modern Browsers */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-700.ttf') format('truetype'), /* Safari, Android, iOS */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-700.svg#TitilliumWeb') format('svg'); /* Legacy iOS */\n}\n\n/* titillium-web-700italic - latin-ext_latin */\n@font-face {\n  font-family: 'Titillium Web';\n  font-style: italic;\n  font-weight: 700;\n  src: url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-700italic.eot'); /* IE9 Compat Modes */\n  src: local(''),\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-700italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-700italic.woff2') format('woff2'), /* Super Modern Browsers */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-700italic.woff') format('woff'), /* Modern Browsers */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-700italic.ttf') format('truetype'), /* Safari, Android, iOS */\n       url('${__PUBLIC_PATH__}/Titillium_Web/titillium-web-v10-latin-ext_latin-700italic.svg#TitilliumWeb') format('svg'); /* Legacy iOS */\n}\n\n/* Lora:400,700 */\n\n/* lora-regular - latin-ext_latin */\n@font-face {\n  font-family: 'Lora';\n  font-style: normal;\n  font-weight: 400;\n  src: url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-regular.eot'); /* IE9 Compat Modes */\n  src: local(''),\n       url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n       url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-regular.woff2') format('woff2'), /* Super Modern Browsers */\n       url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-regular.woff') format('woff'), /* Modern Browsers */\n       url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */\n       url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-regular.svg#Lora') format('svg'); /* Legacy iOS */\n}\n\n/* lora-700 - latin-ext_latin */\n@font-face {\n  font-family: 'Lora';\n  font-style: normal;\n  font-weight: 700;\n  src: url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-700.eot'); /* IE9 Compat Modes */\n  src: local(''),\n       url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n       url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-700.woff2') format('woff2'), /* Super Modern Browsers */\n       url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-700.woff') format('woff'), /* Modern Browsers */\n       url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-700.ttf') format('truetype'), /* Safari, Android, iOS */\n       url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-700.svg#Lora') format('svg'); /* Legacy iOS */\n}\n\n/* lora-italic - latin-ext_latin */\n@font-face {\n  font-family: 'Lora';\n  font-style: italic;\n  font-weight: 400;\n  src: url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-italic.eot'); /* IE9 Compat Modes */\n  src: local(''),\n       url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n       url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-italic.woff2') format('woff2'), /* Super Modern Browsers */\n       url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-italic.woff') format('woff'), /* Modern Browsers */\n       url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-italic.ttf') format('truetype'), /* Safari, Android, iOS */\n       url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-italic.svg#Lora') format('svg'); /* Legacy iOS */\n}\n\n/* lora-700italic - latin-ext_latin */\n@font-face {\n  font-family: 'Lora';\n  font-style: italic;\n  font-weight: 700;\n  src: url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-700italic.eot'); /* IE9 Compat Modes */\n  src: local(''),\n       url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-700italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n       url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-700italic.woff2') format('woff2'), /* Super Modern Browsers */\n       url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-700italic.woff') format('woff'), /* Modern Browsers */\n       url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-700italic.ttf') format('truetype'), /* Safari, Android, iOS */\n       url('${__PUBLIC_PATH__}/Lora/lora-v20-latin-ext_latin-700italic.svg#Lora') format('svg'); /* Legacy iOS */\n}\n\n/* Roboto+Mono:400,700 */\n\n/* roboto-mono-regular - latin-ext_latin */\n@font-face {\n  font-family: 'Roboto Mono';\n  font-style: normal;\n  font-weight: 400;\n  src: url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-regular.eot'); /* IE9 Compat Modes */\n  src: local(''),\n       url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n       url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-regular.woff2') format('woff2'), /* Super Modern Browsers */\n       url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-regular.woff') format('woff'), /* Modern Browsers */\n       url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */\n       url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-regular.svg#RobotoMono') format('svg'); /* Legacy iOS */\n}\n\n/* roboto-mono-700 - latin-ext_latin */\n@font-face {\n  font-family: 'Roboto Mono';\n  font-style: normal;\n  font-weight: 700;\n  src: url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-700.eot'); /* IE9 Compat Modes */\n  src: local(''),\n       url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n       url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-700.woff2') format('woff2'), /* Super Modern Browsers */\n       url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-700.woff') format('woff'), /* Modern Browsers */\n       url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-700.ttf') format('truetype'), /* Safari, Android, iOS */\n       url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-700.svg#RobotoMono') format('svg'); /* Legacy iOS */\n}\n\n/* roboto-mono-italic - latin-ext_latin */\n@font-face {\n  font-family: 'Roboto Mono';\n  font-style: italic;\n  font-weight: 400;\n  src: url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-italic.eot'); /* IE9 Compat Modes */\n  src: local(''),\n       url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n       url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-italic.woff2') format('woff2'), /* Super Modern Browsers */\n       url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-italic.woff') format('woff'), /* Modern Browsers */\n       url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-italic.ttf') format('truetype'), /* Safari, Android, iOS */\n       url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-italic.svg#RobotoMono') format('svg'); /* Legacy iOS */\n}\n\n/* roboto-mono-700italic - latin-ext_latin */\n@font-face {\n  font-family: 'Roboto Mono';\n  font-style: italic;\n  font-weight: 700;\n  src: url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-700italic.eot'); /* IE9 Compat Modes */\n  src: local(''),\n       url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-700italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n       url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-700italic.woff2') format('woff2'), /* Super Modern Browsers */\n       url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-700italic.woff') format('woff'), /* Modern Browsers */\n       url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-700italic.ttf') format('truetype'), /* Safari, Android, iOS */\n       url('${__PUBLIC_PATH__}/Roboto_Mono/roboto-mono-v13-latin-ext_latin-700italic.svg#RobotoMono') format('svg'); /* Legacy iOS */\n}\n`\n\ndocument.getElementsByTagName('head')[0].appendChild(styleNode)\n\n'use strict'\n\n$(function () {\n  $.fn.autocomplete = function (options) {\n    // Default options\n    var defaults = {\n      data: {},\n    }\n\n    // Get options\n    /* eslint-disable no-unused-vars */\n    options = $.extend(defaults, options)\n\n    return this.each(function () {\n      let $input = $(this)\n      let $autocomplete = null\n      let data = $input.data('autocomplete')\n\n      if (data && Object.keys(data).length) {\n        $autocomplete = $('<ul class=\"autocomplete-list\"></ul>')\n        $autocomplete.insertAfter($(this).next())\n\n        // Listen if key was pressed\n        $input.on('keyup', function () {\n          // get value from input\n          const q = $input.val()\n\n          $autocomplete.empty()\n\n          // check if input isn't empty\n          if (q.length) {\n            for (const item in data) {\n              let markText = new RegExp('(' + q + ')', 'gi')\n              let optionText = data[item].text.replace(markText, '<mark>$1</mark>')\n              let optionLabel = data[item].label ? '<em>' + data[item].label + '</em>' : ''\n              let optionIcon = data[item].icon ? data[item].icon : ''\n              let optionLink = data[item].link ? data[item].link : '#'\n\n              if (optionText.toLowerCase().indexOf(q.toLowerCase()) !== -1) {\n                $(this).closest('.form-group').find('.autocomplete-list').addClass('autocomplete-list-show')\n                let option = $(`<li>\n              <a href=\"${optionLink}\">\n                ${optionIcon}\n                <span class=\"autocomplete-list-text\">\n                  <span>${optionText}</span>\n                  ${optionLabel}\n                </span>\n              </a>\n             </li>`)\n                $autocomplete.append(option)\n              }\n            }\n          } else {\n            $(this).closest('.form-group').find('.autocomplete-list').removeClass('autocomplete-list-show')\n          }\n        })\n      }\n    })\n  }\n\n  $('.autocomplete').autocomplete()\n})\n\n$(function () {\n  const $backToTopElements = $('a[data-attribute*=\"back-to-top\"]')\n  $(window).on('scroll', function () {\n    $backToTopElements.toggleClass('back-to-top-show', $backToTopElements.length && $(this).scrollTop() >= 100)\n  })\n\n  $backToTopElements.on('click', function () {\n    $('body,html').animate({ scrollTop: 0 }, 800)\n  })\n})\n\nconst ComponenteBase = (($) => {\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME = `componenteBase`\n  const VERSION = `1.0.0`\n  const DATA_KEY = `bs.componente-base`\n  const EVENT_KEY = `.${DATA_KEY}` // '.bs.componente-base'\n  const DATA_API_KEY = `.data-api`\n  const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n  const Event = {\n    CLICK_DATA_API: `click${EVENT_KEY}${DATA_API_KEY}`, // 'click.bs.componente-base.data-api'\n  }\n\n  const Selector = {\n    COMPONENTE_BASE: '.componente-base',\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class ComponenteBase {\n    constructor(element) {\n      this._element = element\n    }\n\n    // Getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    // Public\n\n    publicFunction(element) {\n      console.log($(element).data('value'), ComponenteBase.VERSION)\n    }\n\n    // Static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        const $element = $(this)\n        let data = $element.data(DATA_KEY)\n\n        if (!data) {\n          data = new ComponenteBase(this)\n          $element.data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(`No method named \"${config}\"`)\n          }\n          data[config](this)\n        }\n      })\n    }\n\n    static _handleConsole(baseInstance) {\n      return function (event) {\n        if (event) {\n          event.preventDefault()\n        }\n\n        baseInstance.publicFunction(this)\n      }\n    }\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(document).on(Event.CLICK_DATA_API, Selector.COMPONENTE_BASE, ComponenteBase._handleConsole(new ComponenteBase()))\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME] = ComponenteBase._jQueryInterface\n  $.fn[NAME].Constructor = ComponenteBase\n  $.fn[NAME].noConflict = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return ComponenteBase._jQueryInterface\n  }\n\n  return ComponenteBase\n})($)\n\n\n\nconst Cookiebar = (($) => {\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME = 'cookiebar'\n  const VERSION = '4.0.0'\n  const DATA_KEY = 'bs.cookiebar'\n  const EVENT_KEY = `.${DATA_KEY}`\n  const DATA_API_KEY = '.data-api'\n  const JQUERY_NO_CONFLICT = $.fn[NAME]\n  const COOKIE_NAME = 'cookies_consent'\n  const COOKIE_VALUE = 'true'\n  const COOKIE_EXPIRE = 30\n\n  const Selector = {\n    COOKIE_BAR: '.cookiebar',\n    ACCEPT: '[data-accept=\"cookiebar\"]',\n  }\n\n  const Event = {\n    CLOSE: `close${EVENT_KEY}`,\n    CLOSED: `closed${EVENT_KEY}`,\n    LOAD_DATA_API: `load${EVENT_KEY}${DATA_API_KEY}`,\n    CLICK_DATA_API: `click${EVENT_KEY}${DATA_API_KEY}`,\n  }\n\n  const ClassName = {\n    COOKIE_BAR: 'cookiebar',\n    SHOW: 'show',\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Cookiebar {\n    constructor(element) {\n      this._element = element\n    }\n\n    // Getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    // Public\n\n    show(element) {\n      $(element).addClass(ClassName.SHOW).attr('aria-hidden', 'false').attr('aria-live', 'polite')\n    }\n\n    close(element) {\n      element = element || this._element\n\n      const rootElement = this._getRootElement(element)\n      const customEvent = this._triggerCloseEvent(rootElement)\n\n      if (customEvent.isDefaultPrevented()) {\n        return\n      }\n      this._setCookieEU()\n      this._removeElement(rootElement)\n    }\n\n    dispose() {\n      $.removeData(this._element, DATA_KEY)\n      this._element = null\n    }\n\n    // Private\n\n    _setCookieEU() {\n      var exdate = new Date()\n      exdate.setDate(exdate.getDate() + COOKIE_EXPIRE)\n      var c_value = escape(COOKIE_VALUE) + (COOKIE_EXPIRE == null ? '' : '; expires=' + exdate.toUTCString())\n      document.cookie = COOKIE_NAME + '=' + c_value + '; path=/'\n    }\n\n    _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\n    _getRootElement(element) {\n      const selector = this._getSelectorFromElement(element)\n      let parent = false\n\n      if (selector) {\n        parent = $(selector)[0]\n      }\n\n      if (!parent) {\n        parent = $(element).closest(`.${ClassName.COOKIE_BAR}`)[0]\n      }\n\n      return parent\n    }\n\n    _triggerCloseEvent(element) {\n      const closeEvent = $.Event(Event.CLOSE)\n\n      $(element).trigger(closeEvent)\n      return closeEvent\n    }\n\n    _removeElement(element) {\n      $(element).removeClass(ClassName.SHOW).attr('aria-hidden', 'true').attr('aria-live', 'off')\n\n      this._destroyElement(element)\n    }\n\n    _destroyElement(element) {\n      $(element).detach().trigger(Event.CLOSED).remove()\n    }\n\n    // Static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        const $element = $(this)\n        let data = $element.data(DATA_KEY)\n\n        if (!data) {\n          data = new Cookiebar(this)\n          $element.data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(`No method named \"${config}\"`)\n          }\n          data[config](this)\n        }\n      })\n    }\n\n    static _handleAccept(cookiebarInstance) {\n      return function (event) {\n        if (event) {\n          event.preventDefault()\n        }\n\n        cookiebarInstance.close(this)\n      }\n    }\n\n    static _handleConsent(cookiebarInstance) {\n      return function (event) {\n        if (event) {\n          event.preventDefault()\n        }\n\n        cookiebarInstance.close(this)\n      }\n    }\n\n    static _getCookieEU() {\n      var i,\n        x,\n        y,\n        ARRcookies = document.cookie.split(';')\n      for (i = 0; i < ARRcookies.length; i++) {\n        x = ARRcookies[i].substr(0, ARRcookies[i].indexOf('='))\n        y = ARRcookies[i].substr(ARRcookies[i].indexOf('=') + 1)\n        x = x.replace(/^\\s+|\\s+$/g, '')\n        if (x == COOKIE_NAME) {\n          return unescape(y)\n        }\n      }\n    }\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(document).on(Event.CLICK_DATA_API, Selector.ACCEPT, Cookiebar._handleAccept(new Cookiebar()))\n\n  $(window).on(Event.LOAD_DATA_API, () => {\n    const cookiebars = $.makeArray($(Selector.COOKIE_BAR))\n    var consent = Cookiebar._getCookieEU()\n    if (!consent) {\n      for (let i = cookiebars.length; i--; ) {\n        const $cookiebar = $(cookiebars[i])\n        Cookiebar._jQueryInterface.call($cookiebar, 'show')\n      }\n    }\n  })\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME] = Cookiebar._jQueryInterface\n  $.fn[NAME].Constructor = Cookiebar\n  $.fn[NAME].noConflict = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Cookiebar._jQueryInterface\n  }\n\n  return Cookiebar\n})($)\n\n\n\n$(function () {\n  // Animazione slide down\n  $('.navbar .dropdown').on('show.bs.dropdown', function () {\n    if (window.matchMedia('(max-width: 992px)').matches) {\n      $(this).find('.dropdown-menu').first().stop(true, true).slideDown(180)\n    }\n  })\n\n  // Animazione slide up\n  $('.navbar .dropdown').on('hide.bs.dropdown', function () {\n    if (window.matchMedia('(max-width: 992px)').matches) {\n      $(this).find('.dropdown-menu').first().stop(true, true).slideUp(180)\n    }\n  })\n\n  $(window).resize(function () {\n    // reset parametri click iniettati su mobile\n    if (window.matchMedia('(min-width: 993px)').matches) {\n      $('.navbar .dropdown-menu.show').removeAttr('style')\n    }\n  })\n\n  /**\n   * fix dropdown accessibility (arrow keys)\n   */\n  var CLASS_NAME = {\n    show: 'show',\n    listItem: 'list-item',\n  }\n  var SELECTOR = {\n    dropDown: '.dropdown',\n    dropDownMenu: '.dropdown-menu',\n    toggle: '[data-toggle=\"dropdown\"]',\n    listItem: 'a.list-item',\n  }\n\n  var isToggle = function (element) {\n    return element.getAttribute('data-toggle') === 'dropdown'\n  }\n  /**\n   *\n   * @param {*} target\n   * @param {Object} config - isDirectionTop, isLimit, loop\n   */\n  var focusSimbling = function (target, config) {\n    var items = Array.prototype.slice.call(target.closest(SELECTOR.dropDownMenu).querySelectorAll(SELECTOR.listItem))\n    var currIdx = items.indexOf(target)\n\n    var found = null\n    if (config.isLimit && config.isDirectionTop && currIdx > 0) {\n      //get first element\n      found = items[0]\n    } else if (config.isLimit && currIdx < items.length - 1) {\n      //get last element\n      found = items[items.length - 1]\n    } else if (config.isDirectionTop) {\n      //get prev element\n      if (!config.loop && currIdx === 0) {\n        return\n      }\n      found = items[currIdx === 0 ? items.length - 1 : currIdx - 1]\n    } else {\n      //get next element\n      if (!config.loop && currIdx === items.length - 1) {\n        return\n      }\n      found = items[currIdx === items.length - 1 ? 0 : currIdx + 1]\n    }\n\n    if (found) {\n      found.focus()\n    }\n  }\n  var focusNext = function (target) {\n    if (isToggle(target)) {\n      var dropDown = target.parentNode.querySelector(SELECTOR.dropDownMenu)\n      if (dropDown && dropDown.classList.contains(CLASS_NAME.show)) {\n        var firstItem = dropDown.querySelector(SELECTOR.listItem)\n        if (firstItem) {\n          firstItem.focus()\n        }\n      } else {\n        return\n      }\n    } else {\n      focusSimbling(target, { loop: false })\n    }\n  }\n  var focusPrev = function (target) {\n    if (isToggle(target)) {\n      return\n    }\n    focusSimbling(target, { isDirectionTop: true, loop: false })\n  }\n\n  var EVENT_CALLBACK = {\n    ArrowDown: focusNext,\n    ArrowUp: focusPrev,\n  }\n  var keyEventHandler = function (evt) {\n    var key = evt.key\n    if (typeof EVENT_CALLBACK[key] === 'function') {\n      evt.preventDefault()\n      EVENT_CALLBACK[key](evt.currentTarget)\n    }\n  }\n\n  $(SELECTOR.toggle).on('keydown', function (evt) {\n    keyEventHandler(evt)\n  })\n  $(SELECTOR.dropDownMenu + ' ' + SELECTOR.listItem).on('keydown', function (evt) {\n    keyEventHandler(evt)\n  })\n})\n\n$(function () {\n  const inputSelector =\n    'input[type=\"text\"],' +\n    'input[type=\"password\"],' +\n    'input[type=\"email\"],' +\n    'input[type=\"email\"],' +\n    'input[type=\"url\"],' +\n    'input[type=\"tel\"],' +\n    'input[type=\"number\"],' +\n    'input[type=\"search\"],' +\n    'textarea'\n\n  const inputFileSelector = 'input[type=\"file\"]'\n\n  $(document)\n    .on('focus', inputSelector, (e) => {\n      const $this = $(e.target)\n      const labelSelector = \"label[for='\" + $this.attr('id') + \"']\"\n      $(labelSelector).addClass('active')\n    })\n    .on('blur', inputSelector, (e) => {\n      const $this = $(e.target)\n      const noValue = !$this.val()\n      const noPlaceholder = !$this.attr('placeholder')\n      if (noValue && noPlaceholder) {\n        $(\"label[for='\" + $this.attr('id') + \"']\").removeClass('active')\n      }\n    })\n    .on('change', inputSelector, (e) => {\n      const $this = $(e.target)\n      updateTextFields($this)\n      validateField($this)\n    })\n    .on('blur', inputFileSelector, (e) => {\n      const $this = $(e.target)\n      $(\"label[for='\" + $this.attr('id') + \"']\").addClass('active')\n    })\n    .on('change', inputFileSelector, (e) => {\n      const $this = $(e.target)\n      var numFiles = e.currentTarget.files.length\n      var nomiFiles = ''\n      var multi = ''\n      for (var i = 0; i < numFiles; i++) {\n        var fileSize = parseInt(e.currentTarget.files[i].size, 10) / 1024\n        var filesize = Math.round(fileSize)\n        nomiFiles = nomiFiles + e.currentTarget.files[i].name + ' (' + filesize + 'kb); '\n      }\n      if (numFiles > 1) {\n        multi = numFiles + ' file da caricare: '\n      }\n      $(\"label[for='\" + $this.attr('id') + \"']label[class='form-file-name']\").text(multi + nomiFiles)\n    })\n\n  const updateTextFields = ($input) => {\n    const $labelAndIcon = $(\"label[for='\" + $input.attr('id') + \"']\")\n    const hasValue = $input.val().length\n    const hasPlaceholder = !!$input.attr('placeholder')\n    if (hasValue || hasPlaceholder) {\n      $labelAndIcon.addClass('active')\n    } else {\n      $labelAndIcon.removeClass('active')\n    }\n  }\n\n  const validateField = ($input) => {\n    if ($input.hasClass('validate')) {\n      const value = $input.val()\n      const noValue = !value.length\n      const isValid = !$input[0].validity.badInput\n      if (noValue && isValid) {\n        $input.removeClass('valid').removeClass('invalid')\n      } else {\n        const valid = $input.is(':valid')\n        const length = Number($input.attr('length')) || 0\n        if (valid && (!length || length > value.length)) {\n          $input.removeClass('invalid').addClass('valid')\n        } else {\n          $input.removeClass('valid').addClass('invalid')\n        }\n      }\n    }\n  }\n\n  const handleLabelPosition = () => {\n    $('body')\n      .find(inputSelector)\n      .removeClass('valid invalid')\n      .each((index, input) => {\n        const $this = $(input)\n        const hasDefaultValue = !!$this.val()\n        const hasPlaceholder = !!$this.attr('placeholder')\n        if (hasDefaultValue || hasPlaceholder) {\n          $(\"label[for='\" + $this.attr('id') + \"']\")\n            .css('transition', 'none')\n            .addClass('active')\n        }\n\n        if (!hasDefaultValue && !hasPlaceholder) {\n          $(\"label[for='\" + $this.attr('id') + \"']\").removeClass('active')\n        }\n      })\n  }\n\n  handleLabelPosition()\n\n  $(document).on('changed.bs.form-control', handleLabelPosition)\n})\n\n$(function () {\n  var usingMouse\n\n  $(document)\n    .on('keydown mousedown', function (e) {\n      usingMouse = e.type === 'mousedown'\n    })\n    .on('focusin', function (e) {\n      if (usingMouse) {\n        if (e.target) {\n          $(e.target).addClass('focus--mouse')\n          $(e.target).attr('data-focus-mouse', true)\n        }\n      }\n    })\n    .on('focusout', function (e) {\n      if (e.target) {\n        $(e.target).removeClass('focus--mouse')\n        $(e.target).attr('data-focus-mouse', false)\n      }\n    })\n})\n\n$(function () {\n  $('a[data-attribute*=\"forward\"]').on('click', function (event) {\n    let target = $(this.hash)\n    if (target.length) {\n      event.preventDefault()\n      $('html, body').animate(\n        {\n          scrollTop: target.offset().top,\n        },\n        500\n      )\n    }\n  })\n})\n\n$(function () {\n  // open / close navbar actions\n  var openbutton = $('.custom-navbar-toggler')\n  var closebutton = $('.close-div')\n  var overlay = $('.overlay')\n  var backbutton = $('.it-back-button')\n\n  //-open button action\n  $(openbutton).on('click', function () {\n    /* Act on the event */\n    var target = $(this).attr('data-target')\n    var fadelayer = $(target).find('.overlay')\n    $(this).attr('aria-expanded', 'true')\n    $(backbutton).fadeIn()\n    $(target).show()\n    $(fadelayer).fadeIn()\n    $(target).addClass('expanded')\n  })\n\n  $(overlay).on('click', function () {\n    var target = $(this).closest('.navbar-collapsable')\n    var buttonrel = $(this).closest('.navbar').find('.custom-navbar-toggler')\n    var fadelayer = $(target).find('.overlay')\n    $(buttonrel).attr('aria-expanded', 'false')\n\n    $(target).removeClass('expanded')\n    $(fadelayer).fadeOut()\n    setTimeout(function () {\n      $(target).hide()\n    }, 300)\n  })\n\n  //-close button action\n  $(closebutton).on('click', function () {\n    var target = $(this).closest('.navbar-collapsable')\n    var buttonrel = $(this).closest('.navbar').find('.custom-navbar-toggler')\n    var fadelayer = $(target).find('.overlay')\n\n    $(buttonrel).attr('aria-expanded', 'false')\n\n    $(target).removeClass('expanded')\n    $(fadelayer).fadeOut()\n    setTimeout(function () {\n      $(target).hide()\n    }, 300)\n  })\n})\n\n$(function () {\n  var overlay = $('.overlay')\n  var backbutton = $('.it-back-button')\n\n  $('.it-bottom-navscroll ul li a[href^=\"#\"]').on('click', function (e) {\n    e.preventDefault()\n\n    var hash = this.hash\n\n    $('html, body').animate(\n      {\n        scrollTop: $(hash).offset().top,\n      },\n      600,\n      function () {\n        if (history.pushState) {\n          history.pushState(null, null, hash)\n        } else {\n          location.hash = hash\n        }\n      }\n    )\n    //close window on click\n    $(overlay).trigger('click')\n  })\n\n  // navscroll back function\n  $(backbutton).click(function (event) {\n    $(overlay).trigger('click')\n    $(this).fadeOut()\n    event.preventDefault()\n  })\n\n  // navscroll item on scroll\n  $(window)\n    .on('scroll', function () {\n      var sectionsContainerTop = $('.it-page-sections-container').length ? $('.it-page-sections-container').offset().top : 0\n      var scrollDistance = $(window).scrollTop() - sectionsContainerTop\n      // Assign active class to nav links while scolling\n      $('.it-page-section').each(function (i) {\n        if ($(this).position().top <= scrollDistance + 10) {\n          $('.it-navscroll-wrapper .menu-wrapper a.active').removeClass('active')\n          $('.it-navscroll-wrapper .menu-wrapper a').eq(i).addClass('active')\n          var parentsection = $('.it-navscroll-wrapper .menu-wrapper a').eq(i).closest('ul').prev('a')\n          var parentparentsection = $(parentsection).closest('ul').prev('a')\n          $(parentsection).addClass('active')\n          $(parentparentsection).addClass('active')\n          var textContent = $('.it-navscroll-wrapper .menu-wrapper a').eq(i).find('span').text()\n          var $btn = $('.it-navscroll-wrapper .custom-navbar-toggler')\n          var $icon = $btn.find('span.it-list')\n          $btn.text(textContent)\n          $btn.prepend($icon)\n        }\n      })\n    })\n    .scroll()\n})\n\n$(function () {\n  $('.go-back').on('click', function () {\n    window.history.back()\n    return false\n  })\n})\n\n/*eslint-disable */\nfunction notificationShow(notificationTarget, notificationTimeOut) {\n  /*eslint-disable */\n  $('#' + notificationTarget).fadeIn(300)\n  var timeToFade\n  if (!$('#' + notificationTarget).hasClass('dismissable')) {\n    //standard (timeout)\n    $('#' + notificationTarget).fadeIn(300)\n    if (typeof notificationTimeOut == 'number') {\n      //timeout set by parameter\n      timeToFade = notificationTimeOut\n    } else {\n      //timeout default value 7s\n      timeToFade = 7000\n    }\n    //fadeout\n    setTimeout(function () {\n      $('#' + notificationTarget).fadeOut(100)\n    }, timeToFade)\n  }\n}\n\n//dismissable close button\n$(document).on('click', '.notification-close', function () {\n  $(this).closest('.notification').fadeOut(100)\n})\n\n$(function () {\n  var $form = $('.upload-dragdrop:not(.success)')\n\n  $form\n    .on('drag dragstart dragend dragover dragenter dragleave drop', function (e) {\n      e.preventDefault()\n      e.stopPropagation()\n    })\n    .on('dragover dragenter', function () {\n      $(this).addClass('dragover')\n    })\n    .on('dragleave dragend drop', function () {\n      $(this).removeClass('dragover')\n    })\n    .on('drop', function () {\n      //change drag and drop state\n      $(this).addClass('loading')\n      //init upload circular loader\n      $(this).find('.upload-progress').circularloader({\n        backgroundColor: '#ffffff', //background colour of inner circle\n        fontColor: '#000000', //font color of progress text\n        fontSize: '40px', //font size of progress text\n        radius: 130, //radius of circle\n        progressBarBackground: 'transparent', //background colour of circular progress Bar\n        progressBarColor: '#0073e6', //colour of circular progress bar\n        progressBarWidth: 96, //progress bar width\n        progressPercent: 0, //progress percentage out of 100, start with 0\n      })\n    })\n})\n\n/* eslint-disable no-unused-vars */\nconst progressDonut = (function ($) {\n  //background colour of inner circle\n  const backgroundColor = '#fff'\n\n  //font color of progress text\n  const fontColor = '#000'\n\n  //font size of progress text\n  const fontSize = 40\n\n  //radius of circle\n  const donutRadius = 130\n\n  //progress bar width\n  const donutWidth = 96\n\n  //background colour of circular progress Bar\n  const donutBackground = 'transparent'\n\n  //colour of circular progress bar\n  const donutForeground = '#0073e6'\n\n  /**\n   * generate a progress donut\n   * @param {string} target - The element\n   * @param {string} progress - percentage out of 100, start with 0\n   */\n  var generate = function (target, progress) {\n    $(target).circularloader({\n      backgroundColor: backgroundColor,\n      fontColor: fontColor,\n      fontSize: fontSize,\n      radius: donutRadius,\n      progressBarBackground: donutBackground,\n      progressBarColor: donutForeground,\n      progressBarWidth: donutWidth,\n      progressPercent: progress,\n    })\n    $(target)\n      .next()\n      .html('Progresso ' + progress + '%')\n  }\n\n  /**\n   * update progress donut percentage\n   * @param {string} target - The element\n   * @param {string} progress - percentage out of 100, start with 0\n   */\n  var update = function (target, progress) {\n    $(target).circularloader({\n      progressPercent: progress,\n    })\n  }\n\n  return {\n    generate: generate,\n    update: update,\n  }\n})($)\n\n$(function () {\n  $('.it-has-checkbox').on('click', function (event) {\n    var _target = $(this).find('input')\n    if ($(_target).prop('checked')) {\n      $(_target).prop('checked', false)\n      $(this).removeClass('active')\n    } else {\n      $(_target).prop('checked', true)\n      $(this).addClass('active')\n    }\n    event.preventDefault()\n  })\n})\n\n$(function () {\n  var userAgent, ieReg, ie\n  userAgent = window.navigator.userAgent\n  ieReg = /msie|Trident.*rv[ :]*11\\./gi\n  ie = ieReg.test(userAgent)\n\n  if (ie) {\n    $('.img-wrapper').each(function () {\n      var $container = $(this),\n        imgUrl = $container.find('img').prop('src')\n      if (imgUrl) {\n        $container.css('backgroundImage', 'url(' + imgUrl + ')').addClass('custom-object-fit')\n      }\n    })\n  }\n})\n\n// key numbers\nvar numbers = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57]\nvar timeRegEx = /^([01]?[0-9]|2[0-3]):[0-5][0-9]$/i\n\n$(document).ready(function () {\n  function allowKey(key) {\n    return [8, 9, 13].includes(key)\n  }\n\n  function loadSpinner($spinner) {\n    $spinner.toggleClass('is-open').attr('aria-hidden', 'false').fadeIn(100)\n  }\n\n  function hideSpinner($spinner, $input, $spinnerH, $spinnerM, index) {\n    if ($spinner.hasClass('is-open')) {\n      $spinner.fadeOut(100).toggleClass('is-open').attr('aria-hidden', 'true')\n      if ($spinnerH && $spinnerM) {\n        var newTime = $spinnerH.attr('value') + ':' + $spinnerM.attr('value')\n        $input.val(newTime)\n      }\n      checkForm($input, index)\n    }\n  }\n\n  // save default labels\n  var defLabels = {}\n\n  // TIME VALIDATION FOR DATA ENTRY\n  function checkForm($input, index) {\n    var newValue = $input.val()\n    if (newValue) {\n      var $label = $input.siblings('label')\n\n      var matches = newValue != '' ? newValue.match(timeRegEx) : ''\n\n      if (matches) {\n        $label.removeClass('error-label').html(defLabels[index])\n      } else {\n        $label.addClass('error-label').html('Formato ora non valido (hh:mm)')\n      }\n    }\n  }\n\n  // Loop each input field\n  $('.it-timepicker-wrapper').each(function (index) {\n    //GLOBAL VARIABLES\n    var valMin,\n      valMax,\n      valNow,\n      skipVal,\n      $spinnerInput,\n      timeH = '00',\n      timeM = '00'\n\n    // wrapper el\n    var $el = $(this)\n\n    // get input field\n    var $input = $el.find('.txtTime')\n    // get bnt-time\n    var $btnTime = $el.find('.btn-time')\n\n    // get spinner\n    var $spinner = $el.find('.spinner-control')\n    var $spinnerH = $el.find('.spinnerHour')\n    var $spinnerM = $el.find('.spinnerMin')\n\n    var $btnHourUp = $el.find('.btnHourUp')\n    var $btnHourDown = $el.find('.btnHourDown')\n    var $btnMinUp = $el.find('.btnMinUp')\n    var $btnMinDown = $el.find('.btnMinDown')\n\n    // $input.attr('data-input', 'input-' + index)\n    // $spinner.attr('data-spinner', 'spinner-' + index)\n\n    var setDigit = (number) => {\n      if (number < 0) number = 0\n      return number < 10 ? '0' + number : number\n    }\n\n    var getValues = ($button) => {\n      // get spinner input\n      $spinnerInput = $button.closest('.spinner').find('input')\n      // get set values\n      valMin = parseInt($spinnerInput.attr('aria-valuemin'))\n      valMax = parseInt($spinnerInput.attr('aria-valuemax'))\n      valNow = parseInt($spinnerInput.attr('aria-valuenow'))\n      skipVal = parseInt($spinnerInput.attr('bb-skip'))\n    }\n\n    var handleClick = (action, $button) => {\n      getValues($button)\n      // manage up/down\n      switch (action) {\n        case 'up':\n          if (!valMax || valNow < valMax) valNow++\n          break\n        case 'down':\n          if (!valMin || valNow > valMin) valNow--\n          break\n      }\n\n      // manage skipVal\n      if (action && skipVal > -1) {\n        switch (true) {\n          case action === 'up' && skipVal === valNow:\n            valNow++\n            break\n          case action === 'down' && skipVal === valNow:\n            valNow--\n            break\n        }\n      }\n\n      switch (true) {\n        case $button.hasClass('btnHourUp') || $button.hasClass('btnHourDown'):\n          timeH = setDigit(valNow)\n          break\n        case $button.hasClass('btnMinUp') || $button.hasClass('btnMinDown'):\n          timeM = setDigit(valNow)\n          break\n      }\n\n      $spinnerInput.val(setDigit(valNow))\n      $spinnerInput.attr('value', setDigit(valNow))\n      $spinnerInput.attr('aria-valuenow', setDigit(valNow))\n\n      $input.val(timeH + ':' + timeM).change()\n    }\n\n    var handleType = ($spinnerInput, $button) => {\n      var value = setDigit($spinnerInput.val())\n\n      $spinnerInput.attr('aria-valuenow', value)\n      handleClick(null, $button)\n    }\n\n    defLabels[index] = $input.siblings('label').text()\n\n    $el.find('.spinner-control button').attr('aria-hidden', 'true').attr('tabindex', '-1')\n\n    $btnTime.on('click', (e) => {\n      e.stopPropagation()\n      e.preventDefault()\n      if ($spinner.hasClass('is-open')) {\n        hideSpinner($spinner, $input, $spinnerH, $spinnerM, index)\n      } else {\n        loadSpinner($spinner)\n      }\n    })\n\n    //Direct Time Entry\n    $input\n      .on('keyup', function (e) {\n        var key = e.which || e.keyCode\n        var val = $input.val()\n\n        if (val.includes(':')) {\n          var hArr = val.split(':')\n          $spinnerH.attr('aria-valuenow', hArr[0].substring(0, 2))\n          $spinnerH.attr('value', hArr[0].substring(0, 2))\n          $spinnerH.val(hArr[0].substring(0, 2))\n          timeH = hArr[0].substring(0, 2)\n          $spinnerM.attr('aria-valuenow', hArr[1].substring(0, 2))\n          $spinnerM.attr('value', hArr[1].substring(0, 2))\n          $spinnerM.val(hArr[1].substring(0, 2))\n          timeM = hArr[1].substring(0, 2)\n        } else {\n          $spinnerH.attr('aria-valuenow', val.substring(0, 2))\n          $spinnerH.attr('value', val.substring(0, 2))\n          $spinnerH.val(val.substring(0, 2))\n          timeH = val.substring(0, 2)\n        }\n\n        if (key === 13) {\n          return checkForm($input, index)\n        }\n      })\n      .on('focus', (e) => {\n        e.stopPropagation()\n        if ($input.val()) {\n          checkForm($input, index)\n        }\n      })\n      .on('blur', () => {\n        // console.log('$input blur')\n        if ($input.val()) {\n          checkForm($input, index)\n        }\n      })\n\n    $btnHourUp.on('click', (e) => {\n      handleClick('up', $btnHourUp, 'click hour up')\n      e.preventDefault()\n    })\n\n    $btnHourDown.on('click', (e) => {\n      handleClick('down', $btnHourDown, 'click hour down')\n      e.preventDefault()\n    })\n\n    $btnMinUp.on('click', (e) => {\n      handleClick('up', $btnMinUp, 'click min up')\n      e.preventDefault()\n    })\n\n    $btnMinDown.on('click', (e) => {\n      handleClick('down', $btnMinDown, 'click min down')\n      e.preventDefault()\n    })\n\n    $spinnerH\n      .on('keydown', (e) => {\n        var key = e.which || e.keyCode\n        var isNum = numbers.includes(key)\n        switch (true) {\n          case key === 38: // up\n            $btnHourUp.trigger('click')\n            break\n          case key === 40: // down\n            $btnHourDown.trigger('click')\n            break\n          case allowKey(key) || isNum: // tab or numbers\n            return true\n        }\n        return false\n      })\n      .on('keyup', (e) => {\n        var key = e.which || e.keyCode\n        var isNum = numbers.includes(key)\n        if (isNum) {\n          handleType($spinnerH, $btnHourUp)\n        }\n      })\n\n    $spinnerM\n      .on('keydown', (e) => {\n        var key = e.which || e.keyCode\n        var isNum = numbers.includes(key)\n        switch (true) {\n          case key === 38: // up\n            $btnMinUp.trigger('click')\n            break\n          case key === 40: // down\n            $btnMinDown.trigger('click')\n            break\n          case allowKey(key) || isNum: // tab or numbers\n            return true\n        }\n        return false\n      })\n      .on('keyup', (e) => {\n        var key = e.which || e.keyCode\n        var isNum = numbers.includes(key)\n        if (isNum) {\n          handleType($spinnerM, $btnMinUp)\n        }\n      })\n\n    $(document).on('click', () => {\n      hideSpinner($spinner, $input, $spinnerH, $spinnerM, index)\n    })\n\n    $spinner.on('click', (e) => {\n      e.stopPropagation()\n    })\n  })\n})\n\n$(function () {\n  //resize function\n  function inputNumberResize($target) {\n    var $inputNumber = $target.closest('.input-number')\n    if ($inputNumber.hasClass('input-number-adaptive')) {\n      // width = padding (12px + 32px) + number of characters\n      if (!$inputNumber.hasClass('input-number-percentage')) {\n        $target.css('width', 'calc(44px + ' + $target.val().length + 'ch)')\n        if (isIe()) $target.css('width', 'calc(44px + (1.5 * ' + $target.val().length + 'ch))')\n      }\n      if ($inputNumber.hasClass('input-number-currency')) {\n        $target.css('width', 'calc(40px + 44px + ' + $target.val().length + 'ch)')\n        if (isIe()) $target.css('width', 'calc(40px + 44px + (1.5 * ' + $target.val().length + 'ch))')\n      }\n    }\n  }\n\n  //resize all input numbers field on DR\n  $('.input-number input[type=number]').each(function () {\n    inputNumberResize($(this))\n  })\n\n  //add & sub button\n  $('.input-number button').click(function (e) {\n    e.preventDefault()\n    //get target input field\n    var $inputTarget = $(this).closest('.input-number').find('input[type=number]')\n    var inputTargetVal = parseFloat($inputTarget.val())\n\n    if (!isNaN(inputTargetVal)) {\n      var val = 0\n      //get min & max\n      var inputTargetMax = parseFloat($inputTarget.attr('max'))\n      var inputTargetMin = parseFloat($inputTarget.attr('min'))\n\n      //get step\n      var inputTargetStep = parseFloat($inputTarget.attr('step'))\n      if (!inputTargetStep) {\n        inputTargetStep = 1\n      }\n\n      if ($(this).hasClass('input-number-add')) {\n        //add step\n        val = !isNaN(inputTargetMax) && inputTargetVal + inputTargetStep >= inputTargetMax ? inputTargetMax : inputTargetVal + inputTargetStep\n        $inputTarget.val(val).trigger('change')\n      }\n\n      if ($(this).hasClass('input-number-sub')) {\n        //subtract step\n        val = !isNaN(inputTargetMin) && inputTargetVal - inputTargetStep <= inputTargetMin ? inputTargetMin : inputTargetVal - inputTargetStep\n        $inputTarget.val(val).trigger('change')\n      }\n    }\n\n    //resize input\n    inputNumberResize($inputTarget)\n  })\n\n  //manual input\n  $('.input-number input[type=number]').change(function () {\n    //get field val\n    var $inputTarget = $(this)\n    var inputTargetVal = parseFloat($inputTarget.val())\n\n    if (!isNaN(inputTargetVal)) {\n      //get min & max\n      var inputTargetMax = parseFloat($inputTarget.attr('max'))\n      var inputTargetMin = parseFloat($inputTarget.attr('min'))\n      //limit min\n      if (inputTargetMin && inputTargetVal < inputTargetMin) {\n        inputTargetVal = inputTargetMin\n      }\n      //limit max\n      if (inputTargetMax && inputTargetVal > inputTargetMax) {\n        inputTargetVal = inputTargetMax\n      }\n      $inputTarget.val(inputTargetVal)\n    }\n\n    //resize input\n    inputNumberResize($inputTarget)\n  })\n\n  if (isIe()) {\n    // Fixing IE11 numeric behavior\n    $('input[type=number]').on('keyup', function (e) {\n      var value = e && e.target.value\n      var regexp = /[^0-9,.]/g\n      this.value = value.replace(regexp, '')\n    })\n  }\n})\n\n$(function () {\n  var carouselTarget = $('.owl-carousel.it-carousel-all')\n  // parameters\n  var cnav\n  var cloop\n  var cmargin\n  var citems\n  var cnavText\n  var cnavSpeed //arrow click\n  var csmartSpeed // bullet click\n  var cdotsSpeed\n  var ccontrolsAriaHidden\n  var cmouseDrag\n  var ctouchDrag\n  var cdots\n  var cslideBy\n  var cstagePadding\n  // mobile params\n  var mobnav\n  var mobdots\n  var mobitems\n  var mobstagePadding\n  var mobmargin\n  // 768 params\n  var tabnav\n  var tabdots\n  var tabitems\n  var tabstagePadding\n  var tabmargin\n  // 992 params\n  var desknav\n  var deskdots\n  var deskitems\n  var deskstagePadding\n  var deskmargin\n  // xl params\n  var xlnav\n  var xldots\n  var xlitems\n  var xlstagePadding\n  var xlmargin\n\n  $(carouselTarget).each(function () {\n    // target definition\n    if ($(this).closest('.it-carousel-wrapper').hasClass('it-carousel-landscape-abstract-three-cols')) {\n      cnav = true\n      cloop = false\n      cmargin = 24\n      citems = 3\n      cnavText = []\n      cnavSpeed = 300 //arrow click\n      csmartSpeed = 500 // bullet click\n      cdotsSpeed = 200\n      ccontrolsAriaHidden = true\n      cmouseDrag = true\n      ctouchDrag = true\n      cdots = false\n      cslideBy = 'page'\n      cstagePadding = 0\n      // mobile params\n      mobnav = false\n      mobdots = true\n      mobitems = 1\n      mobstagePadding = 40\n      mobmargin = 24\n      // 768 params\n      tabnav = false\n      tabdots = true\n      tabitems = 2\n      tabstagePadding = 40\n      tabmargin = 24\n      // 992 params\n      desknav = false\n      deskdots = true\n      deskitems = 3\n      deskstagePadding = 0\n      deskmargin = 0\n      // xl params\n      xlnav = false\n      xldots = true\n      xlitems = 3\n      xlstagePadding = 0\n      xlmargin = 0\n\n      // carousel 3 col with shadow\n      if ($(this).hasClass('it-card-bg')) {\n        mobstagePadding = 40\n        mobmargin = 24\n        tabstagePadding = 40\n        tabmargin = 24\n        deskstagePadding = 12\n        deskmargin = 24\n        xlstagePadding = 12\n        xlmargin = 24\n      }\n\n      // carousel 3 img card\n      if ($(this).hasClass('it-img-card')) {\n        mobstagePadding = 40\n        mobmargin = 24\n        tabstagePadding = 40\n        tabmargin = 24\n        deskstagePadding = 0\n        deskmargin = 24\n        xlstagePadding = 0\n        xlmargin = 24\n      }\n      // carousel img big\n      if ($(this).hasClass('it-img-card') && $(this).hasClass('it-big-img')) {\n        cloop = true\n        mobstagePadding = 0\n        mobmargin = 0\n        tabstagePadding = 160\n        tabmargin = 24\n        tabitems = 1\n        deskstagePadding = 320\n        deskmargin = 48\n        deskitems = 1\n        xlstagePadding = 320\n        xlmargin = 48\n        xlitems = 1\n      }\n    }\n\n    if ($(this).closest('.it-carousel-wrapper').hasClass('it-carousel-landscape-abstract-3')) {\n      // standard img\n      if ($(this).hasClass('it-img-card') && $(this).hasClass('it-standard-image')) {\n        cloop = true\n        mobstagePadding = 40\n        mobmargin = 24\n        mobitems = 1\n        tabstagePadding = 48\n        tabmargin = 24\n        tabitems = 2\n        deskstagePadding = 68\n        deskmargin = 24\n        deskitems = 3\n        xlstagePadding = 48\n        xlmargin = 24\n        xlitems = 3\n      }\n    }\n\n    if ($(this).closest('.it-carousel-wrapper').hasClass('it-calendar-wrapper')) {\n      cnav = true\n      cloop = false\n      cmargin = 0\n      citems = 4\n      cnavText = []\n      cnavSpeed = 300 //arrow click\n      csmartSpeed = 500 // bullet click\n      cdotsSpeed = 200\n      ccontrolsAriaHidden = true\n      cmouseDrag = true\n      ctouchDrag = true\n      cdots = false\n      cslideBy = 'page'\n      cstagePadding = 0\n      // mobile params\n      mobnav = false\n      mobdots = true\n      mobitems = 1\n      mobstagePadding = 40\n      mobmargin = 0\n      // 768 params\n      tabnav = false\n      tabdots = true\n      tabitems = 2\n      tabstagePadding = 40\n      tabmargin = 0\n      // 992 params\n      desknav = false\n      deskdots = true\n      deskitems = 4\n      deskstagePadding = 0\n      deskmargin = 0\n      // xl params\n      xlnav = false\n      xldots = true\n      xlitems = 4\n      xlstagePadding = 0\n      xlmargin = 0\n\n      // carousel 4 col with shadow\n      if ($(this).hasClass('it-card-bg')) {\n        mobstagePadding = 40\n        mobmargin = 0\n        tabstagePadding = 40\n        tabmargin = 0\n        deskstagePadding = 0\n        deskmargin = 0\n        xlstagePadding = 0\n        xlmargin = 0\n      }\n\n      // carousel 4 img card\n      if ($(this).hasClass('it-img-card')) {\n        mobstagePadding = 40\n        mobmargin = 0\n        tabstagePadding = 40\n        tabmargin = 0\n        deskstagePadding = 0\n        deskmargin = 0\n        xlstagePadding = 0\n        xlmargin = 0\n      }\n      // carousel img big\n      if ($(this).hasClass('it-img-card') && $(this).hasClass('it-big-img')) {\n        cloop = true\n        mobstagePadding = 0\n        mobmargin = 0\n        tabstagePadding = 160\n        tabmargin = 0\n        tabitems = 1\n        deskstagePadding = 320\n        deskmargin = 0\n        deskitems = 1\n        xlstagePadding = 320\n        xlmargin = 0\n        xlitems = 1\n      }\n      // standard img\n      if ($(this).hasClass('it-img-card') && $(this).hasClass('it-standard-image')) {\n        cloop = true\n        mobstagePadding = 40\n        mobmargin = 0\n        mobitems = 1\n        tabstagePadding = 48\n        tabmargin = tabitems = 2\n        deskstagePadding = 68\n        deskmargin = 0\n        deskitems = 4\n        xlstagePadding = 48\n        xlmargin = 0\n        xlitems = 4\n      }\n    }\n\n    // Landscape abstract --------------------------------------------------------------------------\n    if ($(this).closest('.it-carousel-wrapper').hasClass('it-carousel-landscape-abstract')) {\n      cnav = true\n      cloop = false\n      cmargin = 24\n      citems = 1\n      cnavText = []\n      cnavSpeed = 300 //arrow click\n      csmartSpeed = 500 // bullet click\n      cdotsSpeed = 200\n      ccontrolsAriaHidden = true\n      cmouseDrag = true\n      ctouchDrag = true\n      cdots = false\n      cslideBy = 'page'\n      cstagePadding = 0\n      // mobile params\n      mobnav = false\n      mobdots = true\n      mobitems = 1\n      mobstagePadding = 0\n      mobmargin = 24\n      // 768 params\n      tabnav = false\n      tabdots = true\n      tabitems = 1\n      tabstagePadding = 24\n      tabmargin = 24\n      // 992 params\n      desknav = false\n      deskdots = true\n      deskitems = 1\n      deskstagePadding = 0\n      deskmargin = 0\n      // xl params\n      xlnav = false\n      xldots = true\n      xlitems = 1\n      xlstagePadding = 0\n      xlmargin = 0\n    }\n\n    if ($(this).owlCarousel) {\n      //carousel settings//\n      $(this).owlCarousel({\n        //carousel parameters\n        nav: cnav,\n        loop: cloop,\n        margin: cmargin, //cmargin\n        items: citems,\n        navText: cnavText,\n        navSpeed: cnavSpeed, //arrow click\n        smartSpeed: csmartSpeed, // bullet click\n        dotsSpeed: cdotsSpeed,\n        navElement: 'button',\n        dotElement: 'button',\n        controlsAriaHidden: ccontrolsAriaHidden,\n        mouseDrag: cmouseDrag,\n        touchDrag: ctouchDrag,\n        dots: cdots,\n        slideBy: cslideBy,\n        stagePadding: cstagePadding, //cstagePadding,\n        responsive: {\n          // breakpoint from 0 up\n          0: {\n            nav: mobnav,\n            dots: mobdots,\n            items: mobitems,\n            stagePadding: mobstagePadding,\n            margin: mobmargin,\n          },\n          // breakpoint from 768 up\n          768: {\n            nav: tabnav,\n            dots: tabdots,\n            stagePadding: tabstagePadding,\n            items: tabitems,\n            margin: tabmargin,\n          },\n          // breakpoint from 992 up\n          992: {\n            nav: desknav,\n            dots: deskdots,\n            items: deskitems,\n            stagePadding: deskstagePadding,\n            margin: deskmargin,\n          },\n          // breakpoint from 1200 up\n          1200: {\n            nav: xlnav,\n            dots: xldots,\n            stagePadding: xlstagePadding,\n            items: xlitems,\n            margin: xlmargin,\n          },\n        },\n        onInitialized: function (event) {\n          hideInvisibleCards(event.target)\n\n          var elDesc = 'Elemento {{i}} di {{n}}'\n          var dotDesc = 'Slide {{i}} di {{n}} del carousel'\n\n          if ($(event.target).attr('data-slide-desc')) {\n            elDesc = $(event.target).attr('data-slide-desc')\n          }\n\n          if ($(event.target).attr('data-dot-desc')) {\n            dotDesc = $(event.target).attr('data-dot-desc')\n          }\n\n          var slides = $(event.target).find('.owl-item')\n          $(slides).each(function (index) {\n            var elDescText = elDesc.replace('{{i}}', index + 1)\n            elDescText = elDescText.replace('{{n}}', slides.length)\n            $(this).attr('aria-label', elDescText)\n          })\n\n          var dots = $(event.target).find('.owl-dot')\n          $(dots).each(function (index) {\n            var dotDescText = dotDesc.replace('{{i}}', index + 1)\n            dotDescText = dotDescText.replace('{{n}}', dots.length)\n            $(this).attr('aria-label', dotDescText)\n          })\n        },\n        onTranslate: function (event) {\n          showVisibleCards(event.target)\n        },\n        onTranslated: function (event) {\n          hideInvisibleCards(event.target)\n        },\n      })\n    }\n  })\n})\n\nfunction hideInvisibleCards(targetCarousel) {\n  $(targetCarousel).find('.owl-item:not(.active)').attr('aria-hidden', 'true')\n  $(targetCarousel).find('.owl-item:not(.active)').find('a', 'button').attr('tabindex', -1)\n}\n\nfunction showVisibleCards(targetCarousel) {\n  $(targetCarousel).find('.owl-item').removeAttr('aria-hidden')\n  $(targetCarousel).find('.owl-item').find('a', 'button').removeAttr('tabindex')\n}\n\ndocument.addEventListener('DOMContentLoaded', function () {\n  if (window['Splide'] !== undefined) {\n    //configs\n    var selector = document.getElementsByClassName('splide')\n    var splide\n    var perPageMob\n    var perPageTab\n    var perPageDesk\n    var gapMob\n    var gapTab\n    var gapDesk\n    var paddingMob\n    var paddingTab\n    var paddingDesk\n    var arrowsMob\n    var arrowsTab\n    var arrowsDesk\n    var cType\n    Array.prototype.forEach.call(selector, function (el) {\n      if (el.classList.contains('it-carousel-landscape-abstract-three-cols')) {\n        cType = 'slide'\n        perPageMob = 1\n        perPageTab = 2\n        perPageDesk = 3\n        gapMob = 24\n        gapTab = 24\n        gapDesk = 24\n        paddingMob = { left: 40, right: 40 }\n        paddingTab = { left: 40, right: 40 }\n        paddingDesk = { left: 0, right: 0 }\n        arrowsMob = false\n        arrowsTab = false\n        arrowsDesk = false\n        if (el.classList.contains('it-big-img')) {\n          cType = 'loop'\n          perPageMob = 1\n          perPageTab = 1\n          perPageDesk = 1\n          gapMob = 0\n          gapTab = 24\n          gapDesk = 48\n          paddingMob = { left: 0, right: 0 }\n          paddingTab = { left: 160, right: 160 }\n          paddingDesk = { left: 320, right: 320 }\n        } else if (el.classList.contains('it-standard-image')) {\n          cType = 'loop'\n          perPageMob = 1\n          perPageTab = 2\n          perPageDesk = 3\n          gapMob = 24\n          gapTab = 24\n          gapDesk = 24\n          paddingMob = { left: 40, right: 40 }\n          paddingTab = { left: 48, right: 48 }\n          paddingDesk = { left: 48, right: 48 }\n        }\n      } else if (el.classList.contains('it-carousel-landscape-abstract')) {\n        cType = 'slide'\n        perPageMob = 1\n        perPageTab = 1\n        perPageDesk = 1\n        gapMob = 24\n        gapTab = 24\n        gapDesk = 24\n        paddingMob = { left: 0, right: 0 }\n        paddingTab = { left: 24, right: 24 }\n        paddingDesk = { left: 0, right: 0 }\n        arrowsMob = false\n        arrowsTab = false\n        arrowsDesk = false\n      }\n      /*eslint-disable */\n      splide = new Splide(el, {\n        /*eslint-enable */\n        type: cType,\n        perPage: perPageDesk,\n        gap: gapDesk,\n        padding: paddingDesk,\n        arrows: arrowsDesk,\n        slideFocus: true,\n        i18n: {\n          prev: 'Slide precedente',\n          next: 'Slide successiva',\n          first: 'Vai alla prima slide',\n          last: 'Vai all’ultima slide',\n          slideX: 'Vai alla slide %s',\n          pageX: 'Vai a pagina %s',\n          play: 'Attiva autoplay',\n          pause: 'Pausa autoplay',\n        },\n        breakpoints: {\n          768: {\n            perPage: perPageMob,\n            gap: gapMob,\n            padding: paddingMob,\n            arrows: arrowsMob,\n          },\n          992: {\n            perPage: perPageTab,\n            gap: gapTab,\n            padding: paddingTab,\n            arrows: arrowsTab,\n          },\n        },\n      })\n      splide.mount()\n    })\n  }\n})\n\n$(function () {\n  // header input\n  var headerInput = $('.transfer-header input')\n  var listInput = $('.transfer-group input')\n\n  // transfer buttons\n  var addButton = $('.it-transfer-block').find('a.transfer')\n  var inverseButton = $('.it-transfer-block').find('a.backtransfer')\n  var resetButton = $('.it-transfer-block').find('a.reset')\n\n  // stato iniziale\n  var elemLeft = $('.source .transfer-group .form-check')\n  var elemRight = $('.target .transfer-group .form-check')\n  var elemLeftNum = elemLeft.length\n  var elemRightNum = elemRight.length\n  var leftStart = ''\n  var rightStart = ''\n\n  $(elemLeft).each(function () {\n    leftStart = leftStart + this\n  })\n  $(elemRight).each(function () {\n    rightStart = rightStart + this\n  })\n\n  function disableElement($el) {\n    $el.removeClass('active').attr('disabled', 'disabled').attr('aria-disabled', 'true')\n  }\n\n  function enableElement($el) {\n    $el.addClass('active').removeAttr('disabled').removeAttr('aria-disabled')\n  }\n\n  function checkListHeader(scopeElControl) {\n    var listToCheck = $(scopeElControl).find('.transfer-group input')\n    var listToCheckControl = $(scopeElControl).find('.transfer-group input:checked')\n    var inputHeader = $(scopeElControl).find('.transfer-header input')\n    // contextual buttons\n    addButton = scopeElControl.closest('.it-transfer-block').find('a.transfer')\n    inverseButton = scopeElControl.closest('.it-transfer-block').find('a.backtransfer')\n\n    if (listToCheckControl.length > 0) {\n      $(listToCheck).prop('checked', false)\n      $(inputHeader).removeClass('semi-checked').prop('checked', false)\n      // controllo quale pulsante centrale disattivare\n      if (scopeElControl.hasClass('source')) {\n        disableElement(addButton)\n      } else {\n        disableElement(inverseButton)\n      }\n    } else {\n      $(listToCheck).prop('checked', true)\n      // controllo quale pulsante centrale attivare\n      if (scopeElControl.hasClass('source')) {\n        enableElement(addButton)\n      } else {\n        enableElement(inverseButton)\n      }\n    }\n  }\n\n  function checkList(scopeElControl) {\n    var listToCheck = $(scopeElControl).find('.transfer-group input')\n    var listToCheckControl = $(scopeElControl).find('.transfer-group input:checked')\n    var inputHeader = $(scopeElControl).find('.transfer-header input')\n\n    // contextual buttons\n    addButton = scopeElControl.closest('.it-transfer-block').find('a.transfer')\n    inverseButton = scopeElControl.closest('.it-transfer-block').find('a.backtransfer')\n\n    if (listToCheckControl.length == 0) {\n      inputHeader.removeClass('semi-checked').prop('checked', false)\n      // controllo quale pulsante centrale disattivare\n      if (scopeElControl.hasClass('source')) {\n        disableElement(addButton)\n      } else {\n        disableElement(inverseButton)\n      }\n    } else {\n      if (listToCheckControl.length == listToCheck.length) {\n        inputHeader.removeClass('semi-checked').prop('checked', true)\n      } else {\n        inputHeader.addClass('semi-checked').prop('checked', false)\n      }\n      // controllo quale pulsante centrale disattivare\n      if (scopeElControl.hasClass('source')) {\n        enableElement(addButton)\n      } else {\n        enableElement(inverseButton)\n      }\n    }\n  }\n\n  function addItems(sourceControl, targetControl) {\n    var sourceItems = sourceControl.find('.transfer-group input:checked')\n    var sourceItemsBlock = sourceItems.closest('.form-check')\n    var sourceHeadInput = sourceControl.find('.transfer-header input')\n    var sourceHeadLabel = sourceControl.find('.transfer-header span.num')\n    var sourceItemsQty = sourceItems.length\n    var sourceTotalQty = sourceControl.find('.transfer-group input').length\n\n    var targetDiv = targetControl.find('.transfer-group')\n    var targetQty = targetControl.find('.transfer-group input').length + sourceItemsQty\n    var targetHeadLabel = targetControl.find('.transfer-header span.num')\n    var targetHeadInput = targetControl.find('.transfer-header input')\n\n    // ciclo di aggiunta\n    sourceItemsBlock.each(function () {\n      $(this).detach().appendTo(targetDiv).find('input').prop('checked', false)\n    })\n    // update label\n    var totalSource = sourceTotalQty - sourceItemsQty\n    var totalTarget = targetQty\n\n    sourceHeadLabel.text(totalSource)\n    targetHeadLabel.text(totalTarget)\n\n    // disattivazione header input se non ci sono più elementi\n    if (totalSource == 0) {\n      sourceHeadInput.prop('disabled', true)\n    }\n    if (totalTarget > 0) {\n      targetHeadInput.prop('disabled', false)\n    }\n\n    // ripristino stato iniziale input header\n    sourceHeadInput.removeClass('semi-checked').prop('checked', false)\n  }\n\n  function resetAll(contextControl) {\n    var left = contextControl.find('.source .transfer-group')\n    var right = contextControl.find('.target .transfer-group')\n    var textLeft = contextControl.find('.source .transfer-header span.num')\n    var textRight = contextControl.find('.target .transfer-header span.num')\n    var header = contextControl.find('.transfer-header input')\n    var allElement = contextControl.find('.transfer-group input')\n\n    $(left).find('.form-check').detach()\n    $(right).find('.form-check').detach()\n    $(left).append(elemLeft)\n    $(right).append(elemRight)\n\n    $(textLeft).text(elemLeftNum)\n    $(textRight).text(elemRightNum)\n\n    $(header).prop('disabled', false).removeClass('semi-checked')\n    $(header).prop('checked', false)\n\n    $(allElement).prop('checked', false)\n  }\n\n  // click su header\n  $(headerInput).on('click', function () {\n    var scopeEl = $(this).closest('.it-transfer-wrapper')\n    checkListHeader(scopeEl)\n  })\n\n  //click su lista\n  $(listInput).on('click', function () {\n    var scopeEl = $(this).closest('.it-transfer-wrapper')\n    checkList(scopeEl)\n  })\n\n  //spostamento da sinistra a destra\n  $(addButton).on('click', function (event) {\n    var source = $(this).closest('.it-transfer-block').find('.source')\n    var target = $(this).closest('.it-transfer-block').find('.target')\n    resetButton = $(this).closest('.it-transfer-block').find('a.reset')\n\n    // attivo il pulsante di reset\n    enableElement(resetButton)\n\n    // disattivo il pulsante corrente\n    disableElement($(this))\n\n    addItems(source, target)\n    event.preventDefault()\n  })\n\n  //spostamento da destra a sinistra\n  $(inverseButton).on('click', function (event) {\n    var target = $(this).closest('.it-transfer-block').find('.source')\n    var source = $(this).closest('.it-transfer-block').find('.target')\n    resetButton = $(this).closest('.it-transfer-block').find('a.reset')\n\n    // attivo il pulsante di reset\n    enableElement(resetButton)\n\n    // disattivo il pulsante corrente\n    disableElement($(this))\n\n    addItems(source, target)\n    event.preventDefault()\n  })\n\n  $(resetButton).on('click', function (event) {\n    var context = $(this).closest('.it-transfer-block')\n    var addButton = context.find('a.transfer')\n    var reverseButton = context.find('a.backtransfer')\n    disableElement(addButton)\n    disableElement(reverseButton)\n    disableElement($(this))\n\n    resetAll(context)\n    event.preventDefault()\n  })\n})\n\n$(function () {\n  let onSelectChange = function () {\n    $('.dropdown-menu li.selected').find('input[type=\"checkbox\"]').prop('checked', true)\n    $('.dropdown-menu li:not(.selected)').find('input[type=\"checkbox\"]').prop('checked', false)\n  }\n\n  // Allows to rewrite options dynamically with an object in the form of\n  jQuery.fn.setOptionsToSelect = function (optionsData) {\n    var selectElement = $(this).find('select')\n\n    // Destroying selectElement\n    $(selectElement).off('changed.bs.select').selectpicker('destroy').empty()\n\n    // Appending options according to the optionsData object\n    optionsData.forEach(function (x) {\n      $(selectElement).append(\n        $('<option>', {\n          value: x.value,\n          text: x.text,\n        })\n      )\n    })\n\n    // Refreshing selectElement\n    $(selectElement).selectpicker('refresh').on('changed.bs.select', onSelectChange)\n\n    return this\n  }\n\n  // Bootstrap-select initialisation\n  $('.bootstrap-select-wrapper select').selectpicker().on('changed.bs.select', onSelectChange)\n\n  // Fixes for W3C and WCAG 2.0 compliance:\n  var $selectWrapper = $('.bootstrap-select-wrapper')\n\n  // Enter generic and non-visible text for empty options\n  $selectWrapper.find('select option.bs-title-option').text('Nessuna opzione')\n  $selectWrapper.find('select option[data-content]').text('Annulla')\n\n  // Remove the role=\"combobox\" from the dropdown button\n  $selectWrapper.find('button.dropdown-toggle').removeAttr('role')\n\n  // Replace any <div>s elements with <span>s as <div>s are not allowed in a button element\n  $selectWrapper.find('div.filter-option').replaceWith(function () {\n    return $('<span />').addClass('filter-option').append($(this).contents())\n  })\n  $selectWrapper.find('div.filter-option-inner').replaceWith(function () {\n    return $('<span />').addClass('filter-option-inner').append($(this).contents())\n  })\n  $selectWrapper.find('div.filter-option-inner-inner').replaceWith(function () {\n    return $('<span />').addClass('filter-option-inner-inner').append($(this).contents())\n  })\n\n  // Add title and WAI-ARIA attribute for the input search\n  $selectWrapper.find('.bs-searchbox input').attr('title', 'Cerca').attr('aria-expanded', 'false')\n})\n\n$(function () {\n  $('.rating.rating-label input[type=radio]').on('click', function () {\n    var stars = $(this).val()\n    var starsLabel = 'stelle'\n    if (stars == 1) {\n      starsLabel = 'stella'\n    }\n    $(this)\n      .closest('.rating-label')\n      .find('legend span:not(.sr-only)')\n      .text(stars + ' ' + starsLabel)\n  })\n})\n\n$(function () {\n  $.fn.dimmerShow = function () {\n    return this.each(function () {\n      if ($(this).css('display') != 'flex') {\n        $(this).css('display', 'flex').hide().fadeIn(200)\n      }\n    })\n  }\n\n  $.fn.dimmerHide = function () {\n    return this.each(function () {\n      $(this).fadeOut(200)\n    })\n  }\n})\n\n$(document).ready(function () {\n  let selector = $('.it-datepicker-wrapper')\n  if (selector.length > 0) {\n    selector.each(function () {\n      let inputElem = $(this).find('.input-group').find('.it-date-datepicker')\n      let alertdiv = $(this).find('.invalid-feedback')\n      let successdiv = $(this).find('.valid-feedback')\n      inputElem.after(alertdiv)\n      inputElem.after(successdiv)\n    })\n  }\n})\n\n\n// bootstrap italia version variable\n// useful to check for the current version\n// eslint-disable-next-line no-unused-vars\nvar BOOTSTRAP_ITALIA_VERSION = '1.6.1'\n\n\n\n\n\nconst CONFIG_DEFAULT = {\n  errorFieldCssClass: 'is-invalid',\n  errorLabelCssClass: 'just-validate-error-label',\n}\n\nclass JustValidateIt {\n  constructor(selector, config) {\n    this.formSelector = selector\n    this.target = document.querySelector(selector)\n    this.validate = new JustValidate(selector, config)\n    this.config = Object.assign({}, CONFIG_DEFAULT, this.validate.globalConfig)\n    this.formItems = []\n\n    this.init()\n\n    return this.validate\n  }\n\n  init() {\n    const inputs = this.target.querySelectorAll('input, select')\n    inputs.forEach((input) => {\n      const watcher = new ClassWatcher(\n        input,\n        this.config.errorFieldCssClass,\n        () => this.onInputError(input),\n        () => this.onInputErrorRemove(input),\n        true\n      )\n      if (!input.id) {\n        input.setAttribute('id', 'justvalidate-input-' + Math.random())\n      }\n      this.formItems.push({\n        item: input,\n        watcher,\n      })\n    })\n    const fieldsets = this.target.querySelectorAll('fieldset')\n    fieldsets.forEach((field) => {\n      const inputs = field.querySelectorAll('input[type=radio],input[type=checkbox]')\n      if (inputs.length > 0) {\n        const watcher = new ContentWatcher(\n          field,\n          '.' + this.config.errorLabelCssClass,\n          () => this.onFieldsetError(field),\n          () => this.onFieldsetErrorRemove(field)\n        )\n        if (!field.id) {\n          field.setAttribute('id', 'justvalidate-fieldset-' + Math.random())\n        }\n        this.formItems.push({\n          item: field,\n          watcher,\n        })\n      }\n    })\n  }\n\n  /**\n   * Decorazione input e messaggio di errore con attributi ARIA\n   * @param {Object} target - l'elemento input\n   */\n  onInputError(target) {\n    const errElements = this.getErrorMessages(target)\n    const errIds = []\n    errElements.forEach((el, idx) => {\n      const id = target.id + '-error-' + idx\n      el.setAttribute('id', id)\n      errIds.push(id)\n    })\n\n    if (errIds.length > 0) {\n      target.setAttribute('aria-describedby', errIds.join(' '))\n      target.setAttribute('aria-invalid', 'true')\n    } /*else {\n      console.warn('[JustValidateIt] the element is invalid but no error message was found', { target })\n    }*/\n  }\n  /**\n   * Rimozione degli attributi ARIA dall'input\n   * @param {Object} target - l'elemento input\n   */\n  onInputErrorRemove(target) {\n    target.removeAttribute('aria-describedby')\n    target.setAttribute('aria-invalid', 'false')\n  }\n  /**\n   * Decorazione fieldset e messaggio di errore con attributi ARIA\n   * @param {Object} target - l'elemento fieldset\n   */\n  onFieldsetError(target) {\n    const errElements = this.getErrorMessages(target)\n    const errIds = []\n    const errTexts = []\n    errElements.forEach((el, idx) => {\n      const id = target.id + '-error-' + idx\n      el.setAttribute('id', id)\n      errIds.push(id)\n      errTexts.push(el.textContent)\n    })\n\n    if (errIds.length > 0) {\n      const legend = target.querySelector('legend')\n      if (legend) {\n        legend.setAttribute('aria-describedby', errIds.join(' '))\n        legend.setAttribute('aria-invalid', 'true')\n\n        //not needed anymore\n        /*const span = document.createElement('span')\n        span.classList.add('sr-only')\n        span.classList.add('sr-only-justvalidateit')\n        span.textContent = errTexts.join(' ')\n        legend.append(span)*/\n      }\n    } /*else {\n      console.warn('[JustValidateIt] the element is invalid but no error message was found', { target })\n    }*/\n  }\n  /**\n   * Rimozione degli attributi ARIA dal fieldset\n   * @param {Object} target - l'elemento fieldset\n   */\n  onFieldsetErrorRemove(target) {\n    const legend = target.querySelector('legend')\n    if (legend) {\n      legend.removeAttribute('aria-describedby')\n      legend.setAttribute('aria-invalid', 'false')\n      const span = legend.querySelector('span.sr-only-justvalidateit')\n      if (span) {\n        span.remove()\n      }\n    }\n  }\n\n  /**\n   * get the error messages for the target\n   * @param {Object} target - target node\n   */\n  getErrorMessages(target) {\n    let parent = target\n    let messages = parent.querySelectorAll('.' + this.config.errorLabelCssClass)\n    while (parent != null && messages.length === 0) {\n      parent = parent.parentNode\n      messages = parent.querySelectorAll('.' + this.config.errorLabelCssClass)\n    }\n    return messages\n  }\n}\n\n//Plugins\n/**\n * Validate a custom autocomplete select\n * @param {string} inputId - the input id\n * @param {Object} config - { required }\n */\nconst JustValidateItValidatorSelectAutocomplete = (inputId, config = {}) => {\n  return (value, fields) => {\n    let result = false\n    const field = fields[inputId]\n    if (field) {\n      if (!config.required && !value) {\n        result = true\n      } else {\n        document\n          .querySelector('#' + field.elem.id + '-select')\n          .querySelectorAll('option')\n          .forEach((option) => {\n            if (option.text === value) {\n              result = true\n            }\n          })\n      }\n    } else {\n      throw new Error('JustValidateItValidatorSelectAutocomplete: ' + inputId + ' not found as form field')\n    }\n\n    return result\n  }\n}\n\nwindow.JustValidateIt = JustValidateIt\nwindow.JustValidateItValidatorSelectAutocomplete = JustValidateItValidatorSelectAutocomplete\n\n\n\n/**\n * Mutation Content Class Observer Object\n */\n\nclass ContentWatcher {\n  constructor(targetNode, contentSelector, contentAddedCallback, contentRemovedCallback) {\n    this.targetNode = targetNode\n    this.contentSelector = contentSelector\n    this.contentAddedCallback = contentAddedCallback\n    this.contentRemovedCallback = contentRemovedCallback\n    this.observer = null\n\n    this.init()\n  }\n\n  init() {\n    this.observer = new MutationObserver((mutationsList) => this.mutationCallback(mutationsList))\n    this.observe()\n  }\n\n  observe() {\n    this.observer.observe(this.targetNode, { childList: true })\n  }\n\n  disconnect() {\n    this.observer.disconnect()\n  }\n\n  mutationCallback(mutationsList) {\n    for (let mutation of mutationsList) {\n      if (mutation.type === 'childList') {\n        mutation.addedNodes.forEach((node) => {\n          if (node.matches(this.contentSelector)) {\n            this.contentAddedCallback()\n          }\n        })\n        mutation.removedNodes.forEach((node) => {\n          if (node.matches(this.contentSelector)) {\n            this.contentRemovedCallback()\n          }\n        })\n      }\n    }\n  }\n}\n\n\n\n/**\n * Mutation CSS Class Observer Object\n */\n//https://stackoverflow.com/a/53914092\n\nclass ClassWatcher {\n  constructor(targetNode, classToWatch, classAddedCallback, classRemovedCallback, ignoreToggle) {\n    this.targetNode = targetNode\n    this.classToWatch = classToWatch\n    this.classAddedCallback = classAddedCallback\n    this.classRemovedCallback = classRemovedCallback\n    this.observer = null\n    this.lastClassState = targetNode.classList.contains(this.classToWatch)\n    this.ignoreToggle = !!ignoreToggle\n\n    this.init()\n  }\n\n  init() {\n    this.observer = new MutationObserver((mutationsList) => this.mutationCallback(mutationsList))\n    this.observe()\n  }\n\n  observe() {\n    this.observer.observe(this.targetNode, { attributes: true })\n  }\n\n  disconnect() {\n    this.observer.disconnect()\n  }\n\n  mutationCallback(mutationsList) {\n    for (let mutation of mutationsList) {\n      if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n        let currentClassState = mutation.target.classList.contains(this.classToWatch)\n        if (this.ignoreToggle || this.lastClassState !== currentClassState) {\n          this.lastClassState = currentClassState\n          if (currentClassState) {\n            this.classAddedCallback()\n          } else {\n            this.classRemovedCallback()\n          }\n        }\n      }\n    }\n  }\n}\n\n\n\n\n\nconst STYLE = {\n  opened: 'expanded',\n}\nconst SELECTOR = {\n  sideMenu: '.navbar-collapsable',\n  navlink: '.nav-link',\n  megamenuNavLink: '.nav-item .list-item',\n  closeBtn: '.close-menu',\n  navbar: '.navbar',\n  homeBtn: '.custom-navbar-toggler',\n}\n\nclass SideMenu {\n  constructor(targetNode) {\n    this.target = targetNode\n    this.watcher\n    this.items = targetNode.querySelectorAll([SELECTOR.navlink, SELECTOR.megamenuNavLink, SELECTOR.closeBtn].join(','))\n    this.currItemIdx = 0\n    this.isKeyShift = false\n  }\n\n  init() {\n    this.watcher = new ClassWatcher(\n      this.target,\n      STYLE.opened,\n      () => this.isServiceEnabled() && this.onOpen(),\n      () => this.isServiceEnabled() && this.onClose()\n    )\n    this.bindEvents()\n  }\n  bindEvents() {\n    this.items.forEach((item) => {\n      item.addEventListener('keydown', (evt) => this.isServiceEnabled() && this.onItemKeyDown(evt))\n      item.addEventListener('keyup', (evt) => this.isServiceEnabled() && this.onItemKeyUp(evt))\n      item.addEventListener('click', (evt) => this.isServiceEnabled() && this.onItemClick(evt))\n    })\n  }\n\n  /**\n   * it tells if the class functionalities can operate based on screensize\n   * @returns true if the class can operate\n   */\n  isServiceEnabled() {\n    return window.matchMedia('(max-width: 991px)').matches\n  }\n\n  /**\n   * Move focus on the first element of the menu\n   */\n  onOpen() {\n    const firstItem = this.getNextVisibleItem(1) //at pos 0 there's the close button\n    if (firstItem.item) {\n      firstItem.item.focus()\n      this.currItemIdx = firstItem.index\n    }\n  }\n  /**\n   * Move focus on the menu open button when the side menu closes\n   */\n  onClose() {\n    const homeBtn = this.target.closest(SELECTOR.navbar).querySelector(SELECTOR.homeBtn)\n    if (homeBtn) {\n      homeBtn.focus()\n    }\n  }\n  onItemKeyUp(evt) {\n    if (evt.key === 'Shift') {\n      this.isKeyShift = false\n    }\n  }\n  /**\n   * Gestisce la navigazione degli elementi interagibili del menu tramite tastiera\n   */\n  onItemKeyDown(evt) {\n    if (evt.key === 'Shift') {\n      this.isKeyShift = true\n    }\n    if (evt.key === 'Tab') {\n      evt.preventDefault()\n      this.focusNext()\n    }\n  }\n  /**\n   * Aggiorna l'ultimo elemento con focus al click su un elemento interagibile\n   */\n  onItemClick(evt) {\n    this.currItemIdx = this.getItemIndex(evt.currentTarget)\n  }\n  /**\n   * indica se l'elemento è non visibile\n   * @param {Object} element - l'elemento da analizzare\n   * @returns {boolean} true se l'elemento risulta non visibile\n   */\n  isHidden(element) {\n    return element.offsetParent === null\n  }\n  /**\n   * ritorna l'indice dell'elemento all'interno dell'array degli elementi del menu\n   * @param {Object} target - l'elemento di cui si vuole ottenere l'indice\n   * @returns {int} l'indice dell'elemento\n   */\n  getItemIndex(target) {\n    let foundIdx = null\n    this.items.forEach((item, idx) => {\n      if (item === target) {\n        foundIdx = idx\n      }\n    })\n    return foundIdx\n  }\n  /**\n   * Sposta il focus sul primo elemento visibile dato un punto di partenza\n   * @param {int} start - l'indice dell'array degli elementi del menu dal quale partire (compreso)\n   * @param {boolean} wayTop - indica se esplorare l'array dal basso verso l'alto\n   * @returns {Object} un oggetto contenente l'elemento e il suo indice trovati\n   */\n  getNextVisibleItem(start, wayTop) {\n    let found = null\n    let foundIdx = null\n\n    let i = start\n    let incr = wayTop ? -1 : 1\n    let firstCheck = false\n    while (!found && (i != start || !firstCheck)) {\n      if (i == start) {\n        firstCheck = true\n      }\n      if (!this.isHidden(this.items[i])) {\n        found = this.items[i]\n        foundIdx = i\n      }\n      i = i + incr\n      if (i < 0) {\n        i = this.items.length - 1\n      } else if (i >= this.items.length) {\n        i = 0\n      }\n    }\n\n    return {\n      item: found,\n      index: foundIdx,\n    }\n  }\n\n  /**\n   * Sposta il focus sul prossimo elemento tenendo conto della direzione in cui si sta esplorando il DOM\n   */\n  focusNext() {\n    let nextIdx = this.currItemIdx + (this.isKeyShift ? -1 : 1)\n    if (nextIdx < 0) {\n      nextIdx = this.items.length - 1\n    } else if (nextIdx >= this.items.length) {\n      nextIdx = 0\n    }\n    const target = this.getNextVisibleItem(nextIdx, this.isKeyShift)\n    if (target.item) {\n      target.item.focus()\n      this.currItemIdx = target.index\n    }\n  }\n}\n\nconst menus = document.querySelectorAll(SELECTOR.sideMenu)\nmenus.forEach((menu) => {\n  const smenu = new SideMenu(menu)\n  smenu.init()\n})\n\n$(function () {\n  /**\n   * fix collapse accessibility (arrow keys, home key, end key functionality)\n   */\n\n  var SELECTOR = {\n    HEADBTN_WRAPPER: '.collapse-div',\n    HEADBTN: '.collapse-header [data-toggle=\"collapse\"]',\n  }\n\n  var focusSimbling = function (target, isDirectionTop, isLimit) {\n    var btns = $(target)\n      .closest(SELECTOR.HEADBTN_WRAPPER)\n      .find('> ' + SELECTOR.HEADBTN)\n    var currIdx = btns.index($(target))\n\n    var found = null\n    if (isLimit && isDirectionTop && currIdx > 0) {\n      //get first element\n      found = btns[0]\n    } else if (isLimit && currIdx < btns.length - 1) {\n      //get last element\n      found = btns[btns.length - 1]\n    } else if (isDirectionTop) {\n      //get prev element\n      found = btns[currIdx === 0 ? btns.length - 1 : currIdx - 1]\n    } else {\n      //get next element\n      found = btns[currIdx < btns.length - 1 ? currIdx + 1 : 0]\n    }\n\n    if (found) {\n      $(found).trigger('focus')\n    }\n  }\n  var focusNext = function (target) {\n    focusSimbling(target)\n  }\n  var focusPrev = function (target) {\n    focusSimbling(target, true)\n  }\n  var focusFirst = function (target) {\n    focusSimbling(target, true, true)\n  }\n  var focusLast = function (target) {\n    focusSimbling(target, false, true)\n  }\n\n  var EVENT_CALLBACK = {\n    ArrowDown: focusNext,\n    ArrowUp: focusPrev,\n    Home: focusFirst,\n    End: focusLast,\n  }\n\n  $(SELECTOR.HEADBTN).on('keydown', function (evt) {\n    var key = evt.key\n    if (typeof EVENT_CALLBACK[key] === 'function') {\n      evt.preventDefault()\n      EVENT_CALLBACK[key](evt.currentTarget)\n    }\n  })\n})\n"]}