mirror of
https://github.com/a2nt/webpack-bootstrap-ui-kit.git
synced 2024-10-22 11:05:45 +02:00
1 line
1.1 MiB
1 line
1.1 MiB
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@a2nt/meta-lightbox/src/js/meta-lightbox.js","webpack:///../src/alert.js","webpack:///../src/button.js","webpack:///../src/carousel.js","webpack:///../src/collapse.js","webpack:///../src/modal.js","webpack:///../src/popover.js","webpack:///../src/scrollspy.js","webpack:///../src/tab.js","webpack:///../src/tools/sanitizer.js","webpack:///../src/tooltip.js","webpack:///../src/util.js","webpack:///./node_modules/font-awesome sync nonrecursive \\.(otf|eot|svg|ttf|woff|woff2)$","webpack:///./node_modules/hammerjs/hammer.js","webpack:///./node_modules/inputmask/dist/inputmask.js","webpack:///./node_modules/inputmask/index.js","webpack:///./node_modules/jquery-hammerjs/jquery.hammer.js","webpack:///./node_modules/jquery-hoverintent/jquery.hoverIntent.js","webpack:///../../src/utils/isBrowser.js","webpack:///../../src/utils/debounce.js","webpack:///../../src/utils/isFunction.js","webpack:///../../src/utils/getStyleComputedProperty.js","webpack:///../../src/utils/getParentNode.js","webpack:///../../src/utils/getScrollParent.js","webpack:///../../src/utils/getReferenceNode.js","webpack:///../../src/utils/isIE.js","webpack:///../../src/utils/getOffsetParent.js","webpack:///../../src/utils/getRoot.js","webpack:///../../src/utils/findCommonOffsetParent.js","webpack:///../../src/utils/isOffsetContainer.js","webpack:///../../src/utils/getScroll.js","webpack:///../../src/utils/getBordersSize.js","webpack:///../../src/utils/getWindowSizes.js","webpack:///../../src/utils/getClientRect.js","webpack:///../../src/utils/getBoundingClientRect.js","webpack:///../../src/utils/getOffsetRectRelativeToArbitraryNode.js","webpack:///../../src/utils/includeScroll.js","webpack:///../../src/utils/getFixedPositionOffsetParent.js","webpack:///../../src/utils/getBoundaries.js","webpack:///../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","webpack:///../../src/utils/isFixed.js","webpack:///../../src/utils/computeAutoPlacement.js","webpack:///../../src/utils/getReferenceOffsets.js","webpack:///../../src/utils/getOuterSizes.js","webpack:///../../src/utils/getOppositePlacement.js","webpack:///../../src/utils/getPopperOffsets.js","webpack:///../../src/utils/find.js","webpack:///../../src/utils/runModifiers.js","webpack:///../../src/utils/findIndex.js","webpack:///../../src/methods/update.js","webpack:///../../src/utils/isModifierEnabled.js","webpack:///../../src/utils/getSupportedPropertyName.js","webpack:///../../src/methods/destroy.js","webpack:///../../src/utils/getWindow.js","webpack:///../../src/utils/setupEventListeners.js","webpack:///../../src/methods/enableEventListeners.js","webpack:///../../src/methods/disableEventListeners.js","webpack:///../../src/utils/removeEventListeners.js","webpack:///../../src/utils/isNumeric.js","webpack:///../../src/utils/setStyles.js","webpack:///../../src/modifiers/computeStyle.js","webpack:///../../src/utils/isModifierRequired.js","webpack:///../../src/methods/placements.js","webpack:///../../src/utils/clockwise.js","webpack:///../../src/modifiers/flip.js","webpack:///../../src/modifiers/offset.js","webpack:///../../src/modifiers/index.js","webpack:///../../src/methods/defaults.js","webpack:///../../src/modifiers/shift.js","webpack:///../../src/modifiers/preventOverflow.js","webpack:///../../src/modifiers/keepTogether.js","webpack:///../../src/modifiers/arrow.js","webpack:///../../src/utils/getOppositeVariation.js","webpack:///../../src/modifiers/inner.js","webpack:///../../src/modifiers/hide.js","webpack:///../../src/utils/getRoundedOffsets.js","webpack:///../../src/modifiers/applyStyle.js","webpack:///../../src/utils/setAttributes.js","webpack:///../../src/index.js","webpack:///./node_modules/select2/dist/js/select2.js","webpack:///./node_modules/smooth-scroll/dist/smooth-scroll.polyfills.min.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/module.js","webpack:///./src/img sync nonrecursive \\.(png|jpe","webpack:///./src/img/bg.png","webpack:///./src/img/photo1.png","webpack:///./src/img/photo2.jpg","webpack:///./src/img/photo3.svg","webpack:///./src/js/_components/drivers/_google.track.external.links.js","webpack:///./src/js/_components/drivers/_map.google.marker.js","webpack:///./src/js/_components/drivers/_map.google.js","webpack:///./src/js/_consts.js","webpack:///./src/js/_events.js","webpack:///./src/js/_components/_ui.hover.js","webpack:///./src/js/_components/_ui.carousel.js","webpack:///./src/js/_components/_ui.menu.js","webpack:///./src/js/_components/_ui.cookie.js","webpack:///./src/js/_components/_ui.flyout.js","webpack:///./node_modules/sticky-sidebar/src/sticky-sidebar.js","webpack:///./src/js/_components/_ui.sidebar.js","webpack:///./src/js/_components/_ui.spinner.js","webpack:///./src/js/_components/_ui.ajax.js","webpack:///./src/js/_components/_ui.form.fields.js","webpack:///./src/js/_components/_ui.form.basics.js","webpack:///./src/js/_main.js","webpack:///./src/js/_components/_ui.video.preview.js","webpack:///./src/js/_layout.js","webpack:///./src/js/app.js","webpack:///external \"jQuery\""],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","$","window","document","pluginName","defaults","effect","theme","keyboardNav","clickOverlayToClose","onInit","beforeShowLightbox","afterShowLightbox","lightbox","beforeHideLightbox","afterHideLightbox","onPrev","element","onNext","errorMessage","MetaLightbox","options","this","extend","_defaults","_name","init","$this","$html","ajaxLoaded","hasClass","addClass","removeClass","on","e","preventDefault","stopPropagation","showLightbox","off","code","keyCode","which","destructLightbox","trigger","el","$el","content","currentLink","galleryItems","constructLightbox","find","processContent","data","length","hide","show","index","eq","last","first","setTimeout","link","img","video","src","classTerm","iframe","wrap","href","attr","html","isHidpi","match","$content","imgwrapper","append","css","height","resize","zoom","contentLoaded","setTitle","ga","frameborder","vspace","hspace","scrolling","substring","clone","outerHeight","ajax","sync","async","url","dataType","method","cache","statusCode","404","console","log","location","302","error","jqXHR","statusText","success","status","dataJson","parseJSON","title","getResponseHeader","indexOf","replace","localStorage","setItem","URL","history","pushState","page","imagesLoaded","then","text","titleWrap","overlay","nav","close","$overlay","$target","target","replaceState","empty","devicePixelRatio","matchMedia","matches","fn","each","metaLightbox","jQuery","JQUERY_NO_CONFLICT","Event","CLOSE","CLOSED","CLICK_DATA_API","ClassName","Alert","rootElement","_getRootElement","_triggerCloseEvent","dispose","selector","Util","parent","closeEvent","_removeElement","transitionDuration","_destroyElement","_jQueryInterface","$element","config","_handleDismiss","event","alertInstance","NAME","Selector","FOCUS_BLUR_DATA_API","LOAD_DATA_API","Button","toggle","triggerChangeEvent","addAriaPressed","input","_element","querySelector","classList","contains","activeElement","tagName","hasAttribute","button","inputBtn","test","buttons","slice","len","DATA_KEY","EVENT_KEY","Default","interval","keyboard","slide","pause","touch","DefaultType","Direction","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHSTART","TOUCHMOVE","TOUCHEND","POINTERDOWN","POINTERUP","DRAG_START","ACTIVE","ACTIVE_ITEM","ITEM","ITEM_IMG","NEXT_PREV","INDICATORS","DATA_SLIDE","DATA_RIDE","PointerType","TOUCH","PEN","Carousel","_getConfig","navigator","Boolean","next","nextWhenVisible","prev","clearInterval","cycle","_config","setInterval","to","activeIndex","_getItemIndex","_items","direction","_handleSwipe","absDeltax","Math","_addEventListeners","_addTouchEventListeners","start","end","clearTimeout","querySelectorAll","move","_keydown","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","targetIndex","fromIndex","slideEvent","relatedTarget","from","_setActiveIndicatorElement","indicators","_indicatorsElement","nextIndicator","children","_slide","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","eventDirectionName","slidEvent","nextElementInterval","parseInt","defaultInterval","action","TypeError","_dataApiClickHandler","slideIndex","getAttribute","carousels","$carousel","SHOW","SHOWN","HIDE","HIDDEN","Dimension","ACTIVES","DATA_TOGGLE","Collapse","toggleList","elem","filterElement","foundElem","_isTransitioning","actives","_parent","activesData","startEvent","dimension","_triggerArray","scrollSize","getBoundingClientRect","triggerArrayLength","$elem","setTransitioning","_getDimension","_getParent","_addAriaAndCollapsedClass","isOpen","triggerArray","_getTargetFromElement","$trigger","selectors","backdrop","focus","HIDE_PREVENTED","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","DIALOG","MODAL_BODY","DATA_DISMISS","FIXED_CONTENT","STICKY_CONTENT","Modal","_isShown","showEvent","hideEvent","transition","handleUpdate","_triggerBackdropTransition","hideEventPrevented","modalTransitionDuration","_showElement","modalBody","_dialog","parentNode","nodeType","Node","shownEvent","transitionComplete","_enforceFocus","_setEscapeEvent","_setResizeEvent","_hideModal","_removeBackdrop","_showBackdrop","animate","callback","backdropTransitionDuration","callbackRemove","_adjustDialog","isModalOverflowing","scrollHeight","_isBodyOverflowing","_resetAdjustments","_checkScrollbar","rect","_setScrollbar","fixedContent","stickyContent","actualPadding","calculatedPadding","parseFloat","actualMargin","calculatedMargin","_resetScrollbar","padding","elements","margin","_getScrollbarWidth","scrollDiv","scrollbarWidth","BSCLS_PREFIX_REGEX","RegExp","Tooltip","placement","template","INSERTED","CLICK","FOCUSOUT","Popover","isWithContent","getTitle","addAttachmentClass","CLASS_PREFIX","getTipElement","tip","setContent","$tip","_getContent","_cleanTipClass","tabClass","offset","ACTIVATE","SCROLL","DATA_SPY","NAV_LIST_GROUP","NAV_LINKS","NAV_ITEMS","LIST_ITEMS","DROPDOWN","DROPDOWN_ITEMS","DROPDOWN_TOGGLE","OffsetMethod","ScrollSpy","refresh","autoMethod","_scrollElement","offsetMethod","offsetBase","targets","targetSelector","targetBCR","a","b","item","id","_getScrollTop","_getScrollHeight","_getOffsetHeight","_process","scrollTop","maxScroll","_scrollHeight","_targets","_activeTarget","_offsets","_activate","queries","_selector","$link","_clear","node","scrollSpys","$spy","Tab","listElement","itemSelector","previous","complete","hiddenEvent","active","container","isTransitioning","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","uriAttrs","DefaultWhitelist","area","br","col","div","em","hr","h1","h2","h3","h4","h5","h6","li","ol","pre","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","unsafeHtml","sanitizeFn","createdDocument","domParser","whitelistKeys","elName","attributeList","whitelistedAttributes","concat","whiteList","attrName","allowedAttributeList","regExp","attrRegex","allowedAttribute","DISALLOWED_ATTRIBUTES","animation","delay","fallbackPlacement","boundary","sanitize","popperConfig","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HoverState","Trigger","Popper","enable","disable","toggleEnabled","dataKey","constructor","context","Error","shadowRoot","isInTheDom","ownerDocument","tipId","attachment","_getAttachment","_getPopperConfig","prevHoverState","update","_popper","setElementContent","sanitizeHtml","modifiers","flip","behavior","arrow","preventOverflow","boundariesElement","onCreate","onUpdate","_getOffset","_getContainer","_setListeners","split","triggers","eventIn","eventOut","_fixTitle","titleType","_enter","_leave","_isWithActiveTrigger","_activeTrigger","dataAttributes","_getDelegateConfig","_handlePopperPlacementChange","popperInstance","popperData","_fixTransition","initConfigAnimation","TRANSITION_END","called","getUID","prefix","getSelectorFromElement","hrefAttr","err","getTransitionDurationFromElement","transitionDelay","floatTransitionDuration","floatTransitionDelay","reflow","triggerTransitionEnd","supportsTransitionEnd","isElement","obj","typeCheckConfig","expectedTypes","configTypes","valueType","toString","componentName","findShadowRoot","root","jQueryDetection","version","bindType","delegateType","handle","webpackEmptyContext","req","keys","resolve","exportName","undefined","assign","VENDOR_PREFIXES","TEST_ELEMENT","createElement","TYPE_FUNCTION","round","abs","now","Date","setTimeoutContext","timeout","bindFn","invokeArrayArg","arg","Array","isArray","iterator","forEach","deprecate","message","deprecationMessage","stack","warn","apply","arguments","output","source","nextKey","dest","merge","inherit","child","base","properties","childP","baseP","_super","boolOrFn","val","args","ifUndefined","val1","val2","addEventListeners","types","handler","splitStr","type","addEventListener","removeEventListeners","removeEventListener","hasParent","inStr","str","trim","inArray","findByKey","toArray","uniqueArray","sort","results","values","push","prefixed","prop","camelProp","toUpperCase","_uniqueId","getWindowForElement","doc","defaultView","parentWindow","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","userAgent","COMPUTE_INTERVAL","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","PROPS_XY","PROPS_CLIENT_XY","Input","manager","self","inputTarget","domHandler","ev","inputHandler","eventType","pointersLen","pointers","changedPointersLen","changedPointers","isFirst","isFinal","session","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","center","getCenter","timeStamp","deltaTime","angle","getAngle","distance","getDistance","offsetDelta","prevDelta","prevInput","x","deltaX","y","deltaY","computeDeltaXY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","scale","rotation","getRotation","maxPointers","velocity","velocityX","velocityY","lastInterval","v","computeIntervalInputData","srcEvent","computeInputData","emit","recognize","clientX","clientY","p1","p2","props","sqrt","atan2","PI","evEl","evTarget","evWin","destroy","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","MouseInput","pressed","pointerType","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","2","3","4","5","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","store","pointerEvents","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","toLowerCase","isTouch","storeIndex","pointerId","splice","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","SingleTouchInput","started","normalizeSingleTouches","all","touches","changed","changedTouches","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","TouchInput","targetIds","getTouches","allTouches","identifier","targetTouches","changedTargetTouches","filter","DEDUP_TIMEOUT","DEDUP_DISTANCE","TouchMouseInput","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","dx","dy","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","style","NATIVE_TOUCH_ACTION","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","touchMap","cssSupports","CSS","supports","getTouchActionProps","TouchAction","set","compute","actions","touchAction","recognizers","recognizer","getTouchAction","hasPanX","hasPanY","cleanTouchActions","join","preventDefaults","prevented","hasNone","isTapPointer","isTapMovement","isTapTouchTime","preventSrc","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","Recognizer","state","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","count","Hammer","preset","Manager","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","reset","process","attrTest","optionPointers","isRecognized","isValid","threshold","directionTest","hasMoved","inOut","time","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","inputClass","cssProps","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","handlers","oldCssProps","toggleCssProps","add","stop","force","stopped","curRecognizer","existing","remove","events","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","triggerDomEvent","STATE_FAILED","Tap","Pan","Swipe","Pinch","Rotate","Press","define","factory","JSON","parse","_typeof","generateMaskSet","analyseMask","maskScope","Inputmask","alias","internal","maskset","refreshValue","isPlainObject","opts","noMasksCache","definitions","userOptions","resolveAlias","isRTL","numericInput","aliasStr","aliasDefinition","aliases","mask","dataAttribute","_maxTestPos","placeholder","optionalmarker","quantifiermarker","groupmarker","alternatormarker","escapeChar","regex","oncomplete","noop","onincomplete","oncleared","repeat","greedy","autoUnmask","removeMaskOnSubmit","clearMaskOnLostFocus","insertMode","insertModeVisual","clearIncomplete","onKeyDown","onBeforeMask","onBeforePaste","pastedValue","isFunction","onBeforeWrite","onUnMask","showMaskOnFocus","showMaskOnHover","onKeyValidation","skipOptionalPartCharacter","rightAlign","undoOnEscape","radixPoint","_radixDance","groupSeparator","keepStatic","positionCaretOnTab","tabThrough","supportsInputType","ignorables","isComplete","preValidation","postValidation","staticDefinitionSymbol","jitMasking","nullable","inputEventOnly","noValuePatching","positionCaretOnClick","casing","inputmode","importDataAttributes","shiftPositions","9","validator","definitionSymbol","masksCache","elems","that","getElementById","nodeName","ndx","scopedOpts","npt","importOption","option","optionData","dataoptions","attrOptions","dir","textAlign","removeAttribute","importAttributeOptions","inputmask","noremask","unmaskedvalue","getemptymask","hasMaskedValue","getmetadata","format","metadata","setValue","extendDefaults","extendDefinitions","definition","extendAliases","unmask","escapeRegexRegex","escapeRegex","dependencyLib","isWindow","isValidElement","Element","DependencyLib","eventRegistry","addEvent","namespace","attachEvent","_events","endx","nsEvent","removeEvent","detachEvent","nmsp","resolveNamespace","hndx","hndL","evts","evNdx","offEvents","offEventsL","argument_1","evnt","params","bubbles","cancelable","detail","CustomEvent","initCustomEvent","createEventObject","fireEvent","arr","list","valHooks","copy","copyIsArray","deep","ltype","isArraylike","owner","__data","evt","__WEBPACK_AMD_DEFINE_RESULT__","eval","nocache","generateMask","masksetDefinition","maskdefKey","regexMask","repeatStart","reverse","maskToken","validPositions","_buffer","buffer","tests","excludes","maskLength","jitOffset","altMask","msk","pop","openingToken","currentOpeningToken","alternator","lastMatch","tokenizer","regexTokenizer","escaped","currentToken","MaskToken","openenings","maskTokens","closeRegexGroup","isGroup","isOptional","isQuantifier","isAlternator","openGroup","alternatorGroup","quantifier","min","max","insertTestDefinition","mtoken","position","prevMatch","static","optionality","newBlockMarker","def","nativeDef","lmnt","maskdef","generated","defaultCase","mndx","groupify","groupToken","closeGroup","groupQuantifier","exec","charAt","altRegexGroup","mqj","mq","mq0","isNaN","mq1","jit","tmpMatch","subToken","verifyGroupMarker","token","nextToken","reverseTokens","intMatch","qt","st","A","ipValidatorRegex","ipValidator","chrs","pos","strict","cssunit","ip","j","k","maskedValue","unmaskedValue","email","mac","vin","V","ssn","currentResult","ua","ie","mobile","iemobile","iphone","actionObj","undoValue","maxLength","skipKeyPressEvent","skipInputEvent","validationEvent","ignorable","mouseEnter","originalPlaceholder","getMaskTemplate","baseOnInput","minimalPos","includeMode","noJit","clearOptionalTail","ndxIntlzr","testPos","jitRenderStatic","maskTemplate","generatedInput","determineTestTemplate","getTests","locator","getPlaceholder","getTestTemplate","isFinite","resetMaskSet","soft","getLastValidPosition","closestTo","before","after","valids","posNdx","psNdx","getDecisionTaker","tst","decisionTaker","alternation","getLocator","align","mloc","tstLocator","closest","bestMatch","targetLocator","getTest","optionalQuantifier","tstPs","positionCanMatchDefinition","testDefinition","valid","tndx","latestMatch","ndxInitializer","insertStop","cacheDependency","resolveTestFromToken","loopNdx","quantifierRecurse","handleMatch","isFirstMatch","tokenGroup","firstMatch","resolveNdxInitializer","alternateNdx","targetAlternation","indexPos","ndxPos","bestMatchAltIndex","isSubsetOf","expand","pattern","expanded","charCodeAt","String","fromCharCode","setMergeLocators","targetMatch","altMatch","alternationNdx","shouldMerge","locNdx","isSameLevel","cd","optionalToken","mtchsNdx","mtch","maltMatches","alternateToken","malternateMatches","currentMatches","loopNdxCnt","altIndex","shift","amndx","currentPos","ndxInitializerClone","altIndexArr","altIndexArrClone","exl","excludeSet","unMatchedAlternation","ndx1","dropMatch","ndx2","altMatch2","qndx","previousPos","mergeLocators","mtndx","getBufferTemplate","getBuffer","noCache","refreshFromBuffer","bffr","determineNewCaretPosition","begin","keypress","valResult","EventHandlers","keypressEvent","forwardPosition","posBefore","SPACE","checkAlternationMatch","altArr1","altArr2","na","naNdx","altArrC","isMatch","naArr","alndx","alternate","maskPos","fromIsValid","rAltPos","selection","lastAlt","altPos","prevAltPos","validPos","decisionPos","validPsClone","tstClone","isValidRslt","returnRslt","lAltPos","validInputs","resultPos","caret","caretPos","fromAlternate","validateOnly","isSelection","posObj","processCommandObject","commandObj","revalidateMask","insert","rewritePosition","_isValid","rslt","validatedPos","result","positionsClone","currentPosValid","seekNext","skip","isMask","nPos","snPos","trackbackPositions","postResult","originalPos","newPos","fillOnly","ps","np","cvpInput","validTest","IsEnclosedStatic","posMatch","nextMatch","lvp","canMatch","fuzzy","testTemplate","testPlaceHolder","newBlock","seekPrevious","writeBuffer","triggerEvents","_valueSet","DELETE","BACKSPACE","$input","nptVal","_valueGet","returnPL","prevTest","staticAlternations","HandleNativePlaceholder","nptValue","selectedCaret","tabbed","clickPos","digits","vps","radixPos","vp","doRadixFocus","clickPosition","lvclickPosition","lastPosition","tt","valueBuffer","EventRuler","eventName","eventHandler","originalEvent","imOpts","disabled","readOnly","ctrlKey","TAB","inputType","blur","returnVal","form","evArr","keydownEvent","kdResult","BACKSPACE_SAFARI","X","handleRemove","END","PAGE_DOWN","shiftKey","HOME","PAGE_UP","ESCAPE","altKey","checkVal","caretPos_begin","translatePosition","checkval","writeOut","charCode","metaKey","ENTER","writeOutBuffer","pasteEvent","tempValue","inputValue","valueBeforeCaret","substr","valueAfterCaret","clipboardData","getData","pasteValue","inputFallBackEvent","changes","bl","frontPart","backPart","frontBufferPart","backBufferPart","fpl","bpl","unshift","newBuffer","oldBuffer","analyseChanges","inputChar","iv","ieMobileHandler","entry","keydown","applyInputValue","compositionendEvent","setValueEvent","argument_2","focusEvent","clickEvent","invalidEvent","mouseleaveEvent","newCaretPosition","cutEvent","clipData","setData","execCommand","blurEvent","mouseenterEvent","submitEvent","resetEvent","nptvl","initiatingEvent","charCodes","initialNdx","staticMatches","prevCaretPos","targetTemplate","charCodeNdx","nextPos","isTemplateMatch","sndx","nextValid","nextSndx","vndx","umValue","pndx","bufferValue","notranslate","isDelete","range","selectionStart","selectionEnd","getSelection","getRangeAt","commonAncestorContainer","startOffset","endOffset","createRange","duplicate","moveStart","scrollCalc","getComputedStyle","currentStyle","fontSize","scrollLeft","scrollWidth","setSelectionRange","firstChild","textNode","createTextNode","appendChild","setStart","setEnd","collapse","sel","removeAllRanges","addRange","createTextRange","moveEnd","select","determineLastRequiredPosition","returnDefinition","positions","lvTest","lvTestAlt","lrp","aml","pend","isSupported","elementType","isContentEditable","setAttribute","valueGet","valueSet","setter","__valueGet","getOwnPropertyDescriptor","getPrototypeOf","__proto__","valueProperty","configurable","textContent","__lookupGetter__","__lookupSetter__","__defineGetter__","__defineSetter__","__valueSet","overruleRTL","inputmaskpatch","valhookGet","valhookSet","patchValhook","installNativeValueSetFallback","patchValueProperty","isElementTypeSupported","inputMode","autocomplete","rl","lmib","cv","maskTarget","mtdt","formatCode","setDate","getDate","dd","pad","ddd","dddd","setMonth","getMonth","mm","mmm","mmmm","yy","setFullYear","getFullYear","yyyy","h","setHours","getHours","hh","hx","H","HH","Hx","M","setMinutes","getMinutes","MM","setSeconds","getSeconds","ss","setMilliseconds","getMilliseconds","L","T","TT","Z","S","formatAlias","isoDate","isoTime","isoDateTime","isoUtcDateTime","formatcode","dynMatches","fcode","getTokenizer","tokens","dyntokens","dynToken","dateObjValue","raw","lastIndex","date","maskString","targetProp","dateOperation","dateObj","extendProperty","importDate","inputFormat","getYear","getTokenMatch","calcPos","matchLength","targetMatchIndex","datetime","i18n","ordinalSuffix","displayFormat","outputFormat","dayNames","monthNames","tokenMatch","part","dateParts","getTime","rawday","day","rawyear","rawmonth","month","isValidDate","rawYear","year","isDateInRange","initialValue","autoEscape","txt","escapedTxt","alignDigits","digitsOptional","radixPosition","findValidator","symbol","tstNdx","ndxl","findValid","ret","decimalValidator","numeric","decimalDef","radixPointDef","__financeInput","_mask","dq","suffix","parseMinMaxOptions","NaN","Number","MIN_VALUE","MAX_VALUE","enforceDigitsOnBlur","allowMinus","negationSymbol","front","back","step","unmaskAsNumber","roundingFN","shortcuts","0","1","inserts","initPos","hanndleRadixDance","isNegative","unmasked","processValue","valueParts","integerPart","decimalPart","forceDigits","digitsFactor","pow","toFixed","numberValue","stripBuffer","stripRadix","leadingzeroes","numberMatches","number","checkForLeadingZeroes","buf","caretNdx","newCaretPos","nmbrMtchs","UP","DOWN","currency","decimal","integer","percentage","indianns","_inputmask","default","_possibleConstructorReturn","ReferenceError","_assertThisInitialized","_wrapNativeSuper","Class","_cache","Map","Function","has","Wrapper","_construct","_getPrototypeOf","writable","_setPrototypeOf","Parent","Reflect","construct","sham","Proxy","isNativeReflectConstruct","instance","setPrototypeOf","head","createShadowRoot","attachShadow","InputmaskElement","_HTMLElement","_this","Constructor","_classCallCheck","attributeNames","getAttributeNames","shadow","subClass","superClass","_inherits","HTMLElement","customElements","require","originalEmit","hammer","hammerify","cX","cY","_cfg","sensitivity","INSTANCE_COUNT","track","pageX","pageY","hoverIntent","handlerIn","handlerOut","instanceId","cfg","out","over","handleHover","hoverIntentData","timeoutId","isActive","compare","timeoutDuration","longerTimeoutBrowsers","isBrowser","scheduled","functionToCheck","getType","getStyleComputedProperty","getParentNode","getScrollParent","overflow","overflowX","overflowY","getReferenceNode","reference","isIE11","isIE10","isIE","getOffsetParent","noOffsetParent","offsetParent","getRoot","findCommonOffsetParent","element1","element2","order","element1root","getScroll","upperSide","side","getBordersSize","styles","axis","sideA","sideB","getSize","body","computedStyle","getWindowSizes","getClientRect","offsets","top","sizes","width","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","runIsIE","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","subtract","modifier","includeScroll","getFixedPositionOffsetParent","getBoundaries","boundaries","left","excludeScroll","relativeOffset","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","popper","isFixed","isPaddingNumber","computeAutoPlacement","rects","refRect","bottom","sortedAreas","getArea","filteredAreas","computedPlacement","variation","getReferenceOffsets","getOuterSizes","getOppositePlacement","hash","right","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","check","runModifiers","ends","findIndex","cur","positionFixed","isModifierEnabled","modifierName","some","getSupportedPropertyName","prefixes","upperProp","toCheck","getWindow","setupEventListeners","passive","scrollElement","attachToScrollParents","scrollParents","isBody","enableEventListeners","disableEventListeners","isNumeric","setStyles","unit","isFirefox","isModifierRequired","requesting","isRequired","requested","validPlacements","placements","clockwise","counter","BEHAVIORS","parseOffset","useHeight","basePlacement","fragments","map","frag","divider","splitRegex","ops","mergeWithPrevious","op","size","toValue","index2","shiftvariation","isVertical","shiftOffsets","transformProp","popperStyles","transform","floor","opSide","arrowElement","sideCapitalized","altSide","arrowElementSize","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flippedVariationByContent","flippedVariation","getOppositeVariation","subtractLength","bound","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","bothOddWidth","getRoundedOffsets","prefixedProperty","invertTop","invertLeft","attributes","requestAnimationFrame","debounce","modifierOptions","eventsEnabled","Utils","PopperUtils","Defaults","S2","select2","amd","requirejs","undef","main","makeMap","defined","waiting","defining","hasOwn","aps","jsSuffixRegExp","hasProp","normalize","baseName","nameParts","nameSegment","mapValue","foundMap","foundI","foundStarMap","starI","baseParts","starMap","nodeIdCompat","makeRequire","relName","forceSync","makeLoad","depName","callDep","splitPrefix","makeRelParts","makeConfig","relParts","plugin","parts","relResourceName","f","pr","uri","deps","cjsModule","usingExports","callbackType","load","alt","_defined","_$","getMethods","theClass","proto","methods","methodName","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","__super__","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","argCount","calledConstructor","displayName","superMethod","calledMethod","originalMethod","decoratedMethod","Observable","listeners","_type","invoke","generateChars","chars","random","func","_convertData","originalKey","dataLevel","hasScroll","innerHeight","innerWidth","escapeMarkup","markup","replaceMap","'","appendMany","$nodes","jquery","$jqNodes","__cache","GetUniqueElementId","select2Id","StoreData","GetData","RemoveData","Results","dataAdapter","render","$results","clear","displayMessage","hideLoading","$message","className","hideMessages","$options","$option","$dropdown","sorter","highlightFirstItem","$selected","ensureHighlightVisible","setClasses","current","selected","selectedIds","showLoading","loading","loadingMore","$loading","prepend","attrs","msMatchesSelector","webkitMatchesSelector","_resultId","role","label","$children","$child","$childrenContainer","$container","removeAttr","$highlighted","getHighlightedResults","currentIndex","nextIndex","$next","currentOffset","nextTop","nextOffset","nextBottom","mousewheel","isAtTop","isAtBottom","display","innerHTML","SHIFT","CTRL","ALT","ESC","KEYS","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","_attachCloseHandler","_detachCloseHandler","$select","SingleSelection","$rendered","selectionContainer","formatted","MultipleSelection","$selections","Placeholder","decorated","normalizePlaceholder","_","createPlaceholder","$placeholder","singlePlaceholder","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","removeAll","$remove","Search","$search","$searchContainer","_transferTabIndex","_keyUpPrevented","isDefaultPrevented","$previousChoice","searchRemoveChoice","msie","documentMode","disableInputEvents","handleSearch","searchHadFocus","resizeSearch","term","EventRelay","relayEvents","preventableEvents","Translation","dict","translation","loadPath","path","translations","BaseAdapter","query","generateResultId","SelectAdapter","is","currentData","unselect","addOptions","innerText","normalizedData","_normalizeItem","matcher","ArrayAdapter","_dataToConvert","convertToOptions","elm","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","replaceWith","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","q","transport","failure","$request","fail","_request","abort","request","_queryTimeout","Tags","tags","createTag","insertTag","tag","_removeOldTags","wrapper","checkChildren","Tokenizer","dropdown","tokenData","separators","termChar","MinimumInputLength","$e","minimumInputLength","minimum","MaximumInputLength","maximumInputLength","maximum","MaximumSelectionLength","maximumSelectionLength","_checkIfMaximumSelected","successCallback","Dropdown","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","loadMoreIfNeeded","isLoadMoreVisible","documentElement","loadMore","pagination","more","AttachBody","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","detach","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","scrollEvent","resizeEvent","orientationEvent","$watchers","parents","$window","isCurrentlyAbove","isCurrentlyBelow","newDirection","viewport","enoughRoomAbove","enoughRoomBelow","$offsetParent","parentOffset","isConnected","outerWidth","minWidth","appendTo","MinimumResultsForSearch","minimumResultsForSearch","Infinity","countResults","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","errorLoading","inputTooLong","overChars","inputTooShort","maximumSelected","noResults","searching","removeAllItems","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","tokenSeparators","Query","amdBase","initSelection","InitSelection","resultsAdapter","selectOnClose","dropdownAdapter","multiple","SearchableDropdown","closeOnSelect","dropdownCssClass","dropdownCss","adaptDropdownCssClass","DropdownCSS","selectionAdapter","allowClear","containerCssClass","containerCss","adaptContainerCssClass","ContainerCSS","language","_resolveLanguage","uniqueLanguages","_processTranslations","debug","stripDiacritics","amdLanguageBase","dropdownAutoWidth","original","scrollAfterSelect","templateResult","templateSelection","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","isEmptyObject","resolvedLanguages","baseLanguage","languageData","ex","camelCase","convertedData","Options","fromElement","InputCompat","excludedData","dataset","upperCaseLetter","letter","attributeName","dataName","dataValue","Select2","_generateId","tabindex","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","insertAfter","_resolveWidth","WIDTH","styleWidth","elementWidth","_syncA","_syncS","_syncSubtree","observer","MutationObserver","WebKitMutationObserver","MozMutationObserver","_observer","mutations","observe","childList","subtree","nonRelayEvents","toggleDropdown","open","addedNodes","removedNodes","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","hasFocus","newVal","disconnect","removeData","thisMethods","instanceOptions","parentElement","cancelAnimationFrame","global","ignore","header","topOnEmptyHash","speed","clip","easing","customEasing","updateURL","popstate","emitEvents","decodeURIComponent","InvalidCharacterError","offsetHeight","clientHeight","offsetTop","anchor","g","w","E","pageYOffset","C","O","I","F","cancelScroll","outline","scrollTo","smoothScroll","stringify","hostname","pathname","animateScroll","webpackPolyfill","paths","webpackContext","webpackContextResolve","_gaLt","srcElement","host","search","hitCallback","hitBack","returnValue","Obj","ui","setMap","divClass","isDebugMode","onClick","onMouseOver","isBoolean","isNotUndefined","hasContent","isString","google","maps","OverlayView","getPanes","overlayMouseTarget","addDomListener","$div","positionInPixels","getProjection","fromLatLngToDivPixel","LatLng","divWidth","divHeight","draw","CONSTS","ENVS","MAP_DRIVER","W","markers","getName","googleApiLoaded","$mapDiv","lat","lng","MarkerUI","fullscreenControl","default_zoom","popup","geocoder","Geocoder","Events","MAPAPILOADED","crds","marker","showPopup","MAPMARKERCLICK","$popup","getDiv","setCenter","setZoom","opacity","hidePopup","setPosition","restoreBounds","MAPPOPUPCLOSE","addr","geocode","address","latLng","latlng","bounds","features","geometry","coordinates","LatLngBounds","addMarker","icon","flyToMarker","fitBounds","default_bounds","getZoom","getPosition","restoreZoom","AJAX","LOADED","MAPLOADED","SET_TARGET_UPDATE","RESTORE_FIELD","FORM_INIT_BASICS","FORM_INIT_STEPPED","FORM_INIT_VALIDATE","FORM_INIT_VALIDATE_FIELD","FORM_INIT_STORAGE","FORM_VALIDATION_FAILED","FORM_STEPPED_NEW_STEP","FORM_STEPPED_FIRST_STEP","FORM_STEPPED_LAST_STEP","FORM_FIELDS","HoverUI","$parent","$triger","isShown","not","noConflict","ready","jsHoverUI","currentTarget","CarouselUI","$indicators","carousel","$youtubeSlides","YT","Player","pauseVideo","SlidingMenu","click","jsSlidingMenu","CookieUI","D","cookie","reduce","days","expires","toUTCString","encodeURIComponent","COOKIE","FlyoutUI","$modal","$close","DEFAULTS","StickySidebar","topSpacing","bottomSpacing","containerSelector","innerWrapperSelector","stickyClass","resizeSensor","sidebar","sidebarInner","affixedType","support","transform3d","_initialized","_reStyle","_breakpoint","_resizeListeners","dimensions","translateY","lastTopSpacing","lastBottomSpacing","sidebarHeight","sidebarWidth","containerTop","containerHeight","viewportHeight","viewportTop","lastViewportTop","initialize","upper","offsetLeft","_setSupportFeatures","containers","_widthBreakpoint","calcDimensions","stickyPosition","bindEvents","capture","ResizeSensor","handleEvent","updateSticky","dims","offsetRelative","containerBottom","offsetWidth","_calcDimensionsWithScroll","sidebarLeft","viewportBottom","viewportLeft","furthest","affixType","sidebarBottom","colliderTop","colliderBottom","isSidebarFitsViewport","inner","outer","translate","_getTranslate","getAffixType","_getStyle","affixEvent","eventTrigger","_unit","affixedEvent","_running","observeScrollDir","supportTransform","z","caption","minHeight","styleReset","$Body","CLASSNAME","SidebarUI","sticky","SpinnerUI","AjaxUI","G","$Html","Spinner","MainUI","updateLocation","absoluteLocation","URLDetails","js","regions","replaceRegion","preload","$head","items","itemCallback","Deferred","promise","dfds","dfd","always","when","$region","jsAjaxUI","Title","onpopstate","$existingLink","FormFieldUI","shown","vals","$collapse","restore","wipe","checked","msg","$field","FormBasics","_el","$fields","$selectFields","$radioOptions","siblings","jsFormBasics","SmoothScroll","$AlertNotify","$SiteWideMessage","visibilityState","updateOnlineStatus","onLine","pingInterval","datastatus","relative","loadImages","detectBootstrapScreenSize","getScript","fonts","WebFont","families","targetEl","$targetEl","print","envs","Consts","curEnv","env","cls","fadeOut","alert","fadeIn","play","$imgs","$imgUrls","$imgLazyUrls","lazySrc","VideoPreviewUI","$_el","video_id","parsedURL","YouTubeGetID","jsonp","thumbnail_src","thumbnail_large","jsVideoPreviewUI","LayoutUI","importAll"],"mappings":"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ACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,I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","file":"js/app.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/mnt/data/srv/dist/repositories/webpack-bootstrap-ui-kit/dist\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/js/app.js\");\n","/*\n * MetaLightbox v0.61\n * https://tony.twma.pro\n *\n */\n\n//=require ../../bower_components/jquery-zoom/jquery.zoom.js\n\n(function($, window, document) {\n\n var pluginName = 'metaLightbox',\n defaults = {\n effect: 'fade',\n theme: 'default',\n keyboardNav: true,\n clickOverlayToClose: true,\n onInit: function() {},\n beforeShowLightbox: function() {},\n afterShowLightbox: function(lightbox) {},\n beforeHideLightbox: function() {},\n afterHideLightbox: function() {},\n onPrev: function(element) {},\n onNext: function(element) {},\n errorMessage: 'The requested content cannot be loaded. Please try again later.',\n };\n\n function MetaLightbox(element, options) {\n /*this.el = element;\n this.$el = $(this.el);*/\n\n this.options = $.extend({}, defaults, options);\n\n this._defaults = defaults;\n this._name = pluginName;\n\n this.init();\n }\n\n MetaLightbox.prototype = {\n\n init: function() {\n var $this = this,\n $html = $('html');\n\n this.ajaxLoaded = false;\n\n // make object globally accessible\n document.MetaLightbox = this;\n\n // Need this so we don't use CSS transitions in mobile\n if (!$html.hasClass('meta-lightbox-notouch')) $html.addClass('meta-lightbox-notouch');\n if ('ontouchstart' in document) $html.removeClass('meta-lightbox-notouch');\n\n // Setup the click\n $(document).on('click', '[data-toggle=\"lightbox\"],[data-lightbox-gallery]', function(e) {\n e.preventDefault();\n e.stopPropagation();\n\n $this.showLightbox(this);\n return false;\n });\n\n // keyboardNav\n if (this.options.keyboardNav) {\n $('body').off('keyup').on('keyup', (e) => {\n var code = (e.keyCode ? e.keyCode : e.which);\n // Escape\n if (code === 27) {\n $this.destructLightbox();\n }\n // Left\n if (code === 37) {\n $('.meta-lightbox-prev').trigger('click');\n }\n // Right\n if (code === 39) {\n $('.meta-lightbox-next').trigger('click');\n }\n });\n }\n\n this.options.onInit.call(this);\n\n },\n\n showLightbox: function(element) {\n this.el = element;\n this.$el = $(this.el);\n\n var $this = this,\n lightbox, content, currentLink, galleryItems;\n\n this.options.beforeShowLightbox.call(this);\n\n lightbox = this.constructLightbox();\n if (!lightbox) return;\n content = lightbox.find('.meta-lightbox-content');\n if (!content) return;\n currentLink = this.$el;\n $('body').addClass(`meta-lightbox-body-effect-${ this.options.effect}`);\n\n // Add content\n this.processContent(content, currentLink);\n\n // Nav\n if (this.$el.data('lightbox-gallery')) {\n galleryItems = $(`[data-lightbox-gallery=\"${ this.$el.data('lightbox-gallery') }\"]`);\n\n if (galleryItems.length === 1) {\n $('.meta-lightbox-nav').hide();\n } else {\n $('.meta-lightbox-nav').show();\n }\n\n // Prev\n $('.meta-lightbox-prev').off('click').on('click', function(e) {\n e.preventDefault();\n var index = galleryItems.index(currentLink);\n currentLink = galleryItems.eq(index - 1);\n if (!$(currentLink).length) currentLink = galleryItems.last();\n $this.processContent(content, currentLink);\n $this.options.onPrev.call(this, [currentLink]);\n });\n\n // Next\n $('.meta-lightbox-next').off('click').on('click', function(e) {\n e.preventDefault();\n var index = galleryItems.index(currentLink);\n currentLink = galleryItems.eq(index + 1);\n if (!$(currentLink).length) currentLink = galleryItems.first();\n $this.processContent(content, currentLink);\n $this.options.onNext.call(this, [currentLink]);\n });\n }\n\n setTimeout(function() {\n lightbox.addClass('meta-lightbox-open');\n $this.options.afterShowLightbox.call(this, [lightbox]);\n }, 1); // For CSS transitions\n },\n\n processContent: function(content, link) {\n var $this = this,\n img, video, src, classTerm, iframe, wrap;\n\n href = link.attr('href');\n if (!href) {\n href = link.data('href');\n }\n\n content.html('').addClass('meta-lightbox-loading');\n\n // Is HiDPI?\n if (this.isHidpi() && link.data('lightbox-hidpi')) {\n href = link.data('lightbox-hidpi');\n }\n\n // Image\n if (href.match(/\\.(jpeg|jpg|gif|png)$/i) != null) {\n /*if ($(window).width() < 768) {\n window.open(href, '_blank');\n }*/\n img = $('<img>', {\n src: href,\n });\n img.on('load', () => {\n var wrap = $('<div class=\"meta-lightbox-image\"></div>'),\n $content = $('.meta-lightbox-content'),\n imgwrapper = $('<span class=\"meta-lightbox-zoom-wrapper\"></span>');\n\n imgwrapper.append(img);\n wrap.append(imgwrapper);\n\n // Vertically center images\n wrap.css({\n 'line-height': `${$content.height() }px`,\n 'height': `${$content.height() }px`, // For Firefox\n });\n $(window).resize(() => {\n wrap.css({\n 'line-height': `${$content.height() }px`,\n 'height': `${$content.height() }px`, // For Firefox\n });\n });\n\n if (typeof imgwrapper['zoom'] !== 'undefined') {\n imgwrapper.zoom();\n }\n\n content.html(wrap).removeClass('meta-lightbox-loading');\n $this.contentLoaded();\n\n });\n /*.each(function () {\n if (this.complete) $(this).load();\n });*/\n\n img.on('error', () => {\n var wrap = $(`<div class=\"meta-lightbox-error\"><p>${ $this.options.errorMessage }</p></div>`);\n content.html(wrap).removeClass('meta-lightbox-loading');\n $this.contentLoaded();\n });\n\n // Set the title\n if (link.data('title')) {\n $this.setTitle(link.data('title'));\n } else if (link.attr('title')) {\n $this.setTitle(link.attr('title'));\n } else {\n $('.meta-lightbox-title-wrap').html('');\n }\n\n // google analytics\n if (typeof ga === 'function') {\n ga('send', 'event', 'meta', 'Image Click', href);\n }\n }\n // Video (Youtube/Vimeo)\n else if (video = href.match(/(youtube|youtube-nocookie|youtu|vimeo)\\.(com|be)\\/(watch\\?v=([\\w-]+)|([\\w-]+))/)) {\n src = '';\n classTerm = 'meta-lightbox-video';\n\n if (video[1] == 'youtube') {\n src = `https://www.youtube.com/embed/${ video[4]}`;\n classTerm = 'meta-lightbox-youtube';\n }\n if (video[1] == 'youtu') {\n src = `https://www.youtube.com/embed/${ video[3]}`;\n classTerm = 'meta-lightbox-youtube';\n }\n if (video[1] == 'youtube-nocookie') {\n src = `https://www.youtube-nocookie.com/embed/${ video[4]}`;\n classTerm = 'nivo-lightbox-youtube';\n }\n if (video[1] == 'vimeo') {\n src = `https://player.vimeo.com/video/${ video[3]}`;\n classTerm = 'meta-lightbox-vimeo';\n }\n\n if (src) {\n iframe = $('<iframe>', {\n src,\n 'class': classTerm,\n frameborder: 0,\n vspace: 0,\n hspace: 0,\n scrolling: 'auto',\n });\n content.html(iframe);\n iframe.on('load', () => {\n content.removeClass('meta-lightbox-loading');\n $this.contentLoaded();\n });\n }\n\n // Set the title\n if (link.data('title')) {\n $this.setTitle(link.data('title'));\n } else if (link.attr('title')) {\n $this.setTitle(link.attr('title'));\n } else {\n $('.meta-lightbox-title-wrap').html('');\n }\n\n // google analytics\n if (typeof ga === 'function') {\n ga('send', 'event', 'meta', 'Video Click', video);\n }\n }\n // Inline HTML\n else if (href.substring(0, 1) == '#') {\n if ($(href).length) {\n wrap = $('<div class=\"meta-lightbox-inline\" />');\n wrap.append($(href).clone().show());\n\n // Vertically center html\n if (wrap.outerHeight() < content.height()) {\n wrap.css({\n 'position': 'relative',\n 'top': '50%',\n 'margin-top': `${-(wrap.outerHeight() / 2) }px`,\n });\n }\n $(window).resize(() => {\n if (wrap.outerHeight() < content.height()) {\n wrap.css({\n 'position': 'relative',\n 'top': '50%',\n 'margin-top': `${-(wrap.outerHeight() / 2) }px`,\n });\n }\n });\n\n content.html(wrap).removeClass('meta-lightbox-loading');\n $this.contentLoaded();\n } else {\n wrap = $(`<div class=\"meta-lightbox-error\"><p>${ $this.options.errorMessage }</p></div>`);\n content.html(wrap).removeClass('meta-lightbox-loading');\n $this.contentLoaded();\n }\n\n $('.meta-lightbox-title-wrap').html('');\n\n // google analytics\n if (typeof ga === 'function') {\n ga('send', 'event', 'meta', 'inline HTML click', href);\n }\n }\n // AJAX/iFrame (default)\n else {\n $.ajax({\n sync: false,\n async: true,\n url: href,\n dataType: 'html',\n method: 'GET',\n cache: false,\n statusCode: {\n 404: function() {\n console.log('page not found');\n window.location.href = url;\n },\n 302: function() {\n console.log('redirect 302');\n window.location.href = url;\n },\n },\n error: function(jqXHR) {\n console.log(`AJAX request failure.${ jqXHR.statusText}`);\n\n var wrap = $(`<div class=\"meta-lightbox-error\"><p>${ $this.options.errorMessage }</p></div>`);\n content.html(wrap).removeClass('meta-lightbox-loading');\n $this.contentLoaded();\n\n // google analytics\n if (typeof ga === 'function') {\n ga('send', 'event', 'error', 'AJAX ERROR', jqXHR.statusText);\n }\n },\n success: function(data, status, jqXHR) {\n try {\n const dataJson = $.parseJSON(data);\n if (typeof(dataJson) === 'object') {\n // Replace regions\n if (typeof(dataJson['regions']) === 'object' && typeof dataJson['regions']['LayoutAjax'] !== 'undefinded') {\n var wrap = $('<div class=\"meta-lightbox-ajax\" />');\n wrap.html(dataJson['regions']['LayoutAjax']);\n content.html(wrap).removeClass('meta-lightbox-loading');\n }\n\n // trigger events\n /*if (typeof (data['events']) === 'object') {\n for (var eventName in data.events) {\n $(document).trigger(eventName, [data['events'][eventName]]);\n }\n }*/\n\n\n var title = jqXHR.getResponseHeader('X-Title'),\n link = jqXHR.getResponseHeader('X-Link');\n\n if (\n title && title.length &&\n link && link.length &&\n link !== window.location.href &&\n link.substring(0, link.indexOf('#')) !== window.location.href.replace($('base').attr('href'), '/')\n ) {\n $('.meta-lightbox-ajax').data('curr-title', document.title);\n $('.meta-lightbox-ajax').data('curr-link', window.location.href);\n\n if (typeof window.localStorage !== 'undefined' && link !== '/') {\n window.localStorage.setItem('current-page', link);\n }\n\n if (\n document.URL !== link &&\n document.URL !== $('base').attr('href') + link &&\n document.URL !== `${$('base').attr('href') }/${ link}`\n ) {\n window.history.pushState({\n title,\n page: link,\n ajax: 'true',\n }, title, link);\n }\n\n // update redirect urls\n /*var pattern = new RegExp('\\\\b(redirect_uri=).*?(&|$)');\n $('a').each(function () {\n var $this = $(this);\n $this.attr('href', $this.attr('href').replace(pattern, 'redirect_uri=' + encodeURI($('base').attr('href') + link)));\n });*/\n\n $('.meta-lightbox-title-wrap').html('');\n\n // google analytics\n if (typeof ga === 'function') {\n ga('set', {\n page: link.replace($('base').attr('href'), ''),\n title,\n });\n ga('send', 'pageview');\n }\n }\n }\n } catch (e) {\n var wrap = $('<div class=\"meta-lightbox-ajax\" />');\n wrap.append(data);\n content.html(wrap).removeClass('meta-lightbox-loading');\n }\n\n // Vertically center html\n if (wrap.outerHeight() < content.height()) {\n wrap.css({\n 'position': 'relative',\n 'top': '50%',\n 'margin-top': `${-(wrap.outerHeight() / 2) }px`,\n });\n }\n $(window).resize(() => {\n if (wrap.outerHeight() < content.height()) {\n wrap.css({\n 'position': 'relative',\n 'top': '50%',\n 'margin-top': `${-(wrap.outerHeight() / 2) }px`,\n });\n }\n });\n\n setTimeout(() => {\n $(window).resize();\n\n window.imagesLoaded().then(() => {\n $(window).resize();\n });\n }, 500);\n\n $this.contentLoaded();\n },\n });\n }\n },\n\n setTitle: function(text) {\n var titleWrap = $('<div>', {\n 'class': 'meta-lightbox-title',\n });\n titleWrap.text(text);\n $('.meta-lightbox-title-wrap').html(titleWrap);\n },\n\n contentLoaded: function() {\n setTimeout(() => {\n $(window).trigger('meta-lightbox-loaded');\n }, 1); // For CSS transitions\n\n setTimeout(() => {\n $('body').addClass('meta-lightbox-body-effect-fade');\n }, 600);\n },\n\n\n\n constructLightbox: function() {\n var $this = this,\n overlay = $('<div>', {\n 'class': `meta-lightbox-overlay meta-lightbox-theme-${ this.options.theme } meta-lightbox-effect-${ this.options.effect}`,\n }),\n wrap = $('<div>', {\n 'class': 'meta-lightbox-wrap',\n }),\n content = $('<div>', {\n 'class': 'meta-lightbox-content',\n }),\n nav = $('<a href=\"#\" class=\"meta-lightbox-nav meta-lightbox-prev\"><i class=\"fa fa-chevron-left\"></i> <span class=\"sr-only\">Previous</span></a><a href=\"#\" class=\"meta-lightbox-nav meta-lightbox-next\"><i class=\"fa fa-chevron-right\"></i> <span class=\"sr-only\">Next</span></a>'),\n close = $('<a href=\"#\" class=\"meta-lightbox-close fa fa-times\" title=\"Close\"><span class=\"sr-only\">Close</span></a>'),\n title = $('<div>', {\n 'class': 'meta-lightbox-title-wrap',\n }),\n isMSIE = /*@cc_on!@*/ 0,\n $overlay = $('.meta-lightbox-overlay');\n\n if ($overlay.length) return $overlay;\n\n\n if (isMSIE) overlay.addClass('meta-lightbox-ie');\n\n wrap.append(content);\n wrap.append(title);\n overlay.append(wrap);\n overlay.append(nav);\n overlay.append(close);\n $('body').append(overlay);\n\n if ($this.options.clickOverlayToClose) {\n overlay.on('click', (e) => {\n var $target = $(e.target);\n\n if (\n $target.hasClass('meta-lightbox-zoom-wrapper') ||\n $target.hasClass('meta-lightbox-content') ||\n $target.hasClass('meta-lightbox-wrap') ||\n $target.hasClass('meta-lightbox-image') ||\n $target.hasClass('meta-lightbox-overlay')\n ) {\n $this.destructLightbox();\n }\n });\n }\n\n close.on('click', (e) => {\n e.preventDefault();\n $this.destructLightbox();\n });\n\n return overlay;\n },\n\n destructLightbox: function() {\n var $this = this,\n $overlay = $('.meta-lightbox-overlay'),\n isMSIE = /*@cc_on!@*/ 0;\n this.options.beforeHideLightbox.call(this);\n\n var title = $('.meta-lightbox-ajax').data('curr-title'),\n link = $('.meta-lightbox-ajax').data('curr-link');\n if (title && link) {\n\n if (typeof window.localStorage !== 'undefined' && link !== '/') {\n window.localStorage.setItem('current-page', link);\n }\n\n if (\n document.URL !== link &&\n document.URL !== $('base').attr('href') + link &&\n document.URL !== `${$('base').attr('href') }/${ link}`\n ) {\n window.history.replaceState({\n title,\n page: link,\n ajax: 'true',\n }, title, link);\n }\n\n // update redirect urls\n /*var pattern = new RegExp('\\\\b(redirect_uri=).*?(&|$)');\n $('a').each(function () {\n var $this = $(this);\n $this.attr('href', $this.attr('href').replace(pattern, 'redirect_uri=' + encodeURI($('base').attr('href') + link)));\n });*/\n }\n\n $overlay.removeClass('meta-lightbox-open');\n $('.meta-lightbox-nav').hide();\n $('body').removeClass(`meta-lightbox-body-effect-${ $this.options.effect}`);\n $('.meta-lightbox-content .meta-lightbox-zoom-wrapper').trigger('zoom.destroy');\n\n // For IE\n if (isMSIE) {\n $overlay.find('iframe').attr(\"src\", \" \");\n $overlay.find('iframe').remove();\n }\n $('.meta-lightbox-prev').off('click');\n\n // Remove click handlers\n $('.meta-lightbox-next').off('click');\n\n // Empty content (for videos)\n $('.meta-lightbox-content').empty();\n\n $('body').removeClass('meta-lightbox-body-effect-fade');\n\n this.options.afterHideLightbox.call(this);\n\n },\n\n isHidpi: function() {\n var mediaQuery = \"(-webkit-min-device-pixel-ratio: 1.5),\\\n (min--moz-device-pixel-ratio: 1.5),\\\n (-o-min-device-pixel-ratio: 3/2),\\\n (min-resolution: 1.5dppx)\";\n if (window.devicePixelRatio > 1) return true;\n return (window.matchMedia && window.matchMedia(mediaQuery).matches);\n },\n\n };\n\n $.fn[pluginName] = function(options) {\n return this.each(function() {\n if (!$.data(this, pluginName)) {\n $.data(this, pluginName, new MetaLightbox(this, options));\n }\n });\n };\n\n $(document).metaLightbox();\n\n})(jQuery, this, document);\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Selector = {\n DISMISS : '[data-dismiss=\"alert\"]'\n}\n\nconst Event = {\n CLOSE : `close${EVENT_KEY}`,\n CLOSED : `closed${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n ALERT : 'alert',\n FADE : 'fade',\n SHOW : 'show'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert {\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 close(element) {\n let rootElement = this._element\n if (element) {\n rootElement = this._getRootElement(element)\n }\n\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n if (!parent) {\n parent = $(element).closest(`.${ClassName.ALERT}`)[0]\n }\n\n return parent\n }\n\n _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)\n\n if (!$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(element)\n\n $(element)\n .one(Util.TRANSITION_END, (event) => this._destroyElement(element, event))\n .emulateTransitionEnd(transitionDuration)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(Event.CLOSED)\n .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 Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(\n Event.CLICK_DATA_API,\n Selector.DISMISS,\n Alert._handleDismiss(new Alert())\n)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Alert._jQueryInterface\n$.fn[NAME].Constructor = Alert\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n}\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst ClassName = {\n ACTIVE : 'active',\n BUTTON : 'btn',\n FOCUS : 'focus'\n}\n\nconst Selector = {\n DATA_TOGGLE_CARROT : '[data-toggle^=\"button\"]',\n DATA_TOGGLES : '[data-toggle=\"buttons\"]',\n DATA_TOGGLE : '[data-toggle=\"button\"]',\n DATA_TOGGLES_BUTTONS : '[data-toggle=\"buttons\"] .btn',\n INPUT : 'input:not([type=\"hidden\"])',\n ACTIVE : '.active',\n BUTTON : '.btn'\n}\n\nconst Event = {\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n FOCUS_BLUR_DATA_API : `focus${EVENT_KEY}${DATA_API_KEY} ` +\n `blur${EVENT_KEY}${DATA_API_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button {\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 toggle() {\n let triggerChangeEvent = true\n let addAriaPressed = true\n const rootElement = $(this._element).closest(\n Selector.DATA_TOGGLES\n )[0]\n\n if (rootElement) {\n const input = this._element.querySelector(Selector.INPUT)\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked &&\n this._element.classList.contains(ClassName.ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = rootElement.querySelector(Selector.ACTIVE)\n\n if (activeElement) {\n $(activeElement).removeClass(ClassName.ACTIVE)\n }\n }\n } else if (input.type === 'checkbox') {\n if (this._element.tagName === 'LABEL' && input.checked === this._element.classList.contains(ClassName.ACTIVE)) {\n triggerChangeEvent = false\n }\n } else {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n triggerChangeEvent = false\n }\n\n if (triggerChangeEvent) {\n input.checked = !this._element.classList.contains(ClassName.ACTIVE)\n $(input).trigger('change')\n }\n\n input.focus()\n addAriaPressed = false\n }\n }\n\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed',\n !this._element.classList.contains(ClassName.ACTIVE))\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(ClassName.ACTIVE)\n }\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n $(this).data(DATA_KEY, data)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n let button = event.target\n\n if (!$(button).hasClass(ClassName.BUTTON)) {\n button = $(button).closest(Selector.BUTTON)[0]\n }\n\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault() // work around Firefox bug #1540995\n } else {\n const 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 return\n }\n\n Button._jQueryInterface.call($(button), 'toggle')\n }\n })\n .on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n const button = $(event.target).closest(Selector.BUTTON)[0]\n $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type))\n })\n\n$(window).on(Event.LOAD_DATA_API, () => {\n // ensure correct active class is set to match the controls' actual values/states\n\n // find all checkboxes/readio buttons inside data-toggle groups\n let buttons = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLES_BUTTONS))\n for (let i = 0, len = buttons.length; i < len; i++) {\n const button = buttons[i]\n const input = button.querySelector(Selector.INPUT)\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(ClassName.ACTIVE)\n } else {\n button.classList.remove(ClassName.ACTIVE)\n }\n }\n\n // find all button toggles\n buttons = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n for (let i = 0, len = buttons.length; i < len; i++) {\n const button = buttons[i]\n if (button.getAttribute('aria-pressed') === 'true') {\n button.classList.add(ClassName.ACTIVE)\n } else {\n button.classList.remove(ClassName.ACTIVE)\n }\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Button._jQueryInterface\n$.fn[NAME].Constructor = Button\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n}\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\nconst ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval : 5000,\n keyboard : true,\n slide : false,\n pause : 'hover',\n wrap : true,\n touch : true\n}\n\nconst DefaultType = {\n interval : '(number|boolean)',\n keyboard : 'boolean',\n slide : '(boolean|string)',\n pause : '(string|boolean)',\n wrap : 'boolean',\n touch : 'boolean'\n}\n\nconst Direction = {\n NEXT : 'next',\n PREV : 'prev',\n LEFT : 'left',\n RIGHT : 'right'\n}\n\nconst Event = {\n SLIDE : `slide${EVENT_KEY}`,\n SLID : `slid${EVENT_KEY}`,\n KEYDOWN : `keydown${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`,\n TOUCHSTART : `touchstart${EVENT_KEY}`,\n TOUCHMOVE : `touchmove${EVENT_KEY}`,\n TOUCHEND : `touchend${EVENT_KEY}`,\n POINTERDOWN : `pointerdown${EVENT_KEY}`,\n POINTERUP : `pointerup${EVENT_KEY}`,\n DRAG_START : `dragstart${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n CAROUSEL : 'carousel',\n ACTIVE : 'active',\n SLIDE : 'slide',\n RIGHT : 'carousel-item-right',\n LEFT : 'carousel-item-left',\n NEXT : 'carousel-item-next',\n PREV : 'carousel-item-prev',\n ITEM : 'carousel-item',\n POINTER_EVENT : 'pointer-event'\n}\n\nconst Selector = {\n ACTIVE : '.active',\n ACTIVE_ITEM : '.active.carousel-item',\n ITEM : '.carousel-item',\n ITEM_IMG : '.carousel-item img',\n NEXT_PREV : '.carousel-item-next, .carousel-item-prev',\n INDICATORS : '.carousel-indicators',\n DATA_SLIDE : '[data-slide], [data-slide-to]',\n DATA_RIDE : '[data-ride=\"carousel\"]'\n}\n\nconst PointerType = {\n TOUCH : 'touch',\n PEN : 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel {\n constructor(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\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 }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV)\n }\n }\n\n 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 cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(Event.SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex\n ? Direction.NEXT\n : Direction.PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\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 }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element)\n .on(Event.KEYDOWN, (event) => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(Event.MOUSEENTER, (event) => this.pause(event))\n .on(Event.MOUSELEAVE, (event) => this.cycle(event))\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n if (!this._touchSupported) {\n return\n }\n\n const start = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchStartX = event.originalEvent.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.originalEvent.touches[0].clientX\n }\n }\n\n const move = (event) => {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.originalEvent.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.originalEvent.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._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\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n $(this._element.querySelectorAll(Selector.ITEM_IMG)).on(Event.DRAG_START, (e) => e.preventDefault())\n if (this._pointerEvent) {\n $(this._element).on(Event.POINTERDOWN, (event) => start(event))\n $(this._element).on(Event.POINTERUP, (event) => end(event))\n\n this._element.classList.add(ClassName.POINTER_EVENT)\n } else {\n $(this._element).on(Event.TOUCHSTART, (event) => start(event))\n $(this._element).on(Event.TOUCHMOVE, (event) => move(event))\n $(this._element).on(Event.TOUCHEND, (event) => end(event))\n }\n }\n\n _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 case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode\n ? [].slice.call(element.parentNode.querySelectorAll(Selector.ITEM))\n : []\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === Direction.NEXT\n const isPrevDirection = direction === Direction.PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === Direction.PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1\n ? this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(this._element.querySelector(Selector.ACTIVE_ITEM))\n const slideEvent = $.Event(Event.SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector.ACTIVE))\n $(indicators)\n .removeClass(ClassName.ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName.ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n const activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName.LEFT\n orderClassName = ClassName.NEXT\n eventDirectionName = Direction.LEFT\n } else {\n directionalClassName = ClassName.RIGHT\n orderClassName = ClassName.PREV\n eventDirectionName = Direction.RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\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 const slidEvent = $.Event(Event.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if ($(this._element).hasClass(ClassName.SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n const nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10)\n if (nextElementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = nextElementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(ClassName.ACTIVE)\n\n $(activeElement).removeClass(`${ClassName.ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(transitionDuration)\n } else {\n $(activeElement).removeClass(ClassName.ACTIVE)\n $(nextElement).addClass(ClassName.ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, 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 data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler)\n\n$(window).on(Event.LOAD_DATA_API, () => {\n const carousels = [].slice.call(document.querySelectorAll(Selector.DATA_RIDE))\n for (let i = 0, len = carousels.length; i < len; i++) {\n const $carousel = $(carousels[i])\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Carousel._jQueryInterface\n$.fn[NAME].Constructor = Carousel\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n}\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n toggle : true,\n parent : ''\n}\n\nconst DefaultType = {\n toggle : 'boolean',\n parent : '(string|element)'\n}\n\nconst Event = {\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SHOW : 'show',\n COLLAPSE : 'collapse',\n COLLAPSING : 'collapsing',\n COLLAPSED : 'collapsed'\n}\n\nconst Dimension = {\n WIDTH : 'width',\n HEIGHT : 'height'\n}\n\nconst Selector = {\n ACTIVES : '.show, .collapsing',\n DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = [].slice.call(document.querySelectorAll(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n\n const toggleList = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = Util.getSelectorFromElement(elem)\n const filterElement = [].slice.call(document.querySelectorAll(selector))\n .filter((foundElem) => foundElem === element)\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector\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 }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(ClassName.SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(Selector.ACTIVES))\n .filter((elem) => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === this._config.parent\n }\n\n return elem.classList.contains(ClassName.COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(Event.SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(ClassName.COLLAPSE)\n .addClass(ClassName.COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n $(this._triggerArray)\n .removeClass(ClassName.COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .addClass(ClassName.SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(Event.SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n const startEvent = $.Event(Event.HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(ClassName.COLLAPSING)\n .removeClass(ClassName.COLLAPSE)\n .removeClass(ClassName.SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n\n if (selector !== null) {\n const $elem = $([].slice.call(document.querySelectorAll(selector)))\n if (!$elem.hasClass(ClassName.SHOW)) {\n $(trigger).addClass(ClassName.COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .trigger(Event.HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n }\n\n _getParent() {\n let parent\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\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 const selector =\n `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n const children = [].slice.call(parent.querySelectorAll(selector))\n $(children).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n const isOpen = $(element).hasClass(ClassName.SHOW)\n\n if (triggerArray.length) {\n $(triggerArray)\n .toggleClass(ClassName.COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? document.querySelector(selector) : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$this.data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $this.data(DATA_KEY, 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]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n const selectors = [].slice.call(document.querySelectorAll(selector))\n\n $(selectors).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Collapse._jQueryInterface\n$.fn[NAME].Constructor = Collapse\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n}\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\nconst Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n}\n\nconst DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDE_PREVENTED : `hidePrevented${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n RESIZE : `resize${EVENT_KEY}`,\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n KEYDOWN_DISMISS : `keydown.dismiss${EVENT_KEY}`,\n MOUSEUP_DISMISS : `mouseup.dismiss${EVENT_KEY}`,\n MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SCROLLABLE : 'modal-dialog-scrollable',\n SCROLLBAR_MEASURER : 'modal-scrollbar-measure',\n BACKDROP : 'modal-backdrop',\n OPEN : 'modal-open',\n FADE : 'fade',\n SHOW : 'show',\n STATIC : 'modal-static'\n}\n\nconst Selector = {\n DIALOG : '.modal-dialog',\n MODAL_BODY : '.modal-body',\n DATA_TOGGLE : '[data-toggle=\"modal\"]',\n DATA_DISMISS : '[data-dismiss=\"modal\"]',\n FIXED_CONTENT : '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT : '.sticky-top'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal {\n constructor(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 }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if ($(this._element).hasClass(ClassName.FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n (event) => this.hide(event)\n )\n\n $(this._dialog).on(Event.MOUSEDOWN_DISMISS, () => {\n $(this._element).one(Event.MOUSEUP_DISMISS, (event) => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = $.Event(Event.HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n const transition = $(this._element).hasClass(ClassName.FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(Event.FOCUSIN)\n\n $(this._element).removeClass(ClassName.SHOW)\n\n $(this._element).off(Event.CLICK_DISMISS)\n $(this._dialog).off(Event.MOUSEDOWN_DISMISS)\n\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, (event) => this._hideModal(event))\n .emulateTransitionEnd(transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach((htmlElement) => $(htmlElement).off(EVENT_KEY))\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 $(document).off(Event.FOCUSIN)\n\n $.removeData(this._element, DATA_KEY)\n\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 handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _triggerBackdropTransition() {\n if (this._config.backdrop === 'static') {\n const hideEventPrevented = $.Event(Event.HIDE_PREVENTED)\n\n $(this._element).trigger(hideEventPrevented)\n if (hideEventPrevented.defaultPrevented) {\n return\n }\n\n this._element.classList.add(ClassName.STATIC)\n\n const modalTransitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element).one(Util.TRANSITION_END, () => {\n this._element.classList.remove(ClassName.STATIC)\n })\n .emulateTransitionEnd(modalTransitionDuration)\n this._element.focus()\n } else {\n this.hide()\n }\n }\n\n _showElement(relatedTarget) {\n const transition = $(this._element).hasClass(ClassName.FADE)\n const modalBody = this._dialog ? this._dialog.querySelector(Selector.MODAL_BODY) : null\n\n if (!this._element.parentNode ||\n 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 this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n\n if ($(this._dialog).hasClass(ClassName.SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0\n } else {\n this._element.scrollTop = 0\n }\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(ClassName.SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(Event.FOCUSIN) // Guard against infinite focus loop\n .on(Event.FOCUSIN, (event) => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n if (event.which === ESCAPE_KEYCODE) {\n this._triggerBackdropTransition()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(Event.KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(Event.RESIZE, (event) => this.handleUpdate(event))\n } else {\n $(window).off(Event.RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(ClassName.OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(Event.HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(ClassName.FADE)\n ? ClassName.FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = ClassName.BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(Event.CLICK_DISMISS, (event) => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n if (event.target !== event.currentTarget) {\n return\n }\n\n this._triggerBackdropTransition()\n })\n\n if (animate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(ClassName.SHOW)\n\n if (!callback) {\n return\n }\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName.SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if ($(this._element).hasClass(ClassName.FADE)) {\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\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 _adjustDialog() {\n const isModalOverflowing =\n 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 _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\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 const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n const stickyContent = [].slice.call(document.querySelectorAll(Selector.STICKY_CONTENT))\n\n // Adjust fixed content padding\n $(fixedContent).each((index, element) => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(stickyContent).each((index, element) => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element)\n .data('margin-right', actualMargin)\n .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $(document.body).css('padding-right')\n $(document.body)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n\n $(document.body).addClass(ClassName.OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n $(fixedContent).each((index, element) => {\n const padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n\n // Restore sticky content\n const elements = [].slice.call(document.querySelectorAll(`${Selector.STICKY_CONTENT}`))\n $(elements).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $(document.body).data('padding-right')\n $(document.body).removeData('padding-right')\n document.body.style.paddingRight = padding ? padding : ''\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = ClassName.SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).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](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n const config = $(target).data(DATA_KEY)\n ? 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(Event.SHOW, (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, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Modal._jQueryInterface\n$.fn[NAME].Constructor = Modal\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n}\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement : 'right',\n trigger : 'click',\n content : '',\n template : '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div></div>'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content : '(string|element|function)'\n}\n\nconst ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n TITLE : '.popover-header',\n CONTENT : '.popover-body'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n\n // We use append for html objects to maintain js events\n this.setElementContent($tip.find(Selector.TITLE), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this.element)\n }\n this.setElementContent($tip.find(Selector.CONTENT), content)\n\n $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n // Private\n\n _getContent() {\n return this.element.getAttribute('data-content') ||\n this.config.content\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n $(this).data(DATA_KEY, 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]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Popover._jQueryInterface\n$.fn[NAME].Constructor = Popover\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n}\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n offset : 10,\n method : 'auto',\n target : ''\n}\n\nconst DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n}\n\nconst Event = {\n ACTIVATE : `activate${EVENT_KEY}`,\n SCROLL : `scroll${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DROPDOWN_ITEM : 'dropdown-item',\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active'\n}\n\nconst Selector = {\n DATA_SPY : '[data-spy=\"scroll\"]',\n ACTIVE : '.active',\n NAV_LIST_GROUP : '.nav, .list-group',\n NAV_LINKS : '.nav-link',\n NAV_ITEMS : '.nav-item',\n LIST_ITEMS : '.list-group-item',\n DROPDOWN : '.dropdown',\n DROPDOWN_ITEMS : '.dropdown-item',\n DROPDOWN_TOGGLE : '.dropdown-toggle'\n}\n\nconst OffsetMethod = {\n OFFSET : 'offset',\n POSITION : 'position'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy {\n constructor(element, config) {\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},` +\n `${this._config.target} ${Selector.LIST_ITEMS},` +\n `${this._config.target} ${Selector.DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(Event.SCROLL, (event) => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window\n ? OffsetMethod.OFFSET : OffsetMethod.POSITION\n\n const offsetMethod = this._config.method === 'auto'\n ? autoMethod : this._config.method\n\n const offsetBase = offsetMethod === OffsetMethod.POSITION\n ? this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n targets\n .map((element) => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = document.querySelector(targetSelector)\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n return null\n })\n .filter((item) => item)\n .sort((a, b) => a[0] - b[0])\n .forEach((item) => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\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 }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.target !== 'string') {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window\n ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window\n ? window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset +\n scrollHeight -\n this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n const offsetLength = this._offsets.length\n for (let i = offsetLength; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector\n .split(',')\n .map((selector) => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {\n $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n $link.addClass(ClassName.ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(ClassName.ACTIVE)\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n $link.parents(Selector.NAV_LIST_GROUP).prev(`${Selector.NAV_LINKS}, ${Selector.LIST_ITEMS}`).addClass(ClassName.ACTIVE)\n // Handle special case when .nav-link is inside .nav-item\n $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE)\n }\n\n $(this._scrollElement).trigger(Event.ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n [].slice.call(document.querySelectorAll(this._selector))\n .filter((node) => node.classList.contains(ClassName.ACTIVE))\n .forEach((node) => node.classList.remove(ClassName.ACTIVE))\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n $(this).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]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(window).on(Event.LOAD_DATA_API, () => {\n const scrollSpys = [].slice.call(document.querySelectorAll(Selector.DATA_SPY))\n const scrollSpysLength = scrollSpys.length\n\n for (let i = scrollSpysLength; i--;) {\n const $spy = $(scrollSpys[i])\n ScrollSpy._jQueryInterface.call($spy, $spy.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = ScrollSpy._jQueryInterface\n$.fn[NAME].Constructor = ScrollSpy\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy._jQueryInterface\n}\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active',\n DISABLED : 'disabled',\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n DROPDOWN : '.dropdown',\n NAV_LIST_GROUP : '.nav, .list-group',\n ACTIVE : '.active',\n ACTIVE_UL : '> li > .active',\n DATA_TOGGLE : '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n DROPDOWN_TOGGLE : '.dropdown-toggle',\n DROPDOWN_ACTIVE_CHILD : '> .dropdown-menu .active'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab {\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() {\n if (this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n $(this._element).hasClass(ClassName.ACTIVE) ||\n $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n let target\n let previous\n const listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0]\n const selector = Util.getSelectorFromElement(this._element)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector.ACTIVE_UL : Selector.ACTIVE\n previous = $.makeArray($(listElement).find(itemSelector))\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = $.Event(Event.HIDE, {\n relatedTarget: this._element\n })\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget: previous\n })\n\n if (previous) {\n $(previous).trigger(hideEvent)\n }\n\n $(this._element).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() ||\n hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n this._activate(\n this._element,\n listElement\n )\n\n const complete = () => {\n const hiddenEvent = $.Event(Event.HIDDEN, {\n relatedTarget: this._element\n })\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget: previous\n })\n\n $(previous).trigger(hiddenEvent)\n $(this._element).trigger(shownEvent)\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL')\n ? $(container).find(Selector.ACTIVE_UL)\n : $(container).children(Selector.ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && $(active).hasClass(ClassName.FADE))\n const complete = () => this._transitionComplete(\n element,\n active,\n callback\n )\n\n if (active && isTransitioning) {\n const transitionDuration = Util.getTransitionDurationFromElement(active)\n\n $(active)\n .removeClass(ClassName.SHOW)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n $(active).removeClass(ClassName.ACTIVE)\n\n const dropdownChild = $(active.parentNode).find(\n Selector.DROPDOWN_ACTIVE_CHILD\n )[0]\n\n if (dropdownChild) {\n $(dropdownChild).removeClass(ClassName.ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n $(element).addClass(ClassName.ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n Util.reflow(element)\n\n if (element.classList.contains(ClassName.FADE)) {\n element.classList.add(ClassName.SHOW)\n }\n\n if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {\n const dropdownElement = $(element).closest(Selector.DROPDOWN)[0]\n\n if (dropdownElement) {\n const dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector.DROPDOWN_TOGGLE))\n\n $(dropdownToggleList).addClass(ClassName.ACTIVE)\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n\n if (!data) {\n data = new Tab(this)\n $this.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]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n Tab._jQueryInterface.call($(this), 'show')\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tab._jQueryInterface\n$.fn[NAME].Constructor = Tab\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab._jQueryInterface\n}\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\nfunction allowedAttribute(attr, allowedAttributeList) {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter((attrRegex) => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport 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 const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const whitelistKeys = Object.keys(whiteList)\n const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].slice.call(el.attributes)\n const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n attributeList.forEach((attr) => {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n DefaultWhitelist,\n sanitizeHtml\n} from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.4.1'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst DefaultType = {\n animation : 'boolean',\n template : 'string',\n title : '(string|element|function)',\n trigger : 'string',\n delay : '(number|object)',\n html : 'boolean',\n selector : '(string|boolean)',\n placement : '(string|function)',\n offset : '(number|string|function)',\n container : '(string|element|boolean)',\n fallbackPlacement : '(string|array)',\n boundary : '(string|element)',\n sanitize : 'boolean',\n sanitizeFn : '(null|function)',\n whiteList : 'object',\n popperConfig : '(null|object)'\n}\n\nconst AttachmentMap = {\n AUTO : 'auto',\n TOP : 'top',\n RIGHT : 'right',\n BOTTOM : 'bottom',\n LEFT : 'left'\n}\n\nconst Default = {\n animation : true,\n template : '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div></div>',\n trigger : 'hover focus',\n title : '',\n delay : 0,\n html : false,\n selector : false,\n placement : 'top',\n offset : 0,\n container : false,\n fallbackPlacement : 'flip',\n boundary : 'scrollParent',\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist,\n popperConfig : null\n}\n\nconst HoverState = {\n SHOW : 'show',\n OUT : 'out'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\nconst ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n TOOLTIP : '.tooltip',\n TOOLTIP_INNER : '.tooltip-inner',\n ARROW : '.arrow'\n}\n\nconst Trigger = {\n HOVER : 'hover',\n FOCUS : 'focus',\n CLICK : 'click',\n MANUAL : 'manual'\n}\n\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org/)')\n }\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if ($(this.getTipElement()).hasClass(ClassName.SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler)\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n 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 show() {\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const shadowRoot = Util.findShadowRoot(this.element)\n const isInTheDom = $.contains(\n shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(ClassName.FADE)\n }\n\n const placement = typeof this.config.placement === 'function'\n ? this.config.placement.call(this, tip, this.element)\n : this.config.placement\n\n const attachment = this._getAttachment(placement)\n this.addAttachmentClass(attachment)\n\n const container = this._getContainer()\n $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment))\n\n $(tip).addClass(ClassName.SHOW)\n\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 if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HoverState.OUT) {\n this._leave(null, this)\n }\n }\n\n if ($(this.tip).hasClass(ClassName.FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\n const complete = () => {\n if (this._hoverState !== HoverState.SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n this._activeTrigger[Trigger.CLICK] = false\n this._activeTrigger[Trigger.FOCUS] = false\n this._activeTrigger[Trigger.HOVER] = false\n\n if ($(this.tip).hasClass(ClassName.FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent($(tip.querySelectorAll(Selector.TOOLTIP_INNER)), this.getTitle())\n $(tip).removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn)\n }\n\n $element.html(content)\n } else {\n $element.text(content)\n }\n }\n\n getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function'\n ? this.config.title.call(this.element)\n : this.config.title\n }\n\n return title\n }\n\n // Private\n\n _getPopperConfig(attachment) {\n const 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: (data) => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: (data) => this._handlePopperPlacementChange(data)\n }\n\n return {\n ...defaultBsConfig,\n ...this.config.popperConfig\n }\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this.config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this.config.offset(data.offsets, this.element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this.config.offset\n }\n\n return offset\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container)\n }\n\n return $(document).find(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach((trigger) => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n (event) => this.toggle(event)\n )\n } else if (trigger !== Trigger.MANUAL) {\n const eventIn = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSEENTER\n : this.constructor.Event.FOCUSIN\n const eventOut = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSELEAVE\n : this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(\n eventIn,\n this.config.selector,\n (event) => this._enter(event)\n )\n .on(\n eventOut,\n this.config.selector,\n (event) => this._leave(event)\n )\n }\n })\n\n this._hideModalHandler = () => {\n if (this.element) {\n this.hide()\n }\n }\n\n $(this.element).closest('.modal').on(\n 'hide.bs.modal',\n this._hideModalHandler\n )\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {\n context._hoverState = HoverState.SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = $(this.element).data()\n\n Object.keys(dataAttributes)\n .forEach((dataAttr) => {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...typeof config === 'object' && config ? config : {}\n }\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(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const 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 _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const popperInstance = popperData.instance\n this.tip = popperInstance.popper\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(popperData.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n\n $(tip).removeClass(ClassName.FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n $(this).data(DATA_KEY, 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]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tooltip._jQueryInterface\n$.fn[NAME].Constructor = Tooltip\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n}\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined // eslint-disable-line no-undefined\n }\n }\n}\n\nfunction transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n}\n\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n 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 return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const 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 getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n // TODO: Remove in v5\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n },\n\n findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n },\n\n jQueryDetection() {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n }\n\n const version = $.fn.jquery.split(' ')[0].split('.')\n const minMajor = 1\n const ltMajor = 2\n const minMinor = 9\n const minPatch = 1\n const 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\nUtil.jQueryDetection()\nsetTransitionEndSupport()\n\nexport default Util\n","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = \"./node_modules/font-awesome sync \\\\.(otf|eot|svg|ttf|woff|woff2)$\";","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.<anonymous>\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","/*!\n * dist/inputmask\n * https://github.com/RobinHerbots/Inputmask\n * Copyright (c) 2010 - 2020 Robin Herbots\n * Licensed under the MIT license\n * Version: 5.0.3\n */\n!function webpackUniversalModuleDefinition(root, factory) {\n if (\"object\" == typeof exports && \"object\" == typeof module) module.exports = factory(); else if (\"function\" == typeof define && define.amd) define([], factory); else {\n var a = factory();\n for (var i in a) (\"object\" == typeof exports ? exports : root)[i] = a[i];\n }\n}(window, function() {\n return modules = [ function(module) {\n module.exports = JSON.parse('{\"BACKSPACE\":8,\"BACKSPACE_SAFARI\":127,\"DELETE\":46,\"DOWN\":40,\"END\":35,\"ENTER\":13,\"ESCAPE\":27,\"HOME\":36,\"INSERT\":45,\"LEFT\":37,\"PAGE_DOWN\":34,\"PAGE_UP\":33,\"RIGHT\":39,\"SPACE\":32,\"TAB\":9,\"UP\":38,\"X\":88,\"CONTROL\":17}');\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function _typeof(obj) {\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function _typeof(obj) {\n return typeof obj;\n } : function _typeof(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n }\n var $ = __webpack_require__(2), window = __webpack_require__(3), document = window.document, generateMaskSet = __webpack_require__(4).generateMaskSet, analyseMask = __webpack_require__(4).analyseMask, maskScope = __webpack_require__(7);\n function Inputmask(alias, options, internal) {\n if (!(this instanceof Inputmask)) return new Inputmask(alias, options, internal);\n this.el = void 0, this.events = {}, this.maskset = void 0, this.refreshValue = !1, \n !0 !== internal && ($.isPlainObject(alias) ? options = alias : (options = options || {}, \n alias && (options.alias = alias)), this.opts = $.extend(!0, {}, this.defaults, options), \n this.noMasksCache = options && void 0 !== options.definitions, this.userOptions = options || {}, \n resolveAlias(this.opts.alias, options, this.opts), this.isRTL = this.opts.numericInput);\n }\n function resolveAlias(aliasStr, options, opts) {\n var aliasDefinition = Inputmask.prototype.aliases[aliasStr];\n return aliasDefinition ? (aliasDefinition.alias && resolveAlias(aliasDefinition.alias, void 0, opts), \n $.extend(!0, opts, aliasDefinition), $.extend(!0, opts, options), !0) : (null === opts.mask && (opts.mask = aliasStr), \n !1);\n }\n function importAttributeOptions(npt, opts, userOptions, dataAttribute) {\n function importOption(option, optionData) {\n optionData = void 0 !== optionData ? optionData : npt.getAttribute(dataAttribute + \"-\" + option), \n null !== optionData && (\"string\" == typeof optionData && (0 === option.indexOf(\"on\") ? optionData = window[optionData] : \"false\" === optionData ? optionData = !1 : \"true\" === optionData && (optionData = !0)), \n userOptions[option] = optionData);\n }\n if (!0 === opts.importDataAttributes) {\n var attrOptions = npt.getAttribute(dataAttribute), option, dataoptions, optionData, p;\n if (attrOptions && \"\" !== attrOptions && (attrOptions = attrOptions.replace(/'/g, '\"'), \n dataoptions = JSON.parse(\"{\" + attrOptions + \"}\")), dataoptions) for (p in optionData = void 0, \n dataoptions) if (\"alias\" === p.toLowerCase()) {\n optionData = dataoptions[p];\n break;\n }\n for (option in importOption(\"alias\", optionData), userOptions.alias && resolveAlias(userOptions.alias, userOptions, opts), \n opts) {\n if (dataoptions) for (p in optionData = void 0, dataoptions) if (p.toLowerCase() === option.toLowerCase()) {\n optionData = dataoptions[p];\n break;\n }\n importOption(option, optionData);\n }\n }\n return $.extend(!0, opts, userOptions), \"rtl\" !== npt.dir && !opts.rightAlign || (npt.style.textAlign = \"right\"), \n \"rtl\" !== npt.dir && !opts.numericInput || (npt.dir = \"ltr\", npt.removeAttribute(\"dir\"), \n opts.isRTL = !0), Object.keys(userOptions).length;\n }\n Inputmask.prototype = {\n dataAttribute: \"data-inputmask\",\n defaults: {\n _maxTestPos: 500,\n placeholder: \"_\",\n optionalmarker: [ \"[\", \"]\" ],\n quantifiermarker: [ \"{\", \"}\" ],\n groupmarker: [ \"(\", \")\" ],\n alternatormarker: \"|\",\n escapeChar: \"\\\\\",\n mask: null,\n regex: null,\n oncomplete: $.noop,\n onincomplete: $.noop,\n oncleared: $.noop,\n repeat: 0,\n greedy: !1,\n autoUnmask: !1,\n removeMaskOnSubmit: !1,\n clearMaskOnLostFocus: !0,\n insertMode: !0,\n insertModeVisual: !0,\n clearIncomplete: !1,\n alias: null,\n onKeyDown: $.noop,\n onBeforeMask: null,\n onBeforePaste: function onBeforePaste(pastedValue, opts) {\n return $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(this, pastedValue, opts) : pastedValue;\n },\n onBeforeWrite: null,\n onUnMask: null,\n showMaskOnFocus: !0,\n showMaskOnHover: !0,\n onKeyValidation: $.noop,\n skipOptionalPartCharacter: \" \",\n numericInput: !1,\n rightAlign: !1,\n undoOnEscape: !0,\n radixPoint: \"\",\n _radixDance: !1,\n groupSeparator: \"\",\n keepStatic: null,\n positionCaretOnTab: !0,\n tabThrough: !1,\n supportsInputType: [ \"text\", \"tel\", \"url\", \"password\", \"search\" ],\n ignorables: [ 8, 9, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 0, 229 ],\n isComplete: null,\n preValidation: null,\n postValidation: null,\n staticDefinitionSymbol: void 0,\n jitMasking: !1,\n nullable: !0,\n inputEventOnly: !1,\n noValuePatching: !1,\n positionCaretOnClick: \"lvp\",\n casing: null,\n inputmode: \"text\",\n importDataAttributes: !0,\n shiftPositions: !0\n },\n definitions: {\n 9: {\n validator: \"[0-9\\uff11-\\uff19]\",\n definitionSymbol: \"*\"\n },\n a: {\n validator: \"[A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n definitionSymbol: \"*\"\n },\n \"*\": {\n validator: \"[0-9\\uff11-\\uff19A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\"\n }\n },\n aliases: {},\n masksCache: {},\n mask: function mask(elems) {\n var that = this;\n return \"string\" == typeof elems && (elems = document.getElementById(elems) || document.querySelectorAll(elems)), \n elems = elems.nodeName ? [ elems ] : elems, $.each(elems, function(ndx, el) {\n var scopedOpts = $.extend(!0, {}, that.opts);\n if (importAttributeOptions(el, scopedOpts, $.extend(!0, {}, that.userOptions), that.dataAttribute)) {\n var maskset = generateMaskSet(scopedOpts, that.noMasksCache);\n void 0 !== maskset && (void 0 !== el.inputmask && (el.inputmask.opts.autoUnmask = !0, \n el.inputmask.remove()), el.inputmask = new Inputmask(void 0, void 0, !0), el.inputmask.opts = scopedOpts, \n el.inputmask.noMasksCache = that.noMasksCache, el.inputmask.userOptions = $.extend(!0, {}, that.userOptions), \n el.inputmask.isRTL = scopedOpts.isRTL || scopedOpts.numericInput, el.inputmask.el = el, \n el.inputmask.maskset = maskset, $.data(el, \"_inputmask_opts\", scopedOpts), maskScope.call(el.inputmask, {\n action: \"mask\"\n }));\n }\n }), elems && elems[0] && elems[0].inputmask || this;\n },\n option: function option(options, noremask) {\n return \"string\" == typeof options ? this.opts[options] : \"object\" === _typeof(options) ? ($.extend(this.userOptions, options), \n this.el && !0 !== noremask && this.mask(this.el), this) : void 0;\n },\n unmaskedvalue: function unmaskedvalue(value) {\n return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n maskScope.call(this, {\n action: \"unmaskedvalue\",\n value: value\n });\n },\n remove: function remove() {\n return maskScope.call(this, {\n action: \"remove\"\n });\n },\n getemptymask: function getemptymask() {\n return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n maskScope.call(this, {\n action: \"getemptymask\"\n });\n },\n hasMaskedValue: function hasMaskedValue() {\n return !this.opts.autoUnmask;\n },\n isComplete: function isComplete() {\n return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n maskScope.call(this, {\n action: \"isComplete\"\n });\n },\n getmetadata: function getmetadata() {\n return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n maskScope.call(this, {\n action: \"getmetadata\"\n });\n },\n isValid: function isValid(value) {\n return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n maskScope.call(this, {\n action: \"isValid\",\n value: value\n });\n },\n format: function format(value, metadata) {\n return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n maskScope.call(this, {\n action: \"format\",\n value: value,\n metadata: metadata\n });\n },\n setValue: function setValue(value) {\n this.el && $(this.el).trigger(\"setvalue\", [ value ]);\n },\n analyseMask: analyseMask\n }, Inputmask.extendDefaults = function(options) {\n $.extend(!0, Inputmask.prototype.defaults, options);\n }, Inputmask.extendDefinitions = function(definition) {\n $.extend(!0, Inputmask.prototype.definitions, definition);\n }, Inputmask.extendAliases = function(alias) {\n $.extend(!0, Inputmask.prototype.aliases, alias);\n }, Inputmask.format = function(value, options, metadata) {\n return Inputmask(options).format(value, metadata);\n }, Inputmask.unmask = function(value, options) {\n return Inputmask(options).unmaskedvalue(value);\n }, Inputmask.isValid = function(value, options) {\n return Inputmask(options).isValid(value);\n }, Inputmask.remove = function(elems) {\n \"string\" == typeof elems && (elems = document.getElementById(elems) || document.querySelectorAll(elems)), \n elems = elems.nodeName ? [ elems ] : elems, $.each(elems, function(ndx, el) {\n el.inputmask && el.inputmask.remove();\n });\n }, Inputmask.setValue = function(elems, value) {\n \"string\" == typeof elems && (elems = document.getElementById(elems) || document.querySelectorAll(elems)), \n elems = elems.nodeName ? [ elems ] : elems, $.each(elems, function(ndx, el) {\n el.inputmask ? el.inputmask.setValue(value) : $(el).trigger(\"setvalue\", [ value ]);\n });\n };\n var escapeRegexRegex = new RegExp(\"(\\\\\" + [ \"/\", \".\", \"*\", \"+\", \"?\", \"|\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"\\\\\", \"$\", \"^\" ].join(\"|\\\\\") + \")\", \"gim\");\n Inputmask.escapeRegex = function(str) {\n return str.replace(escapeRegexRegex, \"\\\\$1\");\n }, Inputmask.dependencyLib = $, window.Inputmask = Inputmask, module.exports = Inputmask;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function _typeof(obj) {\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function _typeof(obj) {\n return typeof obj;\n } : function _typeof(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n }\n var window = __webpack_require__(3), document = window.document;\n function indexOf(list, elem) {\n for (var i = 0, len = list.length; i < len; i++) if (list[i] === elem) return i;\n return -1;\n }\n function isWindow(obj) {\n return null != obj && obj === obj.window;\n }\n function isArraylike(obj) {\n var length = \"length\" in obj && obj.length, ltype = _typeof(obj);\n return \"function\" !== ltype && !isWindow(obj) && (!(1 !== obj.nodeType || !length) || (\"array\" === ltype || 0 === length || \"number\" == typeof length && 0 < length && length - 1 in obj));\n }\n function isValidElement(elem) {\n return elem instanceof Element;\n }\n function DependencyLib(elem) {\n return elem instanceof DependencyLib ? elem : this instanceof DependencyLib ? void (null != elem && elem !== window && (this[0] = elem.nodeName ? elem : void 0 !== elem[0] && elem[0].nodeName ? elem[0] : document.querySelector(elem), \n void 0 !== this[0] && null !== this[0] && (this[0].eventRegistry = this[0].eventRegistry || {}))) : new DependencyLib(elem);\n }\n DependencyLib.prototype = {\n on: function on(events, handler) {\n function addEvent(ev, namespace) {\n elem.addEventListener ? elem.addEventListener(ev, handler, !1) : elem.attachEvent && elem.attachEvent(\"on\" + ev, handler), \n eventRegistry[ev] = eventRegistry[ev] || {}, eventRegistry[ev][namespace] = eventRegistry[ev][namespace] || [], \n eventRegistry[ev][namespace].push(handler);\n }\n if (isValidElement(this[0])) for (var eventRegistry = this[0].eventRegistry, elem = this[0], _events = events.split(\" \"), endx = 0; endx < _events.length; endx++) {\n var nsEvent = _events[endx].split(\".\"), ev = nsEvent[0], namespace = nsEvent[1] || \"global\";\n addEvent(ev, namespace);\n }\n return this;\n },\n off: function off(events, handler) {\n var eventRegistry, elem;\n function removeEvent(ev, namespace, handler) {\n if (ev in eventRegistry == !0) if (elem.removeEventListener ? elem.removeEventListener(ev, handler, !1) : elem.detachEvent && elem.detachEvent(\"on\" + ev, handler), \n \"global\" === namespace) for (var nmsp in eventRegistry[ev]) eventRegistry[ev][nmsp].splice(eventRegistry[ev][nmsp].indexOf(handler), 1); else eventRegistry[ev][namespace].splice(eventRegistry[ev][namespace].indexOf(handler), 1);\n }\n function resolveNamespace(ev, namespace) {\n var evts = [], hndx, hndL;\n if (0 < ev.length) if (void 0 === handler) for (hndx = 0, hndL = eventRegistry[ev][namespace].length; hndx < hndL; hndx++) evts.push({\n ev: ev,\n namespace: namespace && 0 < namespace.length ? namespace : \"global\",\n handler: eventRegistry[ev][namespace][hndx]\n }); else evts.push({\n ev: ev,\n namespace: namespace && 0 < namespace.length ? namespace : \"global\",\n handler: handler\n }); else if (0 < namespace.length) for (var evNdx in eventRegistry) for (var nmsp in eventRegistry[evNdx]) if (nmsp === namespace) if (void 0 === handler) for (hndx = 0, \n hndL = eventRegistry[evNdx][nmsp].length; hndx < hndL; hndx++) evts.push({\n ev: evNdx,\n namespace: nmsp,\n handler: eventRegistry[evNdx][nmsp][hndx]\n }); else evts.push({\n ev: evNdx,\n namespace: nmsp,\n handler: handler\n });\n return evts;\n }\n if (isValidElement(this[0])) {\n eventRegistry = this[0].eventRegistry, elem = this[0];\n for (var _events = events.split(\" \"), endx = 0; endx < _events.length; endx++) for (var nsEvent = _events[endx].split(\".\"), offEvents = resolveNamespace(nsEvent[0], nsEvent[1]), i = 0, offEventsL = offEvents.length; i < offEventsL; i++) removeEvent(offEvents[i].ev, offEvents[i].namespace, offEvents[i].handler);\n }\n return this;\n },\n trigger: function trigger(events, argument_1) {\n if (isValidElement(this[0])) for (var eventRegistry = this[0].eventRegistry, elem = this[0], _events = \"string\" == typeof events ? events.split(\" \") : [ events.type ], endx = 0; endx < _events.length; endx++) {\n var nsEvent = _events[endx].split(\".\"), ev = nsEvent[0], namespace = nsEvent[1] || \"global\";\n if (void 0 !== document && \"global\" === namespace) {\n var evnt, i, params = {\n bubbles: !0,\n cancelable: !0,\n detail: argument_1\n };\n if (document.createEvent) {\n try {\n evnt = new CustomEvent(ev, params);\n } catch (e) {\n evnt = document.createEvent(\"CustomEvent\"), evnt.initCustomEvent(ev, params.bubbles, params.cancelable, params.detail);\n }\n events.type && DependencyLib.extend(evnt, events), elem.dispatchEvent(evnt);\n } else evnt = document.createEventObject(), evnt.eventType = ev, evnt.detail = argument_1, \n events.type && DependencyLib.extend(evnt, events), elem.fireEvent(\"on\" + evnt.eventType, evnt);\n } else if (void 0 !== eventRegistry[ev]) if (events = events.type ? events : DependencyLib.Event(events), \n events.detail = arguments.slice(1), \"global\" === namespace) for (var nmsp in eventRegistry[ev]) for (i = 0; i < eventRegistry[ev][nmsp].length; i++) eventRegistry[ev][nmsp][i].apply(elem, arguments); else for (i = 0; i < eventRegistry[ev][namespace].length; i++) eventRegistry[ev][namespace][i].apply(elem, arguments);\n }\n return this;\n }\n }, DependencyLib.isFunction = function(obj) {\n return \"function\" == typeof obj;\n }, DependencyLib.noop = function() {}, DependencyLib.isArray = Array.isArray, DependencyLib.inArray = function(elem, arr, i) {\n return null == arr ? -1 : indexOf(arr, elem, i);\n }, DependencyLib.valHooks = void 0, DependencyLib.isPlainObject = function(obj) {\n return \"object\" === _typeof(obj) && !obj.nodeType && !isWindow(obj) && !(obj.constructor && !Object.hasOwnProperty.call(obj.constructor.prototype, \"isPrototypeOf\"));\n }, DependencyLib.extend = function() {\n var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = !1;\n for (\"boolean\" == typeof target && (deep = target, target = arguments[i] || {}, \n i++), \"object\" === _typeof(target) || DependencyLib.isFunction(target) || (target = {}), \n i === length && (target = this, i--); i < length; i++) if (null != (options = arguments[i])) for (name in options) src = target[name], \n copy = options[name], target !== copy && (deep && copy && (DependencyLib.isPlainObject(copy) || (copyIsArray = DependencyLib.isArray(copy))) ? (clone = copyIsArray ? (copyIsArray = !1, \n src && DependencyLib.isArray(src) ? src : []) : src && DependencyLib.isPlainObject(src) ? src : {}, \n target[name] = DependencyLib.extend(deep, clone, copy)) : void 0 !== copy && (target[name] = copy));\n return target;\n }, DependencyLib.each = function(obj, callback) {\n var value, i = 0;\n if (isArraylike(obj)) for (var length = obj.length; i < length && (value = callback.call(obj[i], i, obj[i]), \n !1 !== value); i++) ; else for (i in obj) if (value = callback.call(obj[i], i, obj[i]), \n !1 === value) break;\n return obj;\n }, DependencyLib.data = function(owner, key, value) {\n if (void 0 === value) return owner.__data ? owner.__data[key] : null;\n owner.__data = owner.__data || {}, owner.__data[key] = value;\n }, \"function\" == typeof window.CustomEvent ? DependencyLib.Event = window.CustomEvent : (DependencyLib.Event = function(event, params) {\n params = params || {\n bubbles: !1,\n cancelable: !1,\n detail: void 0\n };\n var evt = document.createEvent(\"CustomEvent\");\n return evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail), \n evt;\n }, DependencyLib.Event.prototype = window.Event.prototype), module.exports = DependencyLib;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n var __WEBPACK_AMD_DEFINE_RESULT__;\n function _typeof(obj) {\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function _typeof(obj) {\n return typeof obj;\n } : function _typeof(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n }\n __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n return \"undefined\" != typeof window ? window : new (eval(\"require('jsdom').JSDOM\"))(\"\").window;\n }.call(exports, __webpack_require__, exports, module), void 0 === __WEBPACK_AMD_DEFINE_RESULT__ || (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n var $ = __webpack_require__(2);\n function generateMaskSet(opts, nocache) {\n var ms;\n function generateMask(mask, metadata, opts) {\n var regexMask = !1, masksetDefinition, maskdefKey;\n if (null !== mask && \"\" !== mask || (regexMask = null !== opts.regex, mask = regexMask ? (mask = opts.regex, \n mask.replace(/^(\\^)(.*)(\\$)$/, \"$2\")) : (regexMask = !0, \".*\")), 1 === mask.length && !1 === opts.greedy && 0 !== opts.repeat && (opts.placeholder = \"\"), \n 0 < opts.repeat || \"*\" === opts.repeat || \"+\" === opts.repeat) {\n var repeatStart = \"*\" === opts.repeat ? 0 : \"+\" === opts.repeat ? 1 : opts.repeat;\n mask = opts.groupmarker[0] + mask + opts.groupmarker[1] + opts.quantifiermarker[0] + repeatStart + \",\" + opts.repeat + opts.quantifiermarker[1];\n }\n return maskdefKey = regexMask ? \"regex_\" + opts.regex : opts.numericInput ? mask.split(\"\").reverse().join(\"\") : mask, \n !1 !== opts.keepStatic && (maskdefKey = \"ks_\" + maskdefKey), void 0 === Inputmask.prototype.masksCache[maskdefKey] || !0 === nocache ? (masksetDefinition = {\n mask: mask,\n maskToken: Inputmask.prototype.analyseMask(mask, regexMask, opts),\n validPositions: {},\n _buffer: void 0,\n buffer: void 0,\n tests: {},\n excludes: {},\n metadata: metadata,\n maskLength: void 0,\n jitOffset: {}\n }, !0 !== nocache && (Inputmask.prototype.masksCache[maskdefKey] = masksetDefinition, \n masksetDefinition = $.extend(!0, {}, Inputmask.prototype.masksCache[maskdefKey]))) : masksetDefinition = $.extend(!0, {}, Inputmask.prototype.masksCache[maskdefKey]), \n masksetDefinition;\n }\n if ($.isFunction(opts.mask) && (opts.mask = opts.mask(opts)), $.isArray(opts.mask)) {\n if (1 < opts.mask.length) {\n null === opts.keepStatic && (opts.keepStatic = !0);\n var altMask = opts.groupmarker[0];\n return $.each(opts.isRTL ? opts.mask.reverse() : opts.mask, function(ndx, msk) {\n 1 < altMask.length && (altMask += opts.groupmarker[1] + opts.alternatormarker + opts.groupmarker[0]), \n void 0 === msk.mask || $.isFunction(msk.mask) ? altMask += msk : altMask += msk.mask;\n }), altMask += opts.groupmarker[1], generateMask(altMask, opts.mask, opts);\n }\n opts.mask = opts.mask.pop();\n }\n return null === opts.keepStatic && (opts.keepStatic = !1), ms = opts.mask && void 0 !== opts.mask.mask && !$.isFunction(opts.mask.mask) ? generateMask(opts.mask.mask, opts.mask, opts) : generateMask(opts.mask, opts.mask, opts), \n ms;\n }\n function analyseMask(mask, regexMask, opts) {\n var tokenizer = /(?:[?*+]|\\{[0-9+*]+(?:,[0-9+*]*)?(?:\\|[0-9+*]*)?\\})|[^.?*+^${[]()|\\\\]+|./g, regexTokenizer = /\\[\\^?]?(?:[^\\\\\\]]+|\\\\[\\S\\s]?)*]?|\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\\S\\s]?)|\\((?:\\?[:=!]?)?|(?:[?*+]|\\{[0-9]+(?:,[0-9]*)?\\})\\??|[^.?*+^${[()|\\\\]+|./g, escaped = !1, currentToken = new MaskToken(), match, m, openenings = [], maskTokens = [], openingToken, currentOpeningToken, alternator, lastMatch, closeRegexGroup = !1;\n function MaskToken(isGroup, isOptional, isQuantifier, isAlternator) {\n this.matches = [], this.openGroup = isGroup || !1, this.alternatorGroup = !1, this.isGroup = isGroup || !1, \n this.isOptional = isOptional || !1, this.isQuantifier = isQuantifier || !1, this.isAlternator = isAlternator || !1, \n this.quantifier = {\n min: 1,\n max: 1\n };\n }\n function insertTestDefinition(mtoken, element, position) {\n position = void 0 !== position ? position : mtoken.matches.length;\n var prevMatch = mtoken.matches[position - 1];\n if (regexMask) 0 === element.indexOf(\"[\") || escaped && /\\\\d|\\\\s|\\\\w]/i.test(element) || \".\" === element ? mtoken.matches.splice(position++, 0, {\n fn: new RegExp(element, opts.casing ? \"i\" : \"\"),\n static: !1,\n optionality: !1,\n newBlockMarker: void 0 === prevMatch ? \"master\" : prevMatch.def !== element,\n casing: null,\n def: element,\n placeholder: void 0,\n nativeDef: element\n }) : (escaped && (element = element[element.length - 1]), $.each(element.split(\"\"), function(ndx, lmnt) {\n prevMatch = mtoken.matches[position - 1], mtoken.matches.splice(position++, 0, {\n fn: /[a-z]/i.test(opts.staticDefinitionSymbol || lmnt) ? new RegExp(\"[\" + (opts.staticDefinitionSymbol || lmnt) + \"]\", opts.casing ? \"i\" : \"\") : null,\n static: !0,\n optionality: !1,\n newBlockMarker: void 0 === prevMatch ? \"master\" : prevMatch.def !== lmnt && !0 !== prevMatch.static,\n casing: null,\n def: opts.staticDefinitionSymbol || lmnt,\n placeholder: void 0 !== opts.staticDefinitionSymbol ? lmnt : void 0,\n nativeDef: (escaped ? \"'\" : \"\") + lmnt\n });\n })), escaped = !1; else {\n var maskdef = (opts.definitions ? opts.definitions[element] : void 0) || Inputmask.prototype.definitions[element];\n maskdef && !escaped ? mtoken.matches.splice(position++, 0, {\n fn: maskdef.validator ? \"string\" == typeof maskdef.validator ? new RegExp(maskdef.validator, opts.casing ? \"i\" : \"\") : new function() {\n this.test = maskdef.validator;\n }() : new RegExp(\".\"),\n static: maskdef.static || !1,\n optionality: !1,\n newBlockMarker: void 0 === prevMatch ? \"master\" : prevMatch.def !== (maskdef.definitionSymbol || element),\n casing: maskdef.casing,\n def: maskdef.definitionSymbol || element,\n placeholder: maskdef.placeholder,\n nativeDef: element,\n generated: maskdef.generated\n }) : (mtoken.matches.splice(position++, 0, {\n fn: /[a-z]/i.test(opts.staticDefinitionSymbol || element) ? new RegExp(\"[\" + (opts.staticDefinitionSymbol || element) + \"]\", opts.casing ? \"i\" : \"\") : null,\n static: !0,\n optionality: !1,\n newBlockMarker: void 0 === prevMatch ? \"master\" : prevMatch.def !== element && !0 !== prevMatch.static,\n casing: null,\n def: opts.staticDefinitionSymbol || element,\n placeholder: void 0 !== opts.staticDefinitionSymbol ? element : void 0,\n nativeDef: (escaped ? \"'\" : \"\") + element\n }), escaped = !1);\n }\n }\n function verifyGroupMarker(maskToken) {\n maskToken && maskToken.matches && $.each(maskToken.matches, function(ndx, token) {\n var nextToken = maskToken.matches[ndx + 1];\n (void 0 === nextToken || void 0 === nextToken.matches || !1 === nextToken.isQuantifier) && token && token.isGroup && (token.isGroup = !1, \n regexMask || (insertTestDefinition(token, opts.groupmarker[0], 0), !0 !== token.openGroup && insertTestDefinition(token, opts.groupmarker[1]))), \n verifyGroupMarker(token);\n });\n }\n function defaultCase() {\n if (0 < openenings.length) {\n if (currentOpeningToken = openenings[openenings.length - 1], insertTestDefinition(currentOpeningToken, m), \n currentOpeningToken.isAlternator) {\n alternator = openenings.pop();\n for (var mndx = 0; mndx < alternator.matches.length; mndx++) alternator.matches[mndx].isGroup && (alternator.matches[mndx].isGroup = !1);\n 0 < openenings.length ? (currentOpeningToken = openenings[openenings.length - 1], \n currentOpeningToken.matches.push(alternator)) : currentToken.matches.push(alternator);\n }\n } else insertTestDefinition(currentToken, m);\n }\n function reverseTokens(maskToken) {\n function reverseStatic(st) {\n return st === opts.optionalmarker[0] ? st = opts.optionalmarker[1] : st === opts.optionalmarker[1] ? st = opts.optionalmarker[0] : st === opts.groupmarker[0] ? st = opts.groupmarker[1] : st === opts.groupmarker[1] && (st = opts.groupmarker[0]), \n st;\n }\n for (var match in maskToken.matches = maskToken.matches.reverse(), maskToken.matches) if (Object.prototype.hasOwnProperty.call(maskToken.matches, match)) {\n var intMatch = parseInt(match);\n if (maskToken.matches[match].isQuantifier && maskToken.matches[intMatch + 1] && maskToken.matches[intMatch + 1].isGroup) {\n var qt = maskToken.matches[match];\n maskToken.matches.splice(match, 1), maskToken.matches.splice(intMatch + 1, 0, qt);\n }\n void 0 !== maskToken.matches[match].matches ? maskToken.matches[match] = reverseTokens(maskToken.matches[match]) : maskToken.matches[match] = reverseStatic(maskToken.matches[match]);\n }\n return maskToken;\n }\n function groupify(matches) {\n var groupToken = new MaskToken(!0);\n return groupToken.openGroup = !1, groupToken.matches = matches, groupToken;\n }\n function closeGroup() {\n if (openingToken = openenings.pop(), openingToken.openGroup = !1, void 0 !== openingToken) if (0 < openenings.length) {\n if (currentOpeningToken = openenings[openenings.length - 1], currentOpeningToken.matches.push(openingToken), \n currentOpeningToken.isAlternator) {\n alternator = openenings.pop();\n for (var mndx = 0; mndx < alternator.matches.length; mndx++) alternator.matches[mndx].isGroup = !1, \n alternator.matches[mndx].alternatorGroup = !1;\n 0 < openenings.length ? (currentOpeningToken = openenings[openenings.length - 1], \n currentOpeningToken.matches.push(alternator)) : currentToken.matches.push(alternator);\n }\n } else currentToken.matches.push(openingToken); else defaultCase();\n }\n function groupQuantifier(matches) {\n var lastMatch = matches.pop();\n return lastMatch.isQuantifier && (lastMatch = groupify([ matches.pop(), lastMatch ])), \n lastMatch;\n }\n for (regexMask && (opts.optionalmarker[0] = void 0, opts.optionalmarker[1] = void 0); match = regexMask ? regexTokenizer.exec(mask) : tokenizer.exec(mask); ) {\n if (m = match[0], regexMask) switch (m.charAt(0)) {\n case \"?\":\n m = \"{0,1}\";\n break;\n\n case \"+\":\n case \"*\":\n m = \"{\" + m + \"}\";\n break;\n\n case \"|\":\n if (0 === openenings.length) {\n var altRegexGroup = groupify(currentToken.matches);\n altRegexGroup.openGroup = !0, openenings.push(altRegexGroup), currentToken.matches = [], \n closeRegexGroup = !0;\n }\n break;\n }\n if (escaped) defaultCase(); else switch (m.charAt(0)) {\n case \"(?=\":\n break;\n\n case \"(?!\":\n break;\n\n case \"(?<=\":\n break;\n\n case \"(?<!\":\n break;\n\n case opts.escapeChar:\n escaped = !0, regexMask && defaultCase();\n break;\n\n case opts.optionalmarker[1]:\n case opts.groupmarker[1]:\n closeGroup();\n break;\n\n case opts.optionalmarker[0]:\n openenings.push(new MaskToken(!1, !0));\n break;\n\n case opts.groupmarker[0]:\n openenings.push(new MaskToken(!0));\n break;\n\n case opts.quantifiermarker[0]:\n var quantifier = new MaskToken(!1, !1, !0);\n m = m.replace(/[{}]/g, \"\");\n var mqj = m.split(\"|\"), mq = mqj[0].split(\",\"), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = 1 === mq.length ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]);\n \"*\" !== mq0 && \"+\" !== mq0 || (mq0 = \"*\" === mq1 ? 0 : 1), quantifier.quantifier = {\n min: mq0,\n max: mq1,\n jit: mqj[1]\n };\n var matches = 0 < openenings.length ? openenings[openenings.length - 1].matches : currentToken.matches;\n if (match = matches.pop(), match.isAlternator) {\n matches.push(match), matches = match.matches;\n var groupToken = new MaskToken(!0), tmpMatch = matches.pop();\n matches.push(groupToken), matches = groupToken.matches, match = tmpMatch;\n }\n match.isGroup || (match = groupify([ match ])), matches.push(match), matches.push(quantifier);\n break;\n\n case opts.alternatormarker:\n if (0 < openenings.length) {\n currentOpeningToken = openenings[openenings.length - 1];\n var subToken = currentOpeningToken.matches[currentOpeningToken.matches.length - 1];\n lastMatch = currentOpeningToken.openGroup && (void 0 === subToken.matches || !1 === subToken.isGroup && !1 === subToken.isAlternator) ? openenings.pop() : groupQuantifier(currentOpeningToken.matches);\n } else lastMatch = groupQuantifier(currentToken.matches);\n if (lastMatch.isAlternator) openenings.push(lastMatch); else if (lastMatch.alternatorGroup ? (alternator = openenings.pop(), \n lastMatch.alternatorGroup = !1) : alternator = new MaskToken(!1, !1, !1, !0), alternator.matches.push(lastMatch), \n openenings.push(alternator), lastMatch.openGroup) {\n lastMatch.openGroup = !1;\n var alternatorGroup = new MaskToken(!0);\n alternatorGroup.alternatorGroup = !0, openenings.push(alternatorGroup);\n }\n break;\n\n default:\n defaultCase();\n }\n }\n for (closeRegexGroup && closeGroup(); 0 < openenings.length; ) openingToken = openenings.pop(), \n currentToken.matches.push(openingToken);\n return 0 < currentToken.matches.length && (verifyGroupMarker(currentToken), maskTokens.push(currentToken)), \n (opts.numericInput || opts.isRTL) && reverseTokens(maskTokens[0]), maskTokens;\n }\n module.exports = {\n generateMaskSet: generateMaskSet,\n analyseMask: analyseMask\n };\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n __webpack_require__(6), __webpack_require__(8), __webpack_require__(9), __webpack_require__(10), \n module.exports = __webpack_require__(1);\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n var Inputmask = __webpack_require__(1);\n Inputmask.extendDefinitions({\n A: {\n validator: \"[A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n casing: \"upper\"\n },\n \"&\": {\n validator: \"[0-9A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n casing: \"upper\"\n },\n \"#\": {\n validator: \"[0-9A-Fa-f]\",\n casing: \"upper\"\n }\n });\n var ipValidatorRegex = new RegExp(\"25[0-5]|2[0-4][0-9]|[01][0-9][0-9]\");\n function ipValidator(chrs, maskset, pos, strict, opts) {\n return chrs = -1 < pos - 1 && \".\" !== maskset.buffer[pos - 1] ? (chrs = maskset.buffer[pos - 1] + chrs, \n -1 < pos - 2 && \".\" !== maskset.buffer[pos - 2] ? maskset.buffer[pos - 2] + chrs : \"0\" + chrs) : \"00\" + chrs, \n ipValidatorRegex.test(chrs);\n }\n Inputmask.extendAliases({\n cssunit: {\n regex: \"[+-]?[0-9]+\\\\.?([0-9]+)?(px|em|rem|ex|%|in|cm|mm|pt|pc)\"\n },\n url: {\n regex: \"(https?|ftp)//.*\",\n autoUnmask: !1\n },\n ip: {\n mask: \"i[i[i]].j[j[j]].k[k[k]].l[l[l]]\",\n definitions: {\n i: {\n validator: ipValidator\n },\n j: {\n validator: ipValidator\n },\n k: {\n validator: ipValidator\n },\n l: {\n validator: ipValidator\n }\n },\n onUnMask: function onUnMask(maskedValue, unmaskedValue, opts) {\n return maskedValue;\n },\n inputmode: \"numeric\"\n },\n email: {\n mask: \"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]\",\n greedy: !1,\n casing: \"lower\",\n onBeforePaste: function onBeforePaste(pastedValue, opts) {\n return pastedValue = pastedValue.toLowerCase(), pastedValue.replace(\"mailto:\", \"\");\n },\n definitions: {\n \"*\": {\n validator: \"[0-9\\uff11-\\uff19A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5!#$%&'*+/=?^_`{|}~-]\"\n },\n \"-\": {\n validator: \"[0-9A-Za-z-]\"\n }\n },\n onUnMask: function onUnMask(maskedValue, unmaskedValue, opts) {\n return maskedValue;\n },\n inputmode: \"email\"\n },\n mac: {\n mask: \"##:##:##:##:##:##\"\n },\n vin: {\n mask: \"V{13}9{4}\",\n definitions: {\n V: {\n validator: \"[A-HJ-NPR-Za-hj-npr-z\\\\d]\",\n casing: \"upper\"\n }\n },\n clearIncomplete: !0,\n autoUnmask: !0\n },\n ssn: {\n mask: \"999-99-9999\",\n postValidation: function postValidation(buffer, pos, c, currentResult, opts, maskset, strict) {\n return /^(?!219-09-9999|078-05-1120)(?!666|000|9.{2}).{3}-(?!00).{2}-(?!0{4}).{4}$/.test(buffer.join(\"\"));\n }\n }\n }), module.exports = Inputmask;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function _typeof(obj) {\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function _typeof(obj) {\n return typeof obj;\n } : function _typeof(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n }\n var $ = __webpack_require__(2), window = __webpack_require__(3), document = window.document, ua = window.navigator && window.navigator.userAgent || \"\", ie = 0 < ua.indexOf(\"MSIE \") || 0 < ua.indexOf(\"Trident/\"), mobile = \"ontouchstart\" in window, iemobile = /iemobile/i.test(ua), iphone = /iphone/i.test(ua) && !iemobile, keyCode = __webpack_require__(0);\n module.exports = function maskScope(actionObj, maskset, opts) {\n maskset = maskset || this.maskset, opts = opts || this.opts;\n var inputmask = this, el = this.el, isRTL = this.isRTL || (this.isRTL = opts.numericInput), undoValue, $el, skipKeyPressEvent = !1, skipInputEvent = !1, validationEvent = !1, ignorable = !1, maxLength, mouseEnter = !1, originalPlaceholder = void 0;\n function getMaskTemplate(baseOnInput, minimalPos, includeMode, noJit, clearOptionalTail) {\n var greedy = opts.greedy;\n clearOptionalTail && (opts.greedy = !1), minimalPos = minimalPos || 0;\n var maskTemplate = [], ndxIntlzr, pos = 0, test, testPos, jitRenderStatic;\n do {\n if (!0 === baseOnInput && maskset.validPositions[pos]) testPos = clearOptionalTail && !0 === maskset.validPositions[pos].match.optionality && void 0 === maskset.validPositions[pos + 1] && (!0 === maskset.validPositions[pos].generatedInput || maskset.validPositions[pos].input == opts.skipOptionalPartCharacter && 0 < pos) ? determineTestTemplate(pos, getTests(pos, ndxIntlzr, pos - 1)) : maskset.validPositions[pos], \n test = testPos.match, ndxIntlzr = testPos.locator.slice(), maskTemplate.push(!0 === includeMode ? testPos.input : !1 === includeMode ? test.nativeDef : getPlaceholder(pos, test)); else {\n testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), test = testPos.match, ndxIntlzr = testPos.locator.slice();\n var jitMasking = !0 !== noJit && (!1 !== opts.jitMasking ? opts.jitMasking : test.jit);\n jitRenderStatic = jitRenderStatic && test.static && test.def !== opts.groupSeparator && null === test.fn || maskset.validPositions[pos - 1] && test.static && test.def !== opts.groupSeparator && null === test.fn, \n jitRenderStatic || !1 === jitMasking || void 0 === jitMasking || \"number\" == typeof jitMasking && isFinite(jitMasking) && pos < jitMasking ? maskTemplate.push(!1 === includeMode ? test.nativeDef : getPlaceholder(pos, test)) : jitRenderStatic = !1;\n }\n pos++;\n } while ((void 0 === maxLength || pos < maxLength) && (!0 !== test.static || \"\" !== test.def) || pos < minimalPos);\n return \"\" === maskTemplate[maskTemplate.length - 1] && maskTemplate.pop(), !1 === includeMode && void 0 !== maskset.maskLength || (maskset.maskLength = pos - 1), \n opts.greedy = greedy, maskTemplate;\n }\n function resetMaskSet(soft) {\n maskset.buffer = void 0, !0 !== soft && (maskset.validPositions = {}, maskset.p = 0);\n }\n function getLastValidPosition(closestTo, strict, validPositions) {\n var before = -1, after = -1, valids = validPositions || maskset.validPositions;\n for (var posNdx in void 0 === closestTo && (closestTo = -1), valids) {\n var psNdx = parseInt(posNdx);\n valids[psNdx] && (strict || !0 !== valids[psNdx].generatedInput) && (psNdx <= closestTo && (before = psNdx), \n closestTo <= psNdx && (after = psNdx));\n }\n return -1 === before || before == closestTo ? after : -1 == after ? before : closestTo - before < after - closestTo ? before : after;\n }\n function getDecisionTaker(tst) {\n var decisionTaker = tst.locator[tst.alternation];\n return \"string\" == typeof decisionTaker && 0 < decisionTaker.length && (decisionTaker = decisionTaker.split(\",\")[0]), \n void 0 !== decisionTaker ? decisionTaker.toString() : \"\";\n }\n function getLocator(tst, align) {\n var locator = (null != tst.alternation ? tst.mloc[getDecisionTaker(tst)] : tst.locator).join(\"\");\n if (\"\" !== locator) for (;locator.length < align; ) locator += \"0\";\n return locator;\n }\n function determineTestTemplate(pos, tests) {\n pos = 0 < pos ? pos - 1 : 0;\n for (var altTest = getTest(pos), targetLocator = getLocator(altTest), tstLocator, closest, bestMatch, ndx = 0; ndx < tests.length; ndx++) {\n var tst = tests[ndx];\n tstLocator = getLocator(tst, targetLocator.length);\n var distance = Math.abs(tstLocator - targetLocator);\n (void 0 === closest || \"\" !== tstLocator && distance < closest || bestMatch && !opts.greedy && bestMatch.match.optionality && \"master\" === bestMatch.match.newBlockMarker && (!tst.match.optionality || !tst.match.newBlockMarker) || bestMatch && bestMatch.match.optionalQuantifier && !tst.match.optionalQuantifier) && (closest = distance, \n bestMatch = tst);\n }\n return bestMatch;\n }\n function getTestTemplate(pos, ndxIntlzr, tstPs) {\n return maskset.validPositions[pos] || determineTestTemplate(pos, getTests(pos, ndxIntlzr ? ndxIntlzr.slice() : ndxIntlzr, tstPs));\n }\n function getTest(pos, tests) {\n return maskset.validPositions[pos] ? maskset.validPositions[pos] : (tests || getTests(pos))[0];\n }\n function positionCanMatchDefinition(pos, testDefinition, opts) {\n for (var valid = !1, tests = getTests(pos), tndx = 0; tndx < tests.length; tndx++) {\n if (tests[tndx].match && (!(tests[tndx].match.nativeDef !== testDefinition.match[opts.shiftPositions ? \"def\" : \"nativeDef\"] || opts.shiftPositions && testDefinition.match.static) || tests[tndx].match.nativeDef === testDefinition.match.nativeDef)) {\n valid = !0;\n break;\n }\n if (tests[tndx].match && tests[tndx].match.def === testDefinition.match.nativeDef) {\n valid = void 0;\n break;\n }\n }\n return !1 === valid && void 0 !== maskset.jitOffset[pos] && (valid = positionCanMatchDefinition(pos + maskset.jitOffset[pos], testDefinition, opts)), \n valid;\n }\n function getTests(pos, ndxIntlzr, tstPs) {\n var maskTokens = maskset.maskToken, testPos = ndxIntlzr ? tstPs : 0, ndxInitializer = ndxIntlzr ? ndxIntlzr.slice() : [ 0 ], matches = [], insertStop = !1, latestMatch, cacheDependency = ndxIntlzr ? ndxIntlzr.join(\"\") : \"\";\n function resolveTestFromToken(maskToken, ndxInitializer, loopNdx, quantifierRecurse) {\n function handleMatch(match, loopNdx, quantifierRecurse) {\n function isFirstMatch(latestMatch, tokenGroup) {\n var firstMatch = 0 === $.inArray(latestMatch, tokenGroup.matches);\n return firstMatch || $.each(tokenGroup.matches, function(ndx, match) {\n if (!0 === match.isQuantifier ? firstMatch = isFirstMatch(latestMatch, tokenGroup.matches[ndx - 1]) : Object.prototype.hasOwnProperty.call(match, \"matches\") && (firstMatch = isFirstMatch(latestMatch, match)), \n firstMatch) return !1;\n }), firstMatch;\n }\n function resolveNdxInitializer(pos, alternateNdx, targetAlternation) {\n var bestMatch, indexPos;\n if ((maskset.tests[pos] || maskset.validPositions[pos]) && $.each(maskset.tests[pos] || [ maskset.validPositions[pos] ], function(ndx, lmnt) {\n if (lmnt.mloc[alternateNdx]) return bestMatch = lmnt, !1;\n var alternation = void 0 !== targetAlternation ? targetAlternation : lmnt.alternation, ndxPos = void 0 !== lmnt.locator[alternation] ? lmnt.locator[alternation].toString().indexOf(alternateNdx) : -1;\n (void 0 === indexPos || ndxPos < indexPos) && -1 !== ndxPos && (bestMatch = lmnt, \n indexPos = ndxPos);\n }), bestMatch) {\n var bestMatchAltIndex = bestMatch.locator[bestMatch.alternation], locator = bestMatch.mloc[alternateNdx] || bestMatch.mloc[bestMatchAltIndex] || bestMatch.locator;\n return locator.slice((void 0 !== targetAlternation ? targetAlternation : bestMatch.alternation) + 1);\n }\n return void 0 !== targetAlternation ? resolveNdxInitializer(pos, alternateNdx) : void 0;\n }\n function isSubsetOf(source, target) {\n function expand(pattern) {\n for (var expanded = [], start = -1, end, i = 0, l = pattern.length; i < l; i++) if (\"-\" === pattern.charAt(i)) for (end = pattern.charCodeAt(i + 1); ++start < end; ) expanded.push(String.fromCharCode(start)); else start = pattern.charCodeAt(i), \n expanded.push(pattern.charAt(i));\n return expanded.join(\"\");\n }\n return source.match.def === target.match.nativeDef || !(!(opts.regex || source.match.fn instanceof RegExp && target.match.fn instanceof RegExp) || !0 === source.match.static || !0 === target.match.static) && -1 !== expand(target.match.fn.toString().replace(/[[\\]/]/g, \"\")).indexOf(expand(source.match.fn.toString().replace(/[[\\]/]/g, \"\")));\n }\n function staticCanMatchDefinition(source, target) {\n return !0 === source.match.static && !0 !== target.match.static && target.match.fn.test(source.match.def, maskset, pos, !1, opts, !1);\n }\n function setMergeLocators(targetMatch, altMatch) {\n var alternationNdx = targetMatch.alternation, shouldMerge = void 0 === altMatch || alternationNdx === altMatch.alternation && -1 === targetMatch.locator[alternationNdx].toString().indexOf(altMatch.locator[alternationNdx]);\n if (!shouldMerge && alternationNdx > altMatch.alternation) for (var i = altMatch.alternation; i < alternationNdx; i++) if (targetMatch.locator[i] !== altMatch.locator[i]) {\n alternationNdx = i, shouldMerge = !0;\n break;\n }\n if (shouldMerge) {\n targetMatch.mloc = targetMatch.mloc || {};\n var locNdx = targetMatch.locator[alternationNdx];\n if (void 0 !== locNdx) {\n if (\"string\" == typeof locNdx && (locNdx = locNdx.split(\",\")[0]), void 0 === targetMatch.mloc[locNdx] && (targetMatch.mloc[locNdx] = targetMatch.locator.slice()), \n void 0 !== altMatch) {\n for (var ndx in altMatch.mloc) \"string\" == typeof ndx && (ndx = ndx.split(\",\")[0]), \n void 0 === targetMatch.mloc[ndx] && (targetMatch.mloc[ndx] = altMatch.mloc[ndx]);\n targetMatch.locator[alternationNdx] = Object.keys(targetMatch.mloc).join(\",\");\n }\n return !0;\n }\n targetMatch.alternation = void 0;\n }\n return !1;\n }\n function isSameLevel(targetMatch, altMatch) {\n if (targetMatch.locator.length !== altMatch.locator.length) return !1;\n for (var locNdx = targetMatch.alternation + 1; locNdx < targetMatch.locator.length; locNdx++) if (targetMatch.locator[locNdx] !== altMatch.locator[locNdx]) return !1;\n return !0;\n }\n if (testPos > opts._maxTestPos && void 0 !== quantifierRecurse) throw \"Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. \" + maskset.mask;\n if (testPos === pos && void 0 === match.matches) return matches.push({\n match: match,\n locator: loopNdx.reverse(),\n cd: cacheDependency,\n mloc: {}\n }), !0;\n if (void 0 !== match.matches) {\n if (match.isGroup && quantifierRecurse !== match) {\n if (match = handleMatch(maskToken.matches[$.inArray(match, maskToken.matches) + 1], loopNdx, quantifierRecurse), \n match) return !0;\n } else if (match.isOptional) {\n var optionalToken = match, mtchsNdx = matches.length;\n if (match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse), \n match) {\n if ($.each(matches, function(ndx, mtch) {\n mtchsNdx <= ndx && (mtch.match.optionality = !0);\n }), latestMatch = matches[matches.length - 1].match, void 0 !== quantifierRecurse || !isFirstMatch(latestMatch, optionalToken)) return !0;\n insertStop = !0, testPos = pos;\n }\n } else if (match.isAlternator) {\n var alternateToken = match, malternateMatches = [], maltMatches, currentMatches = matches.slice(), loopNdxCnt = loopNdx.length, altIndex = 0 < ndxInitializer.length ? ndxInitializer.shift() : -1;\n if (-1 === altIndex || \"string\" == typeof altIndex) {\n var currentPos = testPos, ndxInitializerClone = ndxInitializer.slice(), altIndexArr = [], amndx;\n if (\"string\" == typeof altIndex) altIndexArr = altIndex.split(\",\"); else for (amndx = 0; amndx < alternateToken.matches.length; amndx++) altIndexArr.push(amndx.toString());\n if (void 0 !== maskset.excludes[pos]) {\n for (var altIndexArrClone = altIndexArr.slice(), i = 0, exl = maskset.excludes[pos].length; i < exl; i++) {\n var excludeSet = maskset.excludes[pos][i].toString().split(\":\");\n loopNdx.length == excludeSet[1] && altIndexArr.splice(altIndexArr.indexOf(excludeSet[0]), 1);\n }\n 0 === altIndexArr.length && (delete maskset.excludes[pos], altIndexArr = altIndexArrClone);\n }\n (!0 === opts.keepStatic || isFinite(parseInt(opts.keepStatic)) && currentPos >= opts.keepStatic) && (altIndexArr = altIndexArr.slice(0, 1));\n for (var unMatchedAlternation = !1, ndx = 0; ndx < altIndexArr.length; ndx++) {\n amndx = parseInt(altIndexArr[ndx]), matches = [], ndxInitializer = \"string\" == typeof altIndex && resolveNdxInitializer(testPos, amndx, loopNdxCnt) || ndxInitializerClone.slice(), \n alternateToken.matches[amndx] && handleMatch(alternateToken.matches[amndx], [ amndx ].concat(loopNdx), quantifierRecurse) ? match = !0 : 0 === ndx && (unMatchedAlternation = !0), \n maltMatches = matches.slice(), testPos = currentPos, matches = [];\n for (var ndx1 = 0; ndx1 < maltMatches.length; ndx1++) {\n var altMatch = maltMatches[ndx1], dropMatch = !1;\n altMatch.match.jit = altMatch.match.jit || unMatchedAlternation, altMatch.alternation = altMatch.alternation || loopNdxCnt, \n setMergeLocators(altMatch);\n for (var ndx2 = 0; ndx2 < malternateMatches.length; ndx2++) {\n var altMatch2 = malternateMatches[ndx2];\n if (\"string\" != typeof altIndex || void 0 !== altMatch.alternation && -1 !== $.inArray(altMatch.locator[altMatch.alternation].toString(), altIndexArr)) {\n if (altMatch.match.nativeDef === altMatch2.match.nativeDef) {\n dropMatch = !0, setMergeLocators(altMatch2, altMatch);\n break;\n }\n if (isSubsetOf(altMatch, altMatch2)) {\n setMergeLocators(altMatch, altMatch2) && (dropMatch = !0, malternateMatches.splice(malternateMatches.indexOf(altMatch2), 0, altMatch));\n break;\n }\n if (isSubsetOf(altMatch2, altMatch)) {\n setMergeLocators(altMatch2, altMatch);\n break;\n }\n if (staticCanMatchDefinition(altMatch, altMatch2)) {\n isSameLevel(altMatch, altMatch2) || void 0 !== el.inputmask.userOptions.keepStatic ? setMergeLocators(altMatch, altMatch2) && (dropMatch = !0, \n malternateMatches.splice(malternateMatches.indexOf(altMatch2), 0, altMatch)) : opts.keepStatic = !0;\n break;\n }\n }\n }\n dropMatch || malternateMatches.push(altMatch);\n }\n }\n matches = currentMatches.concat(malternateMatches), testPos = pos, insertStop = 0 < matches.length, \n match = 0 < malternateMatches.length, ndxInitializer = ndxInitializerClone.slice();\n } else match = handleMatch(alternateToken.matches[altIndex] || maskToken.matches[altIndex], [ altIndex ].concat(loopNdx), quantifierRecurse);\n if (match) return !0;\n } else if (match.isQuantifier && quantifierRecurse !== maskToken.matches[$.inArray(match, maskToken.matches) - 1]) for (var qt = match, qndx = 0 < ndxInitializer.length ? ndxInitializer.shift() : 0; qndx < (isNaN(qt.quantifier.max) ? qndx + 1 : qt.quantifier.max) && testPos <= pos; qndx++) {\n var tokenGroup = maskToken.matches[$.inArray(qt, maskToken.matches) - 1];\n if (match = handleMatch(tokenGroup, [ qndx ].concat(loopNdx), tokenGroup), match) {\n if (latestMatch = matches[matches.length - 1].match, latestMatch.optionalQuantifier = qndx >= qt.quantifier.min, \n latestMatch.jit = (qndx || 1) * tokenGroup.matches.indexOf(latestMatch) >= qt.quantifier.jit, \n latestMatch.optionalQuantifier && isFirstMatch(latestMatch, tokenGroup)) {\n insertStop = !0, testPos = pos;\n break;\n }\n return latestMatch.jit && (maskset.jitOffset[pos] = tokenGroup.matches.length - tokenGroup.matches.indexOf(latestMatch)), \n !0;\n }\n } else if (match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse), \n match) return !0;\n } else testPos++;\n }\n for (var tndx = 0 < ndxInitializer.length ? ndxInitializer.shift() : 0; tndx < maskToken.matches.length; tndx++) if (!0 !== maskToken.matches[tndx].isQuantifier) {\n var match = handleMatch(maskToken.matches[tndx], [ tndx ].concat(loopNdx), quantifierRecurse);\n if (match && testPos === pos) return match;\n if (pos < testPos) break;\n }\n }\n function mergeLocators(pos, tests) {\n var locator = [];\n return $.isArray(tests) || (tests = [ tests ]), 0 < tests.length && (void 0 === tests[0].alternation || !0 === opts.keepStatic ? (locator = determineTestTemplate(pos, tests.slice()).locator.slice(), \n 0 === locator.length && (locator = tests[0].locator.slice())) : $.each(tests, function(ndx, tst) {\n if (\"\" !== tst.def) if (0 === locator.length) locator = tst.locator.slice(); else for (var i = 0; i < locator.length; i++) tst.locator[i] && -1 === locator[i].toString().indexOf(tst.locator[i]) && (locator[i] += \",\" + tst.locator[i]);\n })), locator;\n }\n if (-1 < pos && (void 0 === maxLength || pos < maxLength)) {\n if (void 0 === ndxIntlzr) {\n for (var previousPos = pos - 1, test; void 0 === (test = maskset.validPositions[previousPos] || maskset.tests[previousPos]) && -1 < previousPos; ) previousPos--;\n void 0 !== test && -1 < previousPos && (ndxInitializer = mergeLocators(previousPos, test), \n cacheDependency = ndxInitializer.join(\"\"), testPos = previousPos);\n }\n if (maskset.tests[pos] && maskset.tests[pos][0].cd === cacheDependency) return maskset.tests[pos];\n for (var mtndx = ndxInitializer.shift(); mtndx < maskTokens.length; mtndx++) {\n var match = resolveTestFromToken(maskTokens[mtndx], ndxInitializer, [ mtndx ]);\n if (match && testPos === pos || pos < testPos) break;\n }\n }\n return 0 !== matches.length && !insertStop || matches.push({\n match: {\n fn: null,\n static: !0,\n optionality: !1,\n casing: null,\n def: \"\",\n placeholder: \"\"\n },\n locator: [],\n mloc: {},\n cd: cacheDependency\n }), void 0 !== ndxIntlzr && maskset.tests[pos] ? $.extend(!0, [], matches) : (maskset.tests[pos] = $.extend(!0, [], matches), \n maskset.tests[pos]);\n }\n function getBufferTemplate() {\n return void 0 === maskset._buffer && (maskset._buffer = getMaskTemplate(!1, 1), \n void 0 === maskset.buffer && (maskset.buffer = maskset._buffer.slice())), maskset._buffer;\n }\n function getBuffer(noCache) {\n return void 0 !== maskset.buffer && !0 !== noCache || (maskset.buffer = getMaskTemplate(!0, getLastValidPosition(), !0), \n void 0 === maskset._buffer && (maskset._buffer = maskset.buffer.slice())), maskset.buffer;\n }\n function refreshFromBuffer(start, end, buffer) {\n var i, p, skipOptionalPartCharacter = opts.skipOptionalPartCharacter, bffr = isRTL ? buffer.slice().reverse() : buffer;\n if (opts.skipOptionalPartCharacter = \"\", !0 === start) resetMaskSet(), maskset.tests = {}, \n start = 0, end = buffer.length, p = determineNewCaretPosition({\n begin: 0,\n end: 0\n }, !1).begin; else {\n for (i = start; i < end; i++) delete maskset.validPositions[i];\n p = start;\n }\n var keypress = new $.Event(\"keypress\");\n for (i = start; i < end; i++) {\n keypress.which = bffr[i].toString().charCodeAt(0), ignorable = !1;\n var valResult = EventHandlers.keypressEvent.call(el, keypress, !0, !1, !1, p);\n !1 !== valResult && (p = valResult.forwardPosition);\n }\n opts.skipOptionalPartCharacter = skipOptionalPartCharacter;\n }\n function casing(elem, test, pos) {\n switch (opts.casing || test.casing) {\n case \"upper\":\n elem = elem.toUpperCase();\n break;\n\n case \"lower\":\n elem = elem.toLowerCase();\n break;\n\n case \"title\":\n var posBefore = maskset.validPositions[pos - 1];\n elem = 0 === pos || posBefore && posBefore.input === String.fromCharCode(keyCode.SPACE) ? elem.toUpperCase() : elem.toLowerCase();\n break;\n\n default:\n if ($.isFunction(opts.casing)) {\n var args = Array.prototype.slice.call(arguments);\n args.push(maskset.validPositions), elem = opts.casing.apply(this, args);\n }\n }\n return elem;\n }\n function checkAlternationMatch(altArr1, altArr2, na) {\n for (var altArrC = opts.greedy ? altArr2 : altArr2.slice(0, 1), isMatch = !1, naArr = void 0 !== na ? na.split(\",\") : [], naNdx, i = 0; i < naArr.length; i++) -1 !== (naNdx = altArr1.indexOf(naArr[i])) && altArr1.splice(naNdx, 1);\n for (var alndx = 0; alndx < altArr1.length; alndx++) if (-1 !== $.inArray(altArr1[alndx], altArrC)) {\n isMatch = !0;\n break;\n }\n return isMatch;\n }\n function alternate(maskPos, c, strict, fromIsValid, rAltPos, selection) {\n var validPsClone = $.extend(!0, {}, maskset.validPositions), tstClone = $.extend(!0, {}, maskset.tests), lastAlt, alternation, isValidRslt = !1, returnRslt = !1, altPos, prevAltPos, i, validPos, decisionPos, lAltPos = void 0 !== rAltPos ? rAltPos : getLastValidPosition(), nextPos, input, begin, end;\n if (selection && (begin = selection.begin, end = selection.end, selection.begin > selection.end && (begin = selection.end, \n end = selection.begin)), -1 === lAltPos && void 0 === rAltPos) lastAlt = 0, prevAltPos = getTest(lastAlt), \n alternation = prevAltPos.alternation; else for (;0 <= lAltPos; lAltPos--) if (altPos = maskset.validPositions[lAltPos], \n altPos && void 0 !== altPos.alternation) {\n if (prevAltPos && prevAltPos.locator[altPos.alternation] !== altPos.locator[altPos.alternation]) break;\n lastAlt = lAltPos, alternation = maskset.validPositions[lastAlt].alternation, prevAltPos = altPos;\n }\n if (void 0 !== alternation) {\n decisionPos = parseInt(lastAlt), maskset.excludes[decisionPos] = maskset.excludes[decisionPos] || [], \n !0 !== maskPos && maskset.excludes[decisionPos].push(getDecisionTaker(prevAltPos) + \":\" + prevAltPos.alternation);\n var validInputs = [], resultPos = -1;\n for (i = decisionPos; i < getLastValidPosition(void 0, !0) + 1; i++) -1 === resultPos && maskPos <= i && void 0 !== c && (validInputs.push(c), \n resultPos = validInputs.length - 1), validPos = maskset.validPositions[i], validPos && !0 !== validPos.generatedInput && (void 0 === selection || i < begin || end <= i) && validInputs.push(validPos.input), \n delete maskset.validPositions[i];\n for (-1 === resultPos && void 0 !== c && (validInputs.push(c), resultPos = validInputs.length - 1); void 0 !== maskset.excludes[decisionPos] && maskset.excludes[decisionPos].length < 10; ) {\n for (maskset.tests = {}, resetMaskSet(!0), isValidRslt = !0, i = 0; i < validInputs.length && (nextPos = isValidRslt.caret || getLastValidPosition(void 0, !0) + 1, \n input = validInputs[i], isValidRslt = isValid(nextPos, input, !1, fromIsValid, !0)); i++) i === resultPos && (returnRslt = isValidRslt), \n 1 == maskPos && isValidRslt && (returnRslt = {\n caretPos: i\n });\n if (isValidRslt) break;\n if (resetMaskSet(), prevAltPos = getTest(decisionPos), maskset.validPositions = $.extend(!0, {}, validPsClone), \n maskset.tests = $.extend(!0, {}, tstClone), !maskset.excludes[decisionPos]) {\n returnRslt = alternate(maskPos, c, strict, fromIsValid, decisionPos - 1, selection);\n break;\n }\n var decisionTaker = getDecisionTaker(prevAltPos);\n if (-1 !== maskset.excludes[decisionPos].indexOf(decisionTaker + \":\" + prevAltPos.alternation)) {\n returnRslt = alternate(maskPos, c, strict, fromIsValid, decisionPos - 1, selection);\n break;\n }\n for (maskset.excludes[decisionPos].push(decisionTaker + \":\" + prevAltPos.alternation), \n i = decisionPos; i < getLastValidPosition(void 0, !0) + 1; i++) delete maskset.validPositions[i];\n }\n }\n return returnRslt && !1 === opts.keepStatic || delete maskset.excludes[decisionPos], \n returnRslt;\n }\n function isValid(pos, c, strict, fromIsValid, fromAlternate, validateOnly) {\n function isSelection(posObj) {\n return isRTL ? 1 < posObj.begin - posObj.end || posObj.begin - posObj.end == 1 : 1 < posObj.end - posObj.begin || posObj.end - posObj.begin == 1;\n }\n strict = !0 === strict;\n var maskPos = pos;\n function processCommandObject(commandObj) {\n if (void 0 !== commandObj) {\n if (void 0 !== commandObj.remove && ($.isArray(commandObj.remove) || (commandObj.remove = [ commandObj.remove ]), \n $.each(commandObj.remove.sort(function(a, b) {\n return b.pos - a.pos;\n }), function(ndx, lmnt) {\n revalidateMask({\n begin: lmnt,\n end: lmnt + 1\n });\n }), commandObj.remove = void 0), void 0 !== commandObj.insert && ($.isArray(commandObj.insert) || (commandObj.insert = [ commandObj.insert ]), \n $.each(commandObj.insert.sort(function(a, b) {\n return a.pos - b.pos;\n }), function(ndx, lmnt) {\n \"\" !== lmnt.c && isValid(lmnt.pos, lmnt.c, void 0 === lmnt.strict || lmnt.strict, void 0 !== lmnt.fromIsValid ? lmnt.fromIsValid : fromIsValid);\n }), commandObj.insert = void 0), commandObj.refreshFromBuffer && commandObj.buffer) {\n var refresh = commandObj.refreshFromBuffer;\n refreshFromBuffer(!0 === refresh ? refresh : refresh.start, refresh.end, commandObj.buffer), \n commandObj.refreshFromBuffer = void 0;\n }\n void 0 !== commandObj.rewritePosition && (maskPos = commandObj.rewritePosition, \n commandObj = !0);\n }\n return commandObj;\n }\n function _isValid(position, c, strict) {\n var rslt = !1;\n return $.each(getTests(position), function(ndx, tst) {\n var test = tst.match;\n if (getBuffer(!0), rslt = null != test.fn ? test.fn.test(c, maskset, position, strict, opts, isSelection(pos)) : (c === test.def || c === opts.skipOptionalPartCharacter) && \"\" !== test.def && {\n c: getPlaceholder(position, test, !0) || test.def,\n pos: position\n }, !1 !== rslt) {\n var elem = void 0 !== rslt.c ? rslt.c : c, validatedPos = position;\n return elem = elem === opts.skipOptionalPartCharacter && !0 === test.static ? getPlaceholder(position, test, !0) || test.def : elem, \n rslt = processCommandObject(rslt), !0 !== rslt && void 0 !== rslt.pos && rslt.pos !== position && (validatedPos = rslt.pos), \n !0 !== rslt && void 0 === rslt.pos && void 0 === rslt.c ? !1 : (!1 === revalidateMask(pos, $.extend({}, tst, {\n input: casing(elem, test, validatedPos)\n }), fromIsValid, validatedPos) && (rslt = !1), !1);\n }\n }), rslt;\n }\n void 0 !== pos.begin && (maskPos = isRTL ? pos.end : pos.begin);\n var result = !0, positionsClone = $.extend(!0, {}, maskset.validPositions);\n if (!1 === opts.keepStatic && void 0 !== maskset.excludes[maskPos] && !0 !== fromAlternate && !0 !== fromIsValid) for (var i = maskPos; i < (isRTL ? pos.begin : pos.end); i++) void 0 !== maskset.excludes[i] && (maskset.excludes[i] = void 0, \n delete maskset.tests[i]);\n if ($.isFunction(opts.preValidation) && !0 !== fromIsValid && !0 !== validateOnly && (result = opts.preValidation.call(el, getBuffer(), maskPos, c, isSelection(pos), opts, maskset, pos, strict || fromAlternate), \n result = processCommandObject(result)), !0 === result) {\n if (void 0 === maxLength || maskPos < maxLength) {\n if (result = _isValid(maskPos, c, strict), (!strict || !0 === fromIsValid) && !1 === result && !0 !== validateOnly) {\n var currentPosValid = maskset.validPositions[maskPos];\n if (!currentPosValid || !0 !== currentPosValid.match.static || currentPosValid.match.def !== c && c !== opts.skipOptionalPartCharacter) {\n if (opts.insertMode || void 0 === maskset.validPositions[seekNext(maskPos)] || pos.end > maskPos) {\n var skip = !1;\n if (maskset.jitOffset[maskPos] && void 0 === maskset.validPositions[seekNext(maskPos)] && (result = isValid(maskPos + maskset.jitOffset[maskPos], c, !0), \n !1 !== result && (!0 !== fromAlternate && (result.caret = maskPos), skip = !0)), \n pos.end > maskPos && (maskset.validPositions[maskPos] = void 0), !skip && !isMask(maskPos, opts.keepStatic)) for (var nPos = maskPos + 1, snPos = seekNext(maskPos); nPos <= snPos; nPos++) if (result = _isValid(nPos, c, strict), \n !1 !== result) {\n result = trackbackPositions(maskPos, void 0 !== result.pos ? result.pos : nPos) || result, \n maskPos = nPos;\n break;\n }\n }\n } else result = {\n caret: seekNext(maskPos)\n };\n }\n } else result = !1;\n !1 !== result || !opts.keepStatic || !isComplete(getBuffer()) && 0 !== maskPos || strict || !0 === fromAlternate ? isSelection(pos) && maskset.tests[maskPos] && 1 < maskset.tests[maskPos].length && opts.keepStatic && !strict && !0 !== fromAlternate && (result = alternate(!0)) : result = alternate(maskPos, c, strict, fromIsValid, void 0, pos), \n !0 === result && (result = {\n pos: maskPos\n });\n }\n if ($.isFunction(opts.postValidation) && !0 !== fromIsValid && !0 !== validateOnly) {\n var postResult = opts.postValidation.call(el, getBuffer(!0), void 0 !== pos.begin ? isRTL ? pos.end : pos.begin : pos, c, result, opts, maskset, strict);\n void 0 !== postResult && (result = !0 === postResult ? result : postResult);\n }\n result && void 0 === result.pos && (result.pos = maskPos), !1 === result || !0 === validateOnly ? (resetMaskSet(!0), \n maskset.validPositions = $.extend(!0, {}, positionsClone)) : trackbackPositions(void 0, maskPos, !0);\n var endResult = processCommandObject(result);\n return endResult;\n }\n function trackbackPositions(originalPos, newPos, fillOnly) {\n if (void 0 === originalPos) for (originalPos = newPos - 1; 0 < originalPos && !maskset.validPositions[originalPos]; originalPos--) ;\n for (var ps = originalPos; ps < newPos; ps++) if (void 0 === maskset.validPositions[ps] && !isMask(ps, !0)) {\n var vp = 0 == ps ? getTest(ps) : maskset.validPositions[ps - 1];\n if (vp) {\n var tests = getTests(ps).slice();\n \"\" === tests[tests.length - 1].match.def && tests.pop();\n var bestMatch = determineTestTemplate(ps, tests), np;\n if (bestMatch && (!0 !== bestMatch.match.jit || \"master\" === bestMatch.match.newBlockMarker && (np = maskset.validPositions[ps + 1]) && !0 === np.match.optionalQuantifier) && (bestMatch = $.extend({}, bestMatch, {\n input: getPlaceholder(ps, bestMatch.match, !0) || bestMatch.match.def\n }), bestMatch.generatedInput = !0, revalidateMask(ps, bestMatch, !0), !0 !== fillOnly)) {\n var cvpInput = maskset.validPositions[newPos].input;\n return maskset.validPositions[newPos] = void 0, isValid(newPos, cvpInput, !0, !0);\n }\n }\n }\n }\n function revalidateMask(pos, validTest, fromIsValid, validatedPos) {\n function IsEnclosedStatic(pos, valids, selection) {\n var posMatch = valids[pos];\n if (void 0 === posMatch || !0 !== posMatch.match.static || !0 === posMatch.match.optionality || void 0 !== valids[0] && void 0 !== valids[0].alternation) return !1;\n var prevMatch = selection.begin <= pos - 1 ? valids[pos - 1] && !0 === valids[pos - 1].match.static && valids[pos - 1] : valids[pos - 1], nextMatch = selection.end > pos + 1 ? valids[pos + 1] && !0 === valids[pos + 1].match.static && valids[pos + 1] : valids[pos + 1];\n return prevMatch && nextMatch;\n }\n var offset = 0, begin = void 0 !== pos.begin ? pos.begin : pos, end = void 0 !== pos.end ? pos.end : pos;\n if (pos.begin > pos.end && (begin = pos.end, end = pos.begin), validatedPos = void 0 !== validatedPos ? validatedPos : begin, \n begin !== end || opts.insertMode && void 0 !== maskset.validPositions[validatedPos] && void 0 === fromIsValid || void 0 === validTest) {\n var positionsClone = $.extend(!0, {}, maskset.validPositions), lvp = getLastValidPosition(void 0, !0), i;\n for (maskset.p = begin, i = lvp; begin <= i; i--) delete maskset.validPositions[i], \n void 0 === validTest && delete maskset.tests[i + 1];\n var valid = !0, j = validatedPos, posMatch = j, t, canMatch;\n for (validTest && (maskset.validPositions[validatedPos] = $.extend(!0, {}, validTest), \n posMatch++, j++), i = validTest ? end : end - 1; i <= lvp; i++) {\n if (void 0 !== (t = positionsClone[i]) && !0 !== t.generatedInput && (end <= i || begin <= i && IsEnclosedStatic(i, positionsClone, {\n begin: begin,\n end: end\n }))) {\n for (;\"\" !== getTest(posMatch).match.def; ) {\n if (!1 !== (canMatch = positionCanMatchDefinition(posMatch, t, opts)) || \"+\" === t.match.def) {\n \"+\" === t.match.def && getBuffer(!0);\n var result = isValid(posMatch, t.input, \"+\" !== t.match.def, \"+\" !== t.match.def);\n if (valid = !1 !== result, j = (result.pos || posMatch) + 1, !valid && canMatch) break;\n } else valid = !1;\n if (valid) {\n void 0 === validTest && t.match.static && i === pos.begin && offset++;\n break;\n }\n if (!valid && posMatch > maskset.maskLength) break;\n posMatch++;\n }\n \"\" == getTest(posMatch).match.def && (valid = !1), posMatch = j;\n }\n if (!valid) break;\n }\n if (!valid) return maskset.validPositions = $.extend(!0, {}, positionsClone), resetMaskSet(!0), \n !1;\n } else validTest && getTest(validatedPos).match.cd === validTest.match.cd && (maskset.validPositions[validatedPos] = $.extend(!0, {}, validTest));\n return resetMaskSet(!0), offset;\n }\n function isMask(pos, strict, fuzzy) {\n var test = getTestTemplate(pos).match;\n if (\"\" === test.def && (test = getTest(pos).match), !0 !== test.static) return test.fn;\n if (!0 === fuzzy && void 0 !== maskset.validPositions[pos] && !0 !== maskset.validPositions[pos].generatedInput) return !0;\n if (!0 !== strict && -1 < pos) {\n if (fuzzy) {\n var tests = getTests(pos);\n return tests.length > 1 + (\"\" === tests[tests.length - 1].match.def ? 1 : 0);\n }\n var testTemplate = determineTestTemplate(pos, getTests(pos)), testPlaceHolder = getPlaceholder(pos, testTemplate.match);\n return testTemplate.match.def !== testPlaceHolder;\n }\n return !1;\n }\n function seekNext(pos, newBlock, fuzzy) {\n void 0 === fuzzy && (fuzzy = !0);\n for (var position = pos + 1; \"\" !== getTest(position).match.def && (!0 === newBlock && (!0 !== getTest(position).match.newBlockMarker || !isMask(position, void 0, !0)) || !0 !== newBlock && !isMask(position, void 0, fuzzy)); ) position++;\n return position;\n }\n function seekPrevious(pos, newBlock) {\n var position = pos, tests;\n if (position <= 0) return 0;\n for (;0 < --position && (!0 === newBlock && !0 !== getTest(position).match.newBlockMarker || !0 !== newBlock && !isMask(position, void 0, !0) && (tests = getTests(position), \n tests.length < 2 || 2 === tests.length && \"\" === tests[1].match.def)); ) ;\n return position;\n }\n function writeBuffer(input, buffer, caretPos, event, triggerEvents) {\n if (event && $.isFunction(opts.onBeforeWrite)) {\n var result = opts.onBeforeWrite.call(inputmask, event, buffer, caretPos, opts);\n if (result) {\n if (result.refreshFromBuffer) {\n var refresh = result.refreshFromBuffer;\n refreshFromBuffer(!0 === refresh ? refresh : refresh.start, refresh.end, result.buffer || buffer), \n buffer = getBuffer(!0);\n }\n void 0 !== caretPos && (caretPos = void 0 !== result.caret ? result.caret : caretPos);\n }\n }\n if (void 0 !== input && (input.inputmask._valueSet(buffer.join(\"\")), void 0 === caretPos || void 0 !== event && \"blur\" === event.type || caret(input, caretPos, void 0, void 0, void 0 !== event && \"keydown\" === event.type && (event.keyCode === keyCode.DELETE || event.keyCode === keyCode.BACKSPACE)), \n !0 === triggerEvents)) {\n var $input = $(input), nptVal = input.inputmask._valueGet();\n skipInputEvent = !0, $input.trigger(\"input\"), setTimeout(function() {\n nptVal === getBufferTemplate().join(\"\") ? $input.trigger(\"cleared\") : !0 === isComplete(buffer) && $input.trigger(\"complete\");\n }, 0);\n }\n }\n function getPlaceholder(pos, test, returnPL) {\n if (test = test || getTest(pos).match, void 0 !== test.placeholder || !0 === returnPL) return $.isFunction(test.placeholder) ? test.placeholder(opts) : test.placeholder;\n if (!0 !== test.static) return opts.placeholder.charAt(pos % opts.placeholder.length);\n if (-1 < pos && void 0 === maskset.validPositions[pos]) {\n var tests = getTests(pos), staticAlternations = [], prevTest;\n if (tests.length > 1 + (\"\" === tests[tests.length - 1].match.def ? 1 : 0)) for (var i = 0; i < tests.length; i++) if (\"\" !== tests[i].match.def && !0 !== tests[i].match.optionality && !0 !== tests[i].match.optionalQuantifier && (!0 === tests[i].match.static || void 0 === prevTest || !1 !== tests[i].match.fn.test(prevTest.match.def, maskset, pos, !0, opts)) && (staticAlternations.push(tests[i]), \n !0 === tests[i].match.static && (prevTest = tests[i]), 1 < staticAlternations.length && /[0-9a-bA-Z]/.test(staticAlternations[0].match.def))) return opts.placeholder.charAt(pos % opts.placeholder.length);\n }\n return test.def;\n }\n function HandleNativePlaceholder(npt, value) {\n if (ie) {\n if (npt.inputmask._valueGet() !== value && (npt.placeholder !== value || \"\" === npt.placeholder)) {\n var buffer = getBuffer().slice(), nptValue = npt.inputmask._valueGet();\n if (nptValue !== value) {\n var lvp = getLastValidPosition();\n -1 === lvp && nptValue === getBufferTemplate().join(\"\") ? buffer = [] : -1 !== lvp && clearOptionalTail(buffer), \n writeBuffer(npt, buffer);\n }\n }\n } else npt.placeholder !== value && (npt.placeholder = value, \"\" === npt.placeholder && npt.removeAttribute(\"placeholder\"));\n }\n function determineNewCaretPosition(selectedCaret, tabbed) {\n function doRadixFocus(clickPos) {\n if (\"\" !== opts.radixPoint && 0 !== opts.digits) {\n var vps = maskset.validPositions;\n if (void 0 === vps[clickPos] || vps[clickPos].input === getPlaceholder(clickPos)) {\n if (clickPos < seekNext(-1)) return !0;\n var radixPos = $.inArray(opts.radixPoint, getBuffer());\n if (-1 !== radixPos) {\n for (var vp in vps) if (vps[vp] && radixPos < vp && vps[vp].input !== getPlaceholder(vp)) return !1;\n return !0;\n }\n }\n }\n return !1;\n }\n if (tabbed && (isRTL ? selectedCaret.end = selectedCaret.begin : selectedCaret.begin = selectedCaret.end), \n selectedCaret.begin === selectedCaret.end) {\n switch (opts.positionCaretOnClick) {\n case \"none\":\n break;\n\n case \"select\":\n selectedCaret = {\n begin: 0,\n end: getBuffer().length\n };\n break;\n\n case \"ignore\":\n selectedCaret.end = selectedCaret.begin = seekNext(getLastValidPosition());\n break;\n\n case \"radixFocus\":\n if (doRadixFocus(selectedCaret.begin)) {\n var radixPos = getBuffer().join(\"\").indexOf(opts.radixPoint);\n selectedCaret.end = selectedCaret.begin = opts.numericInput ? seekNext(radixPos) : radixPos;\n break;\n }\n\n default:\n var clickPosition = selectedCaret.begin, lvclickPosition = getLastValidPosition(clickPosition, !0), lastPosition = seekNext(-1 !== lvclickPosition || isMask(0) ? lvclickPosition : 0);\n if (clickPosition < lastPosition) selectedCaret.end = selectedCaret.begin = isMask(clickPosition, !0) || isMask(clickPosition - 1, !0) ? clickPosition : seekNext(clickPosition); else {\n var lvp = maskset.validPositions[lvclickPosition], tt = getTestTemplate(lastPosition, lvp ? lvp.match.locator : void 0, lvp), placeholder = getPlaceholder(lastPosition, tt.match);\n if (\"\" !== placeholder && getBuffer()[lastPosition] !== placeholder && !0 !== tt.match.optionalQuantifier && !0 !== tt.match.newBlockMarker || !isMask(lastPosition, opts.keepStatic) && tt.match.def === placeholder) {\n var newPos = seekNext(lastPosition);\n (newPos <= clickPosition || clickPosition === lastPosition) && (lastPosition = newPos);\n }\n selectedCaret.end = selectedCaret.begin = lastPosition;\n }\n }\n return selectedCaret;\n }\n }\n var EventRuler = {\n on: function on(input, eventName, eventHandler) {\n var ev = function ev(e) {\n e.originalEvent && (e = e.originalEvent || e, arguments[0] = e);\n var that = this, args;\n if (void 0 === that.inputmask && \"FORM\" !== this.nodeName) {\n var imOpts = $.data(that, \"_inputmask_opts\");\n imOpts ? new Inputmask(imOpts).mask(that) : EventRuler.off(that);\n } else {\n if (\"setvalue\" === e.type || \"FORM\" === this.nodeName || !(that.disabled || that.readOnly && !(\"keydown\" === e.type && e.ctrlKey && 67 === e.keyCode || !1 === opts.tabThrough && e.keyCode === keyCode.TAB))) {\n switch (e.type) {\n case \"input\":\n if (!0 === skipInputEvent || e.inputType && \"insertCompositionText\" === e.inputType) return skipInputEvent = !1, \n e.preventDefault();\n break;\n\n case \"keydown\":\n skipKeyPressEvent = !1, skipInputEvent = !1;\n break;\n\n case \"keypress\":\n if (!0 === skipKeyPressEvent) return e.preventDefault();\n skipKeyPressEvent = !0;\n break;\n\n case \"click\":\n case \"focus\":\n return validationEvent ? (validationEvent = !1, input.blur(), HandleNativePlaceholder(input, (isRTL ? getBufferTemplate().slice().reverse() : getBufferTemplate()).join(\"\")), \n setTimeout(function() {\n input.focus();\n }, 3e3)) : (args = arguments, setTimeout(function() {\n input.inputmask && eventHandler.apply(that, args);\n }, 0)), !1;\n }\n var returnVal = eventHandler.apply(that, arguments);\n return !1 === returnVal && (e.preventDefault(), e.stopPropagation()), returnVal;\n }\n e.preventDefault();\n }\n };\n input.inputmask.events[eventName] = input.inputmask.events[eventName] || [], input.inputmask.events[eventName].push(ev), \n -1 !== $.inArray(eventName, [ \"submit\", \"reset\" ]) ? null !== input.form && $(input.form).on(eventName, ev) : $(input).on(eventName, ev);\n },\n off: function off(input, event) {\n var events;\n input.inputmask && input.inputmask.events && (event ? (events = [], events[event] = input.inputmask.events[event]) : events = input.inputmask.events, \n $.each(events, function(eventName, evArr) {\n for (;0 < evArr.length; ) {\n var ev = evArr.pop();\n -1 !== $.inArray(eventName, [ \"submit\", \"reset\" ]) ? null !== input.form && $(input.form).off(eventName, ev) : $(input).off(eventName, ev);\n }\n delete input.inputmask.events[eventName];\n }));\n }\n }, EventHandlers = {\n keydownEvent: function keydownEvent(e) {\n var input = this, $input = $(input), k = e.keyCode, pos = caret(input), kdResult = opts.onKeyDown.call(this, e, getBuffer(), pos, opts);\n if (void 0 !== kdResult) return kdResult;\n if (k === keyCode.BACKSPACE || k === keyCode.DELETE || iphone && k === keyCode.BACKSPACE_SAFARI || e.ctrlKey && k === keyCode.X && !(\"oncut\" in input)) e.preventDefault(), \n handleRemove(input, k, pos), writeBuffer(input, getBuffer(!0), maskset.p, e, input.inputmask._valueGet() !== getBuffer().join(\"\")); else if (k === keyCode.END || k === keyCode.PAGE_DOWN) {\n e.preventDefault();\n var caretPos = seekNext(getLastValidPosition());\n caret(input, e.shiftKey ? pos.begin : caretPos, caretPos, !0);\n } else k === keyCode.HOME && !e.shiftKey || k === keyCode.PAGE_UP ? (e.preventDefault(), \n caret(input, 0, e.shiftKey ? pos.begin : 0, !0)) : (opts.undoOnEscape && k === keyCode.ESCAPE || 90 === k && e.ctrlKey) && !0 !== e.altKey ? (checkVal(input, !0, !1, undoValue.split(\"\")), \n $input.trigger(\"click\")) : !0 === opts.tabThrough && k === keyCode.TAB ? (!0 === e.shiftKey ? (!0 === getTest(pos.begin).match.static && (pos.begin = seekNext(pos.begin)), \n pos.end = seekPrevious(pos.begin, !0), pos.begin = seekPrevious(pos.end, !0)) : (pos.begin = seekNext(pos.begin, !0), \n pos.end = seekNext(pos.begin, !0), pos.end < maskset.maskLength && pos.end--), pos.begin < maskset.maskLength && (e.preventDefault(), \n caret(input, pos.begin, pos.end))) : e.shiftKey || opts.insertModeVisual && !1 === opts.insertMode && (k === keyCode.RIGHT ? setTimeout(function() {\n var caretPos = caret(input);\n caret(input, caretPos.begin);\n }, 0) : k === keyCode.LEFT && setTimeout(function() {\n var caretPos_begin = translatePosition(input.inputmask.caretPos.begin), caretPos_end = translatePosition(input.inputmask.caretPos.end);\n caret(input, isRTL ? caretPos_begin + (caretPos_begin === maskset.maskLength ? 0 : 1) : caretPos_begin - (0 === caretPos_begin ? 0 : 1));\n }, 0));\n ignorable = -1 !== $.inArray(k, opts.ignorables);\n },\n keypressEvent: function keypressEvent(e, checkval, writeOut, strict, ndx) {\n var input = this, $input = $(input), k = e.which || e.charCode || e.keyCode;\n if (!(!0 === checkval || e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || ignorable)) return k === keyCode.ENTER && undoValue !== getBuffer().join(\"\") && (undoValue = getBuffer().join(\"\"), \n setTimeout(function() {\n $input.trigger(\"change\");\n }, 0)), skipInputEvent = !0, !0;\n if (k) {\n 44 !== k && 46 !== k || 3 !== e.location || \"\" === opts.radixPoint || (k = opts.radixPoint.charCodeAt(0));\n var pos = checkval ? {\n begin: ndx,\n end: ndx\n } : caret(input), forwardPosition, c = String.fromCharCode(k);\n maskset.writeOutBuffer = !0;\n var valResult = isValid(pos, c, strict);\n if (!1 !== valResult && (resetMaskSet(!0), forwardPosition = void 0 !== valResult.caret ? valResult.caret : seekNext(valResult.pos.begin ? valResult.pos.begin : valResult.pos), \n maskset.p = forwardPosition), forwardPosition = opts.numericInput && void 0 === valResult.caret ? seekPrevious(forwardPosition) : forwardPosition, \n !1 !== writeOut && (setTimeout(function() {\n opts.onKeyValidation.call(input, k, valResult);\n }, 0), maskset.writeOutBuffer && !1 !== valResult)) {\n var buffer = getBuffer();\n writeBuffer(input, buffer, forwardPosition, e, !0 !== checkval);\n }\n if (e.preventDefault(), checkval) return !1 !== valResult && (valResult.forwardPosition = forwardPosition), \n valResult;\n }\n },\n pasteEvent: function pasteEvent(e) {\n var input = this, inputValue = this.inputmask._valueGet(!0), caretPos = caret(this), tempValue;\n isRTL && (tempValue = caretPos.end, caretPos.end = caretPos.begin, caretPos.begin = tempValue);\n var valueBeforeCaret = inputValue.substr(0, caretPos.begin), valueAfterCaret = inputValue.substr(caretPos.end, inputValue.length);\n if (valueBeforeCaret == (isRTL ? getBufferTemplate().slice().reverse() : getBufferTemplate()).slice(0, caretPos.begin).join(\"\") && (valueBeforeCaret = \"\"), \n valueAfterCaret == (isRTL ? getBufferTemplate().slice().reverse() : getBufferTemplate()).slice(caretPos.end).join(\"\") && (valueAfterCaret = \"\"), \n window.clipboardData && window.clipboardData.getData) inputValue = valueBeforeCaret + window.clipboardData.getData(\"Text\") + valueAfterCaret; else {\n if (!e.clipboardData || !e.clipboardData.getData) return !0;\n inputValue = valueBeforeCaret + e.clipboardData.getData(\"text/plain\") + valueAfterCaret;\n }\n var pasteValue = inputValue;\n if ($.isFunction(opts.onBeforePaste)) {\n if (pasteValue = opts.onBeforePaste.call(inputmask, inputValue, opts), !1 === pasteValue) return e.preventDefault();\n pasteValue = pasteValue || inputValue;\n }\n return checkVal(this, !1, !1, pasteValue.toString().split(\"\")), writeBuffer(this, getBuffer(), seekNext(getLastValidPosition()), e, undoValue !== getBuffer().join(\"\")), \n e.preventDefault();\n },\n inputFallBackEvent: function inputFallBackEvent(e) {\n function ieMobileHandler(input, inputValue, caretPos) {\n if (iemobile) {\n var inputChar = inputValue.replace(getBuffer().join(\"\"), \"\");\n if (1 === inputChar.length) {\n var iv = inputValue.split(\"\");\n iv.splice(caretPos.begin, 0, inputChar), inputValue = iv.join(\"\");\n }\n }\n return inputValue;\n }\n function analyseChanges(inputValue, buffer, caretPos) {\n for (var frontPart = inputValue.substr(0, caretPos.begin).split(\"\"), backPart = inputValue.substr(caretPos.begin).split(\"\"), frontBufferPart = buffer.substr(0, caretPos.begin).split(\"\"), backBufferPart = buffer.substr(caretPos.begin).split(\"\"), fpl = frontPart.length >= frontBufferPart.length ? frontPart.length : frontBufferPart.length, bpl = backPart.length >= backBufferPart.length ? backPart.length : backBufferPart.length, bl, i, action = \"\", data = [], marker = \"~\", placeholder; frontPart.length < fpl; ) frontPart.push(\"~\");\n for (;frontBufferPart.length < fpl; ) frontBufferPart.push(\"~\");\n for (;backPart.length < bpl; ) backPart.unshift(\"~\");\n for (;backBufferPart.length < bpl; ) backBufferPart.unshift(\"~\");\n var newBuffer = frontPart.concat(backPart), oldBuffer = frontBufferPart.concat(backBufferPart);\n for (i = 0, bl = newBuffer.length; i < bl; i++) switch (placeholder = getPlaceholder(translatePosition(i)), \n action) {\n case \"insertText\":\n oldBuffer[i - 1] === newBuffer[i] && caretPos.begin == newBuffer.length - 1 && data.push(newBuffer[i]), \n i = bl;\n break;\n\n case \"insertReplacementText\":\n \"~\" === newBuffer[i] ? caretPos.end++ : i = bl;\n break;\n\n case \"deleteContentBackward\":\n \"~\" === newBuffer[i] ? caretPos.end++ : i = bl;\n break;\n\n default:\n newBuffer[i] !== oldBuffer[i] && (\"~\" !== newBuffer[i + 1] && newBuffer[i + 1] !== placeholder && void 0 !== newBuffer[i + 1] || (oldBuffer[i] !== placeholder || \"~\" !== oldBuffer[i + 1]) && \"~\" !== oldBuffer[i] ? \"~\" === oldBuffer[i + 1] && oldBuffer[i] === newBuffer[i + 1] ? (action = \"insertText\", \n data.push(newBuffer[i]), caretPos.begin--, caretPos.end--) : newBuffer[i] !== placeholder && \"~\" !== newBuffer[i] && (\"~\" === newBuffer[i + 1] || oldBuffer[i] !== newBuffer[i] && oldBuffer[i + 1] === newBuffer[i + 1]) ? (action = \"insertReplacementText\", \n data.push(newBuffer[i]), caretPos.begin--) : \"~\" === newBuffer[i] ? (action = \"deleteContentBackward\", \n !isMask(translatePosition(i), !0) && oldBuffer[i] !== opts.radixPoint || caretPos.end++) : i = bl : (action = \"insertText\", \n data.push(newBuffer[i]), caretPos.begin--, caretPos.end--));\n break;\n }\n return {\n action: action,\n data: data,\n caret: caretPos\n };\n }\n var input = this, inputValue = input.inputmask._valueGet(!0), buffer = (isRTL ? getBuffer().slice().reverse() : getBuffer()).join(\"\"), caretPos = caret(input, void 0, void 0, !0);\n if (buffer !== inputValue) {\n inputValue = ieMobileHandler(input, inputValue, caretPos);\n var changes = analyseChanges(inputValue, buffer, caretPos);\n switch ((input.inputmask.shadowRoot || document).activeElement !== input && input.focus(), \n writeBuffer(input, getBuffer()), caret(input, caretPos.begin, caretPos.end, !0), \n changes.action) {\n case \"insertText\":\n case \"insertReplacementText\":\n $.each(changes.data, function(ndx, entry) {\n var keypress = new $.Event(\"keypress\");\n keypress.which = entry.charCodeAt(0), ignorable = !1, EventHandlers.keypressEvent.call(input, keypress);\n }), setTimeout(function() {\n $el.trigger(\"keyup\");\n }, 0);\n break;\n\n case \"deleteContentBackward\":\n var keydown = new $.Event(\"keydown\");\n keydown.keyCode = keyCode.BACKSPACE, EventHandlers.keydownEvent.call(input, keydown);\n break;\n\n default:\n applyInputValue(input, inputValue);\n break;\n }\n e.preventDefault();\n }\n },\n compositionendEvent: function compositionendEvent(e) {\n $el.trigger(\"input\");\n },\n setValueEvent: function setValueEvent(e, argument_1, argument_2) {\n var input = this, value = e && e.detail ? e.detail[0] : argument_1;\n void 0 === value && (value = this.inputmask._valueGet(!0)), applyInputValue(this, value), \n (e.detail && void 0 !== e.detail[1] || void 0 !== argument_2) && caret(this, e.detail ? e.detail[1] : argument_2);\n },\n focusEvent: function focusEvent(e) {\n var input = this, nptValue = this.inputmask._valueGet();\n opts.showMaskOnFocus && nptValue !== getBuffer().join(\"\") && writeBuffer(this, getBuffer(), seekNext(getLastValidPosition())), \n !0 !== opts.positionCaretOnTab || !1 !== mouseEnter || isComplete(getBuffer()) && -1 !== getLastValidPosition() || EventHandlers.clickEvent.apply(this, [ e, !0 ]), \n undoValue = getBuffer().join(\"\");\n },\n invalidEvent: function invalidEvent(e) {\n validationEvent = !0;\n },\n mouseleaveEvent: function mouseleaveEvent() {\n var input = this;\n mouseEnter = !1, opts.clearMaskOnLostFocus && (this.inputmask.shadowRoot || document).activeElement !== this && HandleNativePlaceholder(this, originalPlaceholder);\n },\n clickEvent: function clickEvent(e, tabbed) {\n var input = this;\n if ((this.inputmask.shadowRoot || document).activeElement === this) {\n var newCaretPosition = determineNewCaretPosition(caret(this), tabbed);\n void 0 !== newCaretPosition && caret(this, newCaretPosition);\n }\n },\n cutEvent: function cutEvent(e) {\n var input = this, pos = caret(this), clipboardData = window.clipboardData || e.clipboardData, clipData = isRTL ? getBuffer().slice(pos.end, pos.begin) : getBuffer().slice(pos.begin, pos.end);\n clipboardData.setData(\"text\", isRTL ? clipData.reverse().join(\"\") : clipData.join(\"\")), \n document.execCommand && document.execCommand(\"copy\"), handleRemove(this, keyCode.DELETE, pos), \n writeBuffer(this, getBuffer(), maskset.p, e, undoValue !== getBuffer().join(\"\"));\n },\n blurEvent: function blurEvent(e) {\n var $input = $(this), input = this;\n if (this.inputmask) {\n HandleNativePlaceholder(this, originalPlaceholder);\n var nptValue = this.inputmask._valueGet(), buffer = getBuffer().slice();\n \"\" !== nptValue && (opts.clearMaskOnLostFocus && (-1 === getLastValidPosition() && nptValue === getBufferTemplate().join(\"\") ? buffer = [] : clearOptionalTail(buffer)), \n !1 === isComplete(buffer) && (setTimeout(function() {\n $input.trigger(\"incomplete\");\n }, 0), opts.clearIncomplete && (resetMaskSet(), buffer = opts.clearMaskOnLostFocus ? [] : getBufferTemplate().slice())), \n writeBuffer(this, buffer, void 0, e)), undoValue !== getBuffer().join(\"\") && (undoValue = getBuffer().join(\"\"), \n $input.trigger(\"change\"));\n }\n },\n mouseenterEvent: function mouseenterEvent() {\n var input = this;\n mouseEnter = !0, (this.inputmask.shadowRoot || document).activeElement !== this && (null == originalPlaceholder && this.placeholder !== originalPlaceholder && (originalPlaceholder = this.placeholder), \n opts.showMaskOnHover && HandleNativePlaceholder(this, (isRTL ? getBufferTemplate().slice().reverse() : getBufferTemplate()).join(\"\")));\n },\n submitEvent: function submitEvent() {\n undoValue !== getBuffer().join(\"\") && $el.trigger(\"change\"), opts.clearMaskOnLostFocus && -1 === getLastValidPosition() && el.inputmask._valueGet && el.inputmask._valueGet() === getBufferTemplate().join(\"\") && el.inputmask._valueSet(\"\"), \n opts.clearIncomplete && !1 === isComplete(getBuffer()) && el.inputmask._valueSet(\"\"), \n opts.removeMaskOnSubmit && (el.inputmask._valueSet(el.inputmask.unmaskedvalue(), !0), \n setTimeout(function() {\n writeBuffer(el, getBuffer());\n }, 0));\n },\n resetEvent: function resetEvent() {\n el.inputmask.refreshValue = !0, setTimeout(function() {\n applyInputValue(el, el.inputmask._valueGet(!0));\n }, 0);\n }\n }, valueBuffer;\n function checkVal(input, writeOut, strict, nptvl, initiatingEvent) {\n var inputmask = this || input.inputmask, inputValue = nptvl.slice(), charCodes = \"\", initialNdx = -1, result = void 0;\n function isTemplateMatch(ndx, charCodes) {\n for (var targetTemplate = getMaskTemplate(!0, 0).slice(ndx, seekNext(ndx)).join(\"\").replace(/'/g, \"\"), charCodeNdx = targetTemplate.indexOf(charCodes); 0 < charCodeNdx && \" \" === targetTemplate[charCodeNdx - 1]; ) charCodeNdx--;\n var match = 0 === charCodeNdx && !isMask(ndx) && (getTest(ndx).match.nativeDef === charCodes.charAt(0) || !0 === getTest(ndx).match.static && getTest(ndx).match.nativeDef === \"'\" + charCodes.charAt(0) || \" \" === getTest(ndx).match.nativeDef && (getTest(ndx + 1).match.nativeDef === charCodes.charAt(0) || !0 === getTest(ndx + 1).match.static && getTest(ndx + 1).match.nativeDef === \"'\" + charCodes.charAt(0)));\n if (!match && 0 < charCodeNdx && !isMask(ndx, !1, !0)) {\n var nextPos = seekNext(ndx);\n inputmask.caretPos.begin < nextPos && (inputmask.caretPos = {\n begin: nextPos\n });\n }\n return match;\n }\n resetMaskSet(), maskset.tests = {}, initialNdx = opts.radixPoint ? determineNewCaretPosition({\n begin: 0,\n end: 0\n }).begin : 0, maskset.p = initialNdx, inputmask.caretPos = {\n begin: initialNdx\n };\n var staticMatches = [], prevCaretPos = inputmask.caretPos;\n if ($.each(inputValue, function(ndx, charCode) {\n if (void 0 !== charCode) if (void 0 === maskset.validPositions[ndx] && inputValue[ndx] === getPlaceholder(ndx) && isMask(ndx, !0) && !1 === isValid(ndx, inputValue[ndx], !0, void 0, void 0, !0)) maskset.p++; else {\n var keypress = new $.Event(\"_checkval\");\n keypress.which = charCode.toString().charCodeAt(0), charCodes += charCode;\n var lvp = getLastValidPosition(void 0, !0);\n isTemplateMatch(initialNdx, charCodes) ? result = EventHandlers.keypressEvent.call(input, keypress, !0, !1, strict, lvp + 1) : (result = EventHandlers.keypressEvent.call(input, keypress, !0, !1, strict, inputmask.caretPos.begin), \n result && (initialNdx = inputmask.caretPos.begin + 1, charCodes = \"\")), result ? (void 0 !== result.pos && maskset.validPositions[result.pos] && !0 === maskset.validPositions[result.pos].match.static && void 0 === maskset.validPositions[result.pos].alternation && (staticMatches.push(result.pos), \n isRTL || (result.forwardPosition = result.pos + 1)), writeBuffer(void 0, getBuffer(), result.forwardPosition, keypress, !1), \n inputmask.caretPos = {\n begin: result.forwardPosition,\n end: result.forwardPosition\n }, prevCaretPos = inputmask.caretPos) : inputmask.caretPos = prevCaretPos;\n }\n }), 0 < staticMatches.length) {\n var sndx, validPos, nextValid = seekNext(-1, void 0, !1);\n if (!isComplete(getBuffer()) && staticMatches.length <= nextValid || isComplete(getBuffer()) && 0 < staticMatches.length && staticMatches.length !== nextValid && 0 === staticMatches[0]) for (var nextSndx = nextValid; void 0 !== (sndx = staticMatches.shift()); ) {\n var keypress = new $.Event(\"_checkval\");\n if (validPos = maskset.validPositions[sndx], validPos.generatedInput = !0, keypress.which = validPos.input.charCodeAt(0), \n result = EventHandlers.keypressEvent.call(input, keypress, !0, !1, strict, nextSndx), \n result && void 0 !== result.pos && result.pos !== sndx && maskset.validPositions[result.pos] && !0 === maskset.validPositions[result.pos].match.static) staticMatches.push(result.pos); else if (!result) break;\n nextSndx++;\n } else for (;sndx = staticMatches.pop(); ) validPos = maskset.validPositions[sndx], \n validPos && (validPos.generatedInput = !0);\n }\n if (writeOut) for (var vndx in writeBuffer(input, getBuffer(), result ? result.forwardPosition : void 0, initiatingEvent || new $.Event(\"checkval\"), initiatingEvent && \"input\" === initiatingEvent.type), \n maskset.validPositions) !0 !== maskset.validPositions[vndx].match.generated && delete maskset.validPositions[vndx].generatedInput;\n }\n function unmaskedvalue(input) {\n if (input) {\n if (void 0 === input.inputmask) return input.value;\n input.inputmask && input.inputmask.refreshValue && applyInputValue(input, input.inputmask._valueGet(!0));\n }\n var umValue = [], vps = maskset.validPositions;\n for (var pndx in vps) vps[pndx] && vps[pndx].match && (1 != vps[pndx].match.static || !0 !== vps[pndx].generatedInput) && umValue.push(vps[pndx].input);\n var unmaskedValue = 0 === umValue.length ? \"\" : (isRTL ? umValue.reverse() : umValue).join(\"\");\n if ($.isFunction(opts.onUnMask)) {\n var bufferValue = (isRTL ? getBuffer().slice().reverse() : getBuffer()).join(\"\");\n unmaskedValue = opts.onUnMask.call(inputmask, bufferValue, unmaskedValue, opts);\n }\n return unmaskedValue;\n }\n function translatePosition(pos) {\n return !isRTL || \"number\" != typeof pos || opts.greedy && \"\" === opts.placeholder || !el || (pos = el.inputmask._valueGet().length - pos), \n pos;\n }\n function caret(input, begin, end, notranslate, isDelete) {\n var range;\n if (void 0 === begin) return \"selectionStart\" in input && \"selectionEnd\" in input ? (begin = input.selectionStart, \n end = input.selectionEnd) : window.getSelection ? (range = window.getSelection().getRangeAt(0), \n range.commonAncestorContainer.parentNode !== input && range.commonAncestorContainer !== input || (begin = range.startOffset, \n end = range.endOffset)) : document.selection && document.selection.createRange && (range = document.selection.createRange(), \n begin = 0 - range.duplicate().moveStart(\"character\", -input.inputmask._valueGet().length), \n end = begin + range.text.length), {\n begin: notranslate ? begin : translatePosition(begin),\n end: notranslate ? end : translatePosition(end)\n };\n if ($.isArray(begin) && (end = isRTL ? begin[0] : begin[1], begin = isRTL ? begin[1] : begin[0]), \n void 0 !== begin.begin && (end = isRTL ? begin.begin : begin.end, begin = isRTL ? begin.end : begin.begin), \n \"number\" == typeof begin) {\n begin = notranslate ? begin : translatePosition(begin), end = notranslate ? end : translatePosition(end), \n end = \"number\" == typeof end ? end : begin;\n var scrollCalc = parseInt(((input.ownerDocument.defaultView || window).getComputedStyle ? (input.ownerDocument.defaultView || window).getComputedStyle(input, null) : input.currentStyle).fontSize) * end;\n if (input.scrollLeft = scrollCalc > input.scrollWidth ? scrollCalc : 0, input.inputmask.caretPos = {\n begin: begin,\n end: end\n }, opts.insertModeVisual && !1 === opts.insertMode && begin === end && (isDelete || end++), \n input === (input.inputmask.shadowRoot || document).activeElement) if (\"setSelectionRange\" in input) input.setSelectionRange(begin, end); else if (window.getSelection) {\n if (range = document.createRange(), void 0 === input.firstChild || null === input.firstChild) {\n var textNode = document.createTextNode(\"\");\n input.appendChild(textNode);\n }\n range.setStart(input.firstChild, begin < input.inputmask._valueGet().length ? begin : input.inputmask._valueGet().length), \n range.setEnd(input.firstChild, end < input.inputmask._valueGet().length ? end : input.inputmask._valueGet().length), \n range.collapse(!0);\n var sel = window.getSelection();\n sel.removeAllRanges(), sel.addRange(range);\n } else input.createTextRange && (range = input.createTextRange(), range.collapse(!0), \n range.moveEnd(\"character\", end), range.moveStart(\"character\", begin), range.select());\n }\n }\n function determineLastRequiredPosition(returnDefinition) {\n var buffer = getMaskTemplate(!0, getLastValidPosition(), !0, !0), bl = buffer.length, pos, lvp = getLastValidPosition(), positions = {}, lvTest = maskset.validPositions[lvp], ndxIntlzr = void 0 !== lvTest ? lvTest.locator.slice() : void 0, testPos;\n for (pos = lvp + 1; pos < buffer.length; pos++) testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), \n ndxIntlzr = testPos.locator.slice(), positions[pos] = $.extend(!0, {}, testPos);\n var lvTestAlt = lvTest && void 0 !== lvTest.alternation ? lvTest.locator[lvTest.alternation] : void 0;\n for (pos = bl - 1; lvp < pos && (testPos = positions[pos], (testPos.match.optionality || testPos.match.optionalQuantifier && testPos.match.newBlockMarker || lvTestAlt && (lvTestAlt !== positions[pos].locator[lvTest.alternation] && 1 != testPos.match.static || !0 === testPos.match.static && testPos.locator[lvTest.alternation] && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(\",\"), lvTestAlt.toString().split(\",\")) && \"\" !== getTests(pos)[0].def)) && buffer[pos] === getPlaceholder(pos, testPos.match)); pos--) bl--;\n return returnDefinition ? {\n l: bl,\n def: positions[bl] ? positions[bl].match : void 0\n } : bl;\n }\n function clearOptionalTail(buffer) {\n buffer.length = 0;\n for (var template = getMaskTemplate(!0, 0, !0, void 0, !0), lmnt; void 0 !== (lmnt = template.shift()); ) buffer.push(lmnt);\n return buffer;\n }\n function isComplete(buffer) {\n if ($.isFunction(opts.isComplete)) return opts.isComplete(buffer, opts);\n if (\"*\" !== opts.repeat) {\n var complete = !1, lrp = determineLastRequiredPosition(!0), aml = seekPrevious(lrp.l);\n if (void 0 === lrp.def || lrp.def.newBlockMarker || lrp.def.optionality || lrp.def.optionalQuantifier) {\n complete = !0;\n for (var i = 0; i <= aml; i++) {\n var test = getTestTemplate(i).match;\n if (!0 !== test.static && void 0 === maskset.validPositions[i] && !0 !== test.optionality && !0 !== test.optionalQuantifier || !0 === test.static && buffer[i] !== getPlaceholder(i, test)) {\n complete = !1;\n break;\n }\n }\n }\n return complete;\n }\n }\n function handleRemove(input, k, pos, strict, fromIsValid) {\n if ((opts.numericInput || isRTL) && (k === keyCode.BACKSPACE ? k = keyCode.DELETE : k === keyCode.DELETE && (k = keyCode.BACKSPACE), \n isRTL)) {\n var pend = pos.end;\n pos.end = pos.begin, pos.begin = pend;\n }\n var lvp = getLastValidPosition(void 0, !0), offset;\n if (pos.end >= getBuffer().length && lvp >= pos.end && (pos.end = lvp + 1), k === keyCode.BACKSPACE ? pos.end - pos.begin < 1 && (pos.begin = seekPrevious(pos.begin)) : k === keyCode.DELETE && pos.begin === pos.end && (pos.end = isMask(pos.end, !0, !0) ? pos.end + 1 : seekNext(pos.end) + 1), \n !1 !== (offset = revalidateMask(pos))) {\n if (!0 !== strict && !1 !== opts.keepStatic || null !== opts.regex && -1 !== getTest(pos.begin).match.def.indexOf(\"|\")) {\n var result = alternate(!0);\n if (result) {\n var newPos = void 0 !== result.caret ? result.caret : result.pos ? seekNext(result.pos.begin ? result.pos.begin : result.pos) : getLastValidPosition(-1, !0);\n (k !== keyCode.DELETE || pos.begin > newPos) && pos.begin;\n }\n }\n !0 !== strict && (maskset.p = k === keyCode.DELETE ? pos.begin + offset : pos.begin);\n }\n }\n function applyInputValue(input, value) {\n input.inputmask.refreshValue = !1, $.isFunction(opts.onBeforeMask) && (value = opts.onBeforeMask.call(inputmask, value, opts) || value), \n value = value.toString().split(\"\"), checkVal(input, !0, !1, value), undoValue = getBuffer().join(\"\"), \n (opts.clearMaskOnLostFocus || opts.clearIncomplete) && input.inputmask._valueGet() === getBufferTemplate().join(\"\") && -1 === getLastValidPosition() && input.inputmask._valueSet(\"\");\n }\n function mask(elem) {\n function isElementTypeSupported(input, opts) {\n function patchValueProperty(npt) {\n var valueGet, valueSet;\n function patchValhook(type) {\n if ($.valHooks && (void 0 === $.valHooks[type] || !0 !== $.valHooks[type].inputmaskpatch)) {\n var valhookGet = $.valHooks[type] && $.valHooks[type].get ? $.valHooks[type].get : function(elem) {\n return elem.value;\n }, valhookSet = $.valHooks[type] && $.valHooks[type].set ? $.valHooks[type].set : function(elem, value) {\n return elem.value = value, elem;\n };\n $.valHooks[type] = {\n get: function get(elem) {\n if (elem.inputmask) {\n if (elem.inputmask.opts.autoUnmask) return elem.inputmask.unmaskedvalue();\n var result = valhookGet(elem);\n return -1 !== getLastValidPosition(void 0, void 0, elem.inputmask.maskset.validPositions) || !0 !== opts.nullable ? result : \"\";\n }\n return valhookGet(elem);\n },\n set: function set(elem, value) {\n var result = valhookSet(elem, value);\n return elem.inputmask && applyInputValue(elem, value), result;\n },\n inputmaskpatch: !0\n };\n }\n }\n function getter() {\n return this.inputmask ? this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : -1 !== getLastValidPosition() || !0 !== opts.nullable ? (this.inputmask.shadowRoot || document.activeElement) === this && opts.clearMaskOnLostFocus ? (isRTL ? clearOptionalTail(getBuffer().slice()).reverse() : clearOptionalTail(getBuffer().slice())).join(\"\") : valueGet.call(this) : \"\" : valueGet.call(this);\n }\n function setter(value) {\n valueSet.call(this, value), this.inputmask && applyInputValue(this, value);\n }\n function installNativeValueSetFallback(npt) {\n EventRuler.on(npt, \"mouseenter\", function() {\n var input = this, value = this.inputmask._valueGet(!0);\n value !== (isRTL ? getBuffer().reverse() : getBuffer()).join(\"\") && applyInputValue(this, value);\n });\n }\n if (!npt.inputmask.__valueGet) {\n if (!0 !== opts.noValuePatching) {\n if (Object.getOwnPropertyDescriptor) {\n \"function\" != typeof Object.getPrototypeOf && (Object.getPrototypeOf = \"object\" === _typeof(\"test\".__proto__) ? function(object) {\n return object.__proto__;\n } : function(object) {\n return object.constructor.prototype;\n });\n var valueProperty = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt), \"value\") : void 0;\n valueProperty && valueProperty.get && valueProperty.set ? (valueGet = valueProperty.get, \n valueSet = valueProperty.set, Object.defineProperty(npt, \"value\", {\n get: getter,\n set: setter,\n configurable: !0\n })) : \"input\" !== npt.tagName.toLowerCase() && (valueGet = function valueGet() {\n return this.textContent;\n }, valueSet = function valueSet(value) {\n this.textContent = value;\n }, Object.defineProperty(npt, \"value\", {\n get: getter,\n set: setter,\n configurable: !0\n }));\n } else document.__lookupGetter__ && npt.__lookupGetter__(\"value\") && (valueGet = npt.__lookupGetter__(\"value\"), \n valueSet = npt.__lookupSetter__(\"value\"), npt.__defineGetter__(\"value\", getter), \n npt.__defineSetter__(\"value\", setter));\n npt.inputmask.__valueGet = valueGet, npt.inputmask.__valueSet = valueSet;\n }\n npt.inputmask._valueGet = function(overruleRTL) {\n return isRTL && !0 !== overruleRTL ? valueGet.call(this.el).split(\"\").reverse().join(\"\") : valueGet.call(this.el);\n }, npt.inputmask._valueSet = function(value, overruleRTL) {\n valueSet.call(this.el, null == value ? \"\" : !0 !== overruleRTL && isRTL ? value.split(\"\").reverse().join(\"\") : value);\n }, void 0 === valueGet && (valueGet = function valueGet() {\n return this.value;\n }, valueSet = function valueSet(value) {\n this.value = value;\n }, patchValhook(npt.type), installNativeValueSetFallback(npt));\n }\n }\n \"textarea\" !== input.tagName.toLowerCase() && opts.ignorables.push(keyCode.ENTER);\n var elementType = input.getAttribute(\"type\"), isSupported = \"input\" === input.tagName.toLowerCase() && -1 !== $.inArray(elementType, opts.supportsInputType) || input.isContentEditable || \"textarea\" === input.tagName.toLowerCase();\n if (!isSupported) if (\"input\" === input.tagName.toLowerCase()) {\n var el = document.createElement(\"input\");\n el.setAttribute(\"type\", elementType), isSupported = \"text\" === el.type, el = null;\n } else isSupported = \"partial\";\n return !1 !== isSupported ? patchValueProperty(input) : input.inputmask = void 0, \n isSupported;\n }\n EventRuler.off(elem);\n var isSupported = isElementTypeSupported(elem, opts);\n if (!1 !== isSupported) {\n el = elem, $el = $(el), originalPlaceholder = el.placeholder, maxLength = void 0 !== el ? el.maxLength : void 0, \n -1 === maxLength && (maxLength = void 0), \"inputMode\" in el && null === el.getAttribute(\"inputmode\") && (el.inputMode = opts.inputmode, \n el.setAttribute(\"inputmode\", opts.inputmode)), !0 === isSupported && (opts.showMaskOnFocus = opts.showMaskOnFocus && -1 === [ \"cc-number\", \"cc-exp\" ].indexOf(el.autocomplete), \n iphone && (opts.insertModeVisual = !1), EventRuler.on(el, \"submit\", EventHandlers.submitEvent), \n EventRuler.on(el, \"reset\", EventHandlers.resetEvent), EventRuler.on(el, \"blur\", EventHandlers.blurEvent), \n EventRuler.on(el, \"focus\", EventHandlers.focusEvent), EventRuler.on(el, \"invalid\", EventHandlers.invalidEvent), \n EventRuler.on(el, \"click\", EventHandlers.clickEvent), EventRuler.on(el, \"mouseleave\", EventHandlers.mouseleaveEvent), \n EventRuler.on(el, \"mouseenter\", EventHandlers.mouseenterEvent), EventRuler.on(el, \"paste\", EventHandlers.pasteEvent), \n EventRuler.on(el, \"cut\", EventHandlers.cutEvent), EventRuler.on(el, \"complete\", opts.oncomplete), \n EventRuler.on(el, \"incomplete\", opts.onincomplete), EventRuler.on(el, \"cleared\", opts.oncleared), \n mobile || !0 === opts.inputEventOnly ? el.removeAttribute(\"maxLength\") : (EventRuler.on(el, \"keydown\", EventHandlers.keydownEvent), \n EventRuler.on(el, \"keypress\", EventHandlers.keypressEvent)), EventRuler.on(el, \"input\", EventHandlers.inputFallBackEvent), \n EventRuler.on(el, \"compositionend\", EventHandlers.compositionendEvent)), EventRuler.on(el, \"setvalue\", EventHandlers.setValueEvent), \n undoValue = getBufferTemplate().join(\"\");\n var activeElement = (el.inputmask.shadowRoot || document).activeElement;\n if (\"\" !== el.inputmask._valueGet(!0) || !1 === opts.clearMaskOnLostFocus || activeElement === el) {\n applyInputValue(el, el.inputmask._valueGet(!0), opts);\n var buffer = getBuffer().slice();\n !1 === isComplete(buffer) && opts.clearIncomplete && resetMaskSet(), opts.clearMaskOnLostFocus && activeElement !== el && (-1 === getLastValidPosition() ? buffer = [] : clearOptionalTail(buffer)), \n (!1 === opts.clearMaskOnLostFocus || opts.showMaskOnFocus && activeElement === el || \"\" !== el.inputmask._valueGet(!0)) && writeBuffer(el, buffer), \n activeElement === el && caret(el, seekNext(getLastValidPosition()));\n }\n }\n }\n if (void 0 !== actionObj) switch (actionObj.action) {\n case \"isComplete\":\n return el = actionObj.el, isComplete(getBuffer());\n\n case \"unmaskedvalue\":\n return void 0 !== el && void 0 === actionObj.value || (valueBuffer = actionObj.value, \n valueBuffer = ($.isFunction(opts.onBeforeMask) && opts.onBeforeMask.call(inputmask, valueBuffer, opts) || valueBuffer).split(\"\"), \n checkVal.call(this, void 0, !1, !1, valueBuffer), $.isFunction(opts.onBeforeWrite) && opts.onBeforeWrite.call(inputmask, void 0, getBuffer(), 0, opts)), \n unmaskedvalue(el);\n\n case \"mask\":\n mask(el);\n break;\n\n case \"format\":\n return valueBuffer = ($.isFunction(opts.onBeforeMask) && opts.onBeforeMask.call(inputmask, actionObj.value, opts) || actionObj.value).split(\"\"), \n checkVal.call(this, void 0, !0, !1, valueBuffer), actionObj.metadata ? {\n value: isRTL ? getBuffer().slice().reverse().join(\"\") : getBuffer().join(\"\"),\n metadata: maskScope.call(this, {\n action: \"getmetadata\"\n }, maskset, opts)\n } : isRTL ? getBuffer().slice().reverse().join(\"\") : getBuffer().join(\"\");\n\n case \"isValid\":\n actionObj.value ? (valueBuffer = ($.isFunction(opts.onBeforeMask) && opts.onBeforeMask.call(inputmask, actionObj.value, opts) || actionObj.value).split(\"\"), \n checkVal.call(this, void 0, !0, !1, valueBuffer)) : actionObj.value = isRTL ? getBuffer().slice().reverse().join(\"\") : getBuffer().join(\"\");\n for (var buffer = getBuffer(), rl = determineLastRequiredPosition(), lmib = buffer.length - 1; rl < lmib && !isMask(lmib); lmib--) ;\n return buffer.splice(rl, lmib + 1 - rl), isComplete(buffer) && actionObj.value === (isRTL ? getBuffer().slice().reverse().join(\"\") : getBuffer().join(\"\"));\n\n case \"getemptymask\":\n return getBufferTemplate().join(\"\");\n\n case \"remove\":\n if (el && el.inputmask) {\n $.data(el, \"_inputmask_opts\", null), $el = $(el);\n var cv = opts.autoUnmask ? unmaskedvalue(el) : el.inputmask._valueGet(opts.autoUnmask), valueProperty;\n cv !== getBufferTemplate().join(\"\") ? el.inputmask._valueSet(cv, opts.autoUnmask) : el.inputmask._valueSet(\"\"), \n EventRuler.off(el), Object.getOwnPropertyDescriptor && Object.getPrototypeOf ? (valueProperty = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(el), \"value\"), \n valueProperty && el.inputmask.__valueGet && Object.defineProperty(el, \"value\", {\n get: el.inputmask.__valueGet,\n set: el.inputmask.__valueSet,\n configurable: !0\n })) : document.__lookupGetter__ && el.__lookupGetter__(\"value\") && el.inputmask.__valueGet && (el.__defineGetter__(\"value\", el.inputmask.__valueGet), \n el.__defineSetter__(\"value\", el.inputmask.__valueSet)), el.inputmask = void 0;\n }\n return el;\n\n case \"getmetadata\":\n if ($.isArray(maskset.metadata)) {\n var maskTarget = getMaskTemplate(!0, 0, !1).join(\"\");\n return $.each(maskset.metadata, function(ndx, mtdt) {\n if (mtdt.mask === maskTarget) return maskTarget = mtdt, !1;\n }), maskTarget;\n }\n return maskset.metadata;\n }\n };\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function _typeof(obj) {\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function _typeof(obj) {\n return typeof obj;\n } : function _typeof(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n }\n var Inputmask = __webpack_require__(1), $ = Inputmask.dependencyLib, keyCode = __webpack_require__(0), formatCode = {\n d: [ \"[1-9]|[12][0-9]|3[01]\", Date.prototype.setDate, \"day\", Date.prototype.getDate ],\n dd: [ \"0[1-9]|[12][0-9]|3[01]\", Date.prototype.setDate, \"day\", function() {\n return pad(Date.prototype.getDate.call(this), 2);\n } ],\n ddd: [ \"\" ],\n dddd: [ \"\" ],\n m: [ \"[1-9]|1[012]\", Date.prototype.setMonth, \"month\", function() {\n return Date.prototype.getMonth.call(this) + 1;\n } ],\n mm: [ \"0[1-9]|1[012]\", Date.prototype.setMonth, \"month\", function() {\n return pad(Date.prototype.getMonth.call(this) + 1, 2);\n } ],\n mmm: [ \"\" ],\n mmmm: [ \"\" ],\n yy: [ \"[0-9]{2}\", Date.prototype.setFullYear, \"year\", function() {\n return pad(Date.prototype.getFullYear.call(this), 2);\n } ],\n yyyy: [ \"[0-9]{4}\", Date.prototype.setFullYear, \"year\", function() {\n return pad(Date.prototype.getFullYear.call(this), 4);\n } ],\n h: [ \"[1-9]|1[0-2]\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n hh: [ \"0[1-9]|1[0-2]\", Date.prototype.setHours, \"hours\", function() {\n return pad(Date.prototype.getHours.call(this), 2);\n } ],\n hx: [ function(x) {\n return \"[0-9]{\".concat(x, \"}\");\n }, Date.prototype.setHours, \"hours\", function(x) {\n return Date.prototype.getHours;\n } ],\n H: [ \"1?[0-9]|2[0-3]\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n HH: [ \"0[0-9]|1[0-9]|2[0-3]\", Date.prototype.setHours, \"hours\", function() {\n return pad(Date.prototype.getHours.call(this), 2);\n } ],\n Hx: [ function(x) {\n return \"[0-9]{\".concat(x, \"}\");\n }, Date.prototype.setHours, \"hours\", function(x) {\n return function() {\n return pad(Date.prototype.getHours.call(this), x);\n };\n } ],\n M: [ \"[1-5]?[0-9]\", Date.prototype.setMinutes, \"minutes\", Date.prototype.getMinutes ],\n MM: [ \"0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]\", Date.prototype.setMinutes, \"minutes\", function() {\n return pad(Date.prototype.getMinutes.call(this), 2);\n } ],\n s: [ \"[1-5]?[0-9]\", Date.prototype.setSeconds, \"seconds\", Date.prototype.getSeconds ],\n ss: [ \"0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]\", Date.prototype.setSeconds, \"seconds\", function() {\n return pad(Date.prototype.getSeconds.call(this), 2);\n } ],\n l: [ \"[0-9]{3}\", Date.prototype.setMilliseconds, \"milliseconds\", function() {\n return pad(Date.prototype.getMilliseconds.call(this), 3);\n } ],\n L: [ \"[0-9]{2}\", Date.prototype.setMilliseconds, \"milliseconds\", function() {\n return pad(Date.prototype.getMilliseconds.call(this), 2);\n } ],\n t: [ \"[ap]\" ],\n tt: [ \"[ap]m\" ],\n T: [ \"[AP]\" ],\n TT: [ \"[AP]M\" ],\n Z: [ \"\" ],\n o: [ \"\" ],\n S: [ \"\" ]\n }, formatAlias = {\n isoDate: \"yyyy-mm-dd\",\n isoTime: \"HH:MM:ss\",\n isoDateTime: \"yyyy-mm-dd'T'HH:MM:ss\",\n isoUtcDateTime: \"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'\"\n };\n function formatcode(match) {\n var dynMatches = new RegExp(\"\\\\d+$\").exec(match[0]);\n if (dynMatches && void 0 !== dynMatches[0]) {\n var fcode = formatCode[match[0][0] + \"x\"].slice(\"\");\n return fcode[0] = fcode[0](dynMatches[0]), fcode[3] = fcode[3](dynMatches[0]), fcode;\n }\n if (formatCode[match[0]]) return formatCode[match[0]];\n }\n function getTokenizer(opts) {\n if (!opts.tokenizer) {\n var tokens = [], dyntokens = [];\n for (var ndx in formatCode) if (/\\.*x$/.test(ndx)) {\n var dynToken = ndx[0] + \"\\\\d+\";\n -1 === dyntokens.indexOf(dynToken) && dyntokens.push(dynToken);\n } else -1 === tokens.indexOf(ndx[0]) && tokens.push(ndx[0]);\n opts.tokenizer = \"(\" + (0 < dyntokens.length ? dyntokens.join(\"|\") + \"|\" : \"\") + tokens.join(\"+|\") + \")+?|.\", \n opts.tokenizer = new RegExp(opts.tokenizer, \"g\");\n }\n return opts.tokenizer;\n }\n function isValidDate(dateParts, currentResult) {\n return (!isFinite(dateParts.rawday) || \"29\" == dateParts.day && !isFinite(dateParts.rawyear) || new Date(dateParts.date.getFullYear(), isFinite(dateParts.rawmonth) ? dateParts.month : dateParts.date.getMonth() + 1, 0).getDate() >= dateParts.day) && currentResult;\n }\n function isDateInRange(dateParts, opts) {\n var result = !0;\n if (opts.min) {\n if (dateParts.rawyear) {\n var rawYear = dateParts.rawyear.replace(/[^0-9]/g, \"\"), minYear = opts.min.year.substr(0, rawYear.length);\n result = minYear <= rawYear;\n }\n dateParts.year === dateParts.rawyear && opts.min.date.getTime() == opts.min.date.getTime() && (result = opts.min.date.getTime() <= dateParts.date.getTime());\n }\n return result && opts.max && opts.max.date.getTime() == opts.max.date.getTime() && (result = opts.max.date.getTime() >= dateParts.date.getTime()), \n result;\n }\n function parse(format, dateObjValue, opts, raw) {\n var mask = \"\", match, fcode;\n for (getTokenizer(opts).lastIndex = 0; match = getTokenizer(opts).exec(format); ) if (void 0 === dateObjValue) if (fcode = formatcode(match)) mask += \"(\" + fcode[0] + \")\"; else switch (match[0]) {\n case \"[\":\n mask += \"(\";\n break;\n\n case \"]\":\n mask += \")?\";\n break;\n\n default:\n mask += Inputmask.escapeRegex(match[0]);\n } else if (fcode = formatcode(match)) if (!0 !== raw && fcode[3]) {\n var getFn = fcode[3];\n mask += getFn.call(dateObjValue.date);\n } else fcode[2] ? mask += dateObjValue[\"raw\" + fcode[2]] : mask += match[0]; else mask += match[0];\n return mask;\n }\n function pad(val, len) {\n for (val = String(val), len = len || 2; val.length < len; ) val = \"0\" + val;\n return val;\n }\n function analyseMask(maskString, format, opts) {\n var dateObj = {\n date: new Date(1, 0, 1)\n }, targetProp, mask = maskString, match, dateOperation;\n function extendProperty(value) {\n var correctedValue = value.replace(/[^0-9]/g, \"0\");\n return correctedValue;\n }\n function setValue(dateObj, value, opts) {\n dateObj[targetProp] = extendProperty(value), dateObj[\"raw\" + targetProp] = value, \n void 0 !== dateOperation && dateOperation.call(dateObj.date, \"month\" == targetProp ? parseInt(dateObj[targetProp]) - 1 : dateObj[targetProp]);\n }\n if (\"string\" == typeof mask) {\n for (getTokenizer(opts).lastIndex = 0; match = getTokenizer(opts).exec(format); ) {\n var value = mask.slice(0, match[0].length);\n formatCode.hasOwnProperty(match[0]) && (targetProp = formatCode[match[0]][2], dateOperation = formatCode[match[0]][1], \n setValue(dateObj, value, opts)), mask = mask.slice(value.length);\n }\n return dateObj;\n }\n if (mask && \"object\" === _typeof(mask) && mask.hasOwnProperty(\"date\")) return mask;\n }\n function importDate(dateObj, opts) {\n var match, date = \"\";\n for (getTokenizer(opts).lastIndex = 0; match = getTokenizer(opts).exec(opts.inputFormat); ) \"d\" === match[0].charAt(0) ? date += pad(dateObj.getDate(), match[0].length) : \"m\" === match[0].charAt(0) ? date += pad(dateObj.getMonth() + 1, match[0].length) : \"yyyy\" === match[0] ? date += dateObj.getFullYear().toString() : \"y\" === match[0].charAt(0) && (date += pad(dateObj.getYear(), match[0].length));\n return date;\n }\n function getTokenMatch(pos, opts) {\n var calcPos = 0, targetMatch, match, matchLength = 0;\n for (getTokenizer(opts).lastIndex = 0; match = getTokenizer(opts).exec(opts.inputFormat); ) {\n var dynMatches = new RegExp(\"\\\\d+$\").exec(match[0]);\n if (matchLength = dynMatches ? parseInt(dynMatches[0]) : match[0].length, calcPos += matchLength, \n pos <= calcPos) {\n targetMatch = match, match = getTokenizer(opts).exec(opts.inputFormat);\n break;\n }\n }\n return {\n targetMatchIndex: calcPos - matchLength,\n nextMatch: match,\n targetMatch: targetMatch\n };\n }\n Inputmask.extendAliases({\n datetime: {\n mask: function mask(opts) {\n return opts.numericInput = !1, formatCode.S = opts.i18n.ordinalSuffix.join(\"|\"), \n opts.inputFormat = formatAlias[opts.inputFormat] || opts.inputFormat, opts.displayFormat = formatAlias[opts.displayFormat] || opts.displayFormat || opts.inputFormat, \n opts.outputFormat = formatAlias[opts.outputFormat] || opts.outputFormat || opts.inputFormat, \n opts.placeholder = \"\" !== opts.placeholder ? opts.placeholder : opts.inputFormat.replace(/[[\\]]/, \"\"), \n opts.regex = parse(opts.inputFormat, void 0, opts), opts.min = analyseMask(opts.min, opts.inputFormat, opts), \n opts.max = analyseMask(opts.max, opts.inputFormat, opts), null;\n },\n placeholder: \"\",\n inputFormat: \"isoDateTime\",\n displayFormat: void 0,\n outputFormat: void 0,\n min: null,\n max: null,\n skipOptionalPartCharacter: \"\",\n i18n: {\n dayNames: [ \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\" ],\n monthNames: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\", \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n ordinalSuffix: [ \"st\", \"nd\", \"rd\", \"th\" ]\n },\n preValidation: function preValidation(buffer, pos, c, isSelection, opts, maskset, caretPos, strict) {\n if (strict) return !0;\n if (isNaN(c) && buffer[pos] !== c) {\n var tokenMatch = getTokenMatch(pos, opts);\n if (tokenMatch.nextMatch && tokenMatch.nextMatch[0] === c && 1 < tokenMatch.targetMatch[0].length) {\n var validator = formatCode[tokenMatch.targetMatch[0]][0];\n if (new RegExp(validator).test(\"0\" + buffer[pos - 1])) return buffer[pos] = buffer[pos - 1], \n buffer[pos - 1] = \"0\", {\n fuzzy: !0,\n buffer: buffer,\n refreshFromBuffer: {\n start: pos - 1,\n end: pos + 1\n },\n pos: pos + 1\n };\n }\n }\n return !0;\n },\n postValidation: function postValidation(buffer, pos, c, currentResult, opts, maskset, strict) {\n if (strict) return !0;\n var tokenMatch, validator;\n if (!1 === currentResult) return tokenMatch = getTokenMatch(pos + 1, opts), tokenMatch.targetMatch && tokenMatch.targetMatchIndex === pos && 1 < tokenMatch.targetMatch[0].length && void 0 !== formatCode[tokenMatch.targetMatch[0]] && (validator = formatCode[tokenMatch.targetMatch[0]][0], \n new RegExp(validator).test(\"0\" + c)) ? {\n insert: [ {\n pos: pos,\n c: \"0\"\n }, {\n pos: pos + 1,\n c: c\n } ],\n pos: pos + 1\n } : currentResult;\n if (currentResult.fuzzy && (buffer = currentResult.buffer, pos = currentResult.pos), \n tokenMatch = getTokenMatch(pos, opts), tokenMatch.targetMatch && tokenMatch.targetMatch[0] && void 0 !== formatCode[tokenMatch.targetMatch[0]]) {\n validator = formatCode[tokenMatch.targetMatch[0]][0];\n var part = buffer.slice(tokenMatch.targetMatchIndex, tokenMatch.targetMatchIndex + tokenMatch.targetMatch[0].length);\n !1 === new RegExp(validator).test(part.join(\"\")) && 2 === tokenMatch.targetMatch[0].length && maskset.validPositions[tokenMatch.targetMatchIndex] && maskset.validPositions[tokenMatch.targetMatchIndex + 1] && (maskset.validPositions[tokenMatch.targetMatchIndex + 1].input = \"0\");\n }\n var result = currentResult, dateParts = analyseMask(buffer.join(\"\"), opts.inputFormat, opts);\n return result && dateParts.date.getTime() == dateParts.date.getTime() && (result = isValidDate(dateParts, result), \n result = result && isDateInRange(dateParts, opts)), pos && result && currentResult.pos !== pos ? {\n buffer: parse(opts.inputFormat, dateParts, opts).split(\"\"),\n refreshFromBuffer: {\n start: pos,\n end: currentResult.pos\n }\n } : result;\n },\n onKeyDown: function onKeyDown(e, buffer, caretPos, opts) {\n var input = this;\n e.ctrlKey && e.keyCode === keyCode.RIGHT && (this.inputmask._valueSet(importDate(new Date(), opts)), \n $(this).trigger(\"setvalue\"));\n },\n onUnMask: function onUnMask(maskedValue, unmaskedValue, opts) {\n return unmaskedValue ? parse(opts.outputFormat, analyseMask(maskedValue, opts.inputFormat, opts), opts, !0) : unmaskedValue;\n },\n casing: function casing(elem, test, pos, validPositions) {\n return 0 == test.nativeDef.indexOf(\"[ap]\") ? elem.toLowerCase() : 0 == test.nativeDef.indexOf(\"[AP]\") ? elem.toUpperCase() : elem;\n },\n onBeforeMask: function onBeforeMask(initialValue, opts) {\n return \"[object Date]\" === Object.prototype.toString.call(initialValue) && (initialValue = importDate(initialValue, opts)), \n initialValue;\n },\n insertMode: !1,\n shiftPositions: !1,\n keepStatic: !1,\n inputmode: \"numeric\"\n }\n }), module.exports = Inputmask;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n var Inputmask = __webpack_require__(1), $ = Inputmask.dependencyLib, keyCode = __webpack_require__(0);\n function autoEscape(txt, opts) {\n for (var escapedTxt = \"\", i = 0; i < txt.length; i++) Inputmask.prototype.definitions[txt.charAt(i)] || opts.definitions[txt.charAt(i)] || opts.optionalmarker[0] === txt.charAt(i) || opts.optionalmarker[1] === txt.charAt(i) || opts.quantifiermarker[0] === txt.charAt(i) || opts.quantifiermarker[1] === txt.charAt(i) || opts.groupmarker[0] === txt.charAt(i) || opts.groupmarker[1] === txt.charAt(i) || opts.alternatormarker === txt.charAt(i) ? escapedTxt += \"\\\\\" + txt.charAt(i) : escapedTxt += txt.charAt(i);\n return escapedTxt;\n }\n function alignDigits(buffer, digits, opts, force) {\n if (0 < buffer.length && 0 < digits && (!opts.digitsOptional || force)) {\n var radixPosition = $.inArray(opts.radixPoint, buffer);\n -1 === radixPosition && (buffer.push(opts.radixPoint), radixPosition = buffer.length - 1);\n for (var i = 1; i <= digits; i++) isFinite(buffer[radixPosition + i]) || (buffer[radixPosition + i] = \"0\");\n }\n return buffer;\n }\n function findValidator(symbol, maskset) {\n var posNdx = 0;\n if (\"+\" === symbol) {\n for (posNdx in maskset.validPositions) ;\n posNdx = parseInt(posNdx);\n }\n for (var tstNdx in maskset.tests) if (tstNdx = parseInt(tstNdx), posNdx <= tstNdx) for (var ndx = 0, ndxl = maskset.tests[tstNdx].length; ndx < ndxl; ndx++) if ((void 0 === maskset.validPositions[tstNdx] || \"-\" === symbol) && maskset.tests[tstNdx][ndx].match.def === symbol) return tstNdx + (void 0 !== maskset.validPositions[tstNdx] && \"-\" !== symbol ? 1 : 0);\n return posNdx;\n }\n function findValid(symbol, maskset) {\n var ret = -1;\n return $.each(maskset.validPositions, function(ndx, tst) {\n if (tst && tst.match.def === symbol) return ret = parseInt(ndx), !1;\n }), ret;\n }\n function parseMinMaxOptions(opts) {\n void 0 === opts.parseMinMaxOptions && (null !== opts.min && (opts.min = opts.min.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n \",\" === opts.radixPoint && (opts.min = opts.min.replace(opts.radixPoint, \".\")), \n opts.min = isFinite(opts.min) ? parseFloat(opts.min) : NaN, isNaN(opts.min) && (opts.min = Number.MIN_VALUE)), \n null !== opts.max && (opts.max = opts.max.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n \",\" === opts.radixPoint && (opts.max = opts.max.replace(opts.radixPoint, \".\")), \n opts.max = isFinite(opts.max) ? parseFloat(opts.max) : NaN, isNaN(opts.max) && (opts.max = Number.MAX_VALUE)), \n opts.parseMinMaxOptions = \"done\");\n }\n function genMask(opts) {\n opts.repeat = 0, opts.groupSeparator === opts.radixPoint && opts.digits && \"0\" !== opts.digits && (\".\" === opts.radixPoint ? opts.groupSeparator = \",\" : \",\" === opts.radixPoint ? opts.groupSeparator = \".\" : opts.groupSeparator = \"\"), \n \" \" === opts.groupSeparator && (opts.skipOptionalPartCharacter = void 0), 1 < opts.placeholder.length && (opts.placeholder = opts.placeholder.charAt(0)), \n \"radixFocus\" === opts.positionCaretOnClick && \"\" === opts.placeholder && (opts.positionCaretOnClick = \"lvp\");\n var decimalDef = \"0\", radixPointDef = opts.radixPoint;\n !0 === opts.numericInput && void 0 === opts.__financeInput ? (decimalDef = \"1\", \n opts.positionCaretOnClick = \"radixFocus\" === opts.positionCaretOnClick ? \"lvp\" : opts.positionCaretOnClick, \n opts.digitsOptional = !1, isNaN(opts.digits) && (opts.digits = 2), opts._radixDance = !1, \n radixPointDef = \",\" === opts.radixPoint ? \"?\" : \"!\", \"\" !== opts.radixPoint && void 0 === opts.definitions[radixPointDef] && (opts.definitions[radixPointDef] = {}, \n opts.definitions[radixPointDef].validator = \"[\" + opts.radixPoint + \"]\", opts.definitions[radixPointDef].placeholder = opts.radixPoint, \n opts.definitions[radixPointDef].static = !0, opts.definitions[radixPointDef].generated = !0)) : (opts.__financeInput = !1, \n opts.numericInput = !0);\n var mask = \"[+]\", altMask;\n if (mask += autoEscape(opts.prefix, opts), \"\" !== opts.groupSeparator ? (void 0 === opts.definitions[opts.groupSeparator] && (opts.definitions[opts.groupSeparator] = {}, \n opts.definitions[opts.groupSeparator].validator = \"[\" + opts.groupSeparator + \"]\", \n opts.definitions[opts.groupSeparator].placeholder = opts.groupSeparator, opts.definitions[opts.groupSeparator].static = !0, \n opts.definitions[opts.groupSeparator].generated = !0), mask += opts._mask(opts)) : mask += \"9{+}\", \n void 0 !== opts.digits && 0 !== opts.digits) {\n var dq = opts.digits.toString().split(\",\");\n isFinite(dq[0]) && dq[1] && isFinite(dq[1]) ? mask += radixPointDef + decimalDef + \"{\" + opts.digits + \"}\" : (isNaN(opts.digits) || 0 < parseInt(opts.digits)) && (opts.digitsOptional ? (altMask = mask + radixPointDef + decimalDef + \"{0,\" + opts.digits + \"}\", \n opts.keepStatic = !0) : mask += radixPointDef + decimalDef + \"{\" + opts.digits + \"}\");\n }\n return mask += autoEscape(opts.suffix, opts), mask += \"[-]\", altMask && (mask = [ altMask + autoEscape(opts.suffix, opts) + \"[-]\", mask ]), \n opts.greedy = !1, parseMinMaxOptions(opts), mask;\n }\n function hanndleRadixDance(pos, c, radixPos, maskset, opts) {\n return opts._radixDance && opts.numericInput && c !== opts.negationSymbol.back && pos <= radixPos && (0 < radixPos || c == opts.radixPoint) && (void 0 === maskset.validPositions[pos - 1] || maskset.validPositions[pos - 1].input !== opts.negationSymbol.back) && (pos -= 1), \n pos;\n }\n function decimalValidator(chrs, maskset, pos, strict, opts) {\n var radixPos = maskset.buffer ? maskset.buffer.indexOf(opts.radixPoint) : -1, result = -1 !== radixPos && new RegExp(\"[0-9\\uff11-\\uff19]\").test(chrs);\n return opts._radixDance && result && null == maskset.validPositions[radixPos] ? {\n insert: {\n pos: radixPos === pos ? radixPos + 1 : radixPos,\n c: opts.radixPoint\n },\n pos: pos\n } : result;\n }\n function checkForLeadingZeroes(buffer, opts) {\n var numberMatches = new RegExp(\"(^\" + (\"\" !== opts.negationSymbol.front ? Inputmask.escapeRegex(opts.negationSymbol.front) + \"?\" : \"\") + Inputmask.escapeRegex(opts.prefix) + \")(.*)(\" + Inputmask.escapeRegex(opts.suffix) + (\"\" != opts.negationSymbol.back ? Inputmask.escapeRegex(opts.negationSymbol.back) + \"?\" : \"\") + \"$)\").exec(buffer.slice().reverse().join(\"\")), number = numberMatches ? numberMatches[2] : \"\", leadingzeroes = !1;\n return number && (number = number.split(opts.radixPoint.charAt(0))[0], leadingzeroes = new RegExp(\"^[0\" + opts.groupSeparator + \"]*\").exec(number)), \n !(!leadingzeroes || !(1 < leadingzeroes[0].length || 0 < leadingzeroes[0].length && leadingzeroes[0].length < number.length)) && leadingzeroes;\n }\n Inputmask.extendAliases({\n numeric: {\n mask: genMask,\n _mask: function _mask(opts) {\n return \"(\" + opts.groupSeparator + \"999){+|1}\";\n },\n digits: \"*\",\n digitsOptional: !0,\n enforceDigitsOnBlur: !1,\n radixPoint: \".\",\n positionCaretOnClick: \"radixFocus\",\n _radixDance: !0,\n groupSeparator: \"\",\n allowMinus: !0,\n negationSymbol: {\n front: \"-\",\n back: \"\"\n },\n prefix: \"\",\n suffix: \"\",\n min: null,\n max: null,\n step: 1,\n unmaskAsNumber: !1,\n roundingFN: Math.round,\n inputmode: \"numeric\",\n shortcuts: {\n k: \"000\",\n m: \"000000\"\n },\n placeholder: \"0\",\n greedy: !1,\n rightAlign: !0,\n insertMode: !0,\n autoUnmask: !1,\n skipOptionalPartCharacter: \"\",\n definitions: {\n 0: {\n validator: decimalValidator\n },\n 1: {\n validator: decimalValidator,\n definitionSymbol: \"9\"\n },\n \"+\": {\n validator: function validator(chrs, maskset, pos, strict, opts) {\n return opts.allowMinus && (\"-\" === chrs || chrs === opts.negationSymbol.front);\n }\n },\n \"-\": {\n validator: function validator(chrs, maskset, pos, strict, opts) {\n return opts.allowMinus && chrs === opts.negationSymbol.back;\n }\n }\n },\n preValidation: function preValidation(buffer, pos, c, isSelection, opts, maskset, caretPos, strict) {\n if (!1 !== opts.__financeInput && c === opts.radixPoint) return !1;\n var pattern;\n if (pattern = opts.shortcuts && opts.shortcuts[c]) {\n if (1 < pattern.length) for (var inserts = [], i = 0; i < pattern.length; i++) inserts.push({\n pos: pos + i,\n c: pattern[i],\n strict: !1\n });\n return {\n insert: inserts\n };\n }\n var radixPos = $.inArray(opts.radixPoint, buffer), initPos = pos;\n if (pos = hanndleRadixDance(pos, c, radixPos, maskset, opts), \"-\" === c || c === opts.negationSymbol.front) {\n if (!0 !== opts.allowMinus) return !1;\n var isNegative = !1, front = findValid(\"+\", maskset), back = findValid(\"-\", maskset);\n return -1 !== front && (isNegative = [ front, back ]), !1 !== isNegative ? {\n remove: isNegative,\n caret: initPos\n } : {\n insert: [ {\n pos: findValidator(\"+\", maskset),\n c: opts.negationSymbol.front,\n fromIsValid: !0\n }, {\n pos: findValidator(\"-\", maskset),\n c: opts.negationSymbol.back,\n fromIsValid: void 0\n } ],\n caret: initPos + opts.negationSymbol.back.length\n };\n }\n if (strict) return !0;\n if (-1 !== radixPos && !0 === opts._radixDance && !1 === isSelection && c === opts.radixPoint && void 0 !== opts.digits && (isNaN(opts.digits) || 0 < parseInt(opts.digits)) && radixPos !== pos) return {\n caret: opts._radixDance && pos === radixPos - 1 ? radixPos + 1 : radixPos\n };\n if (!1 === opts.__financeInput) if (isSelection) {\n if (opts.digitsOptional) return {\n rewritePosition: caretPos.end\n };\n if (!opts.digitsOptional) {\n if (caretPos.begin > radixPos && caretPos.end <= radixPos) return c === opts.radixPoint ? {\n insert: {\n pos: radixPos + 1,\n c: \"0\",\n fromIsValid: !0\n },\n rewritePosition: radixPos\n } : {\n rewritePosition: radixPos + 1\n };\n if (caretPos.begin < radixPos) return {\n rewritePosition: caretPos.begin - 1\n };\n }\n } else if (!opts.showMaskOnHover && !opts.showMaskOnFocus && !opts.digitsOptional && 0 < opts.digits && \"\" === this.inputmask.__valueGet.call(this)) return {\n rewritePosition: radixPos\n };\n return {\n rewritePosition: pos\n };\n },\n postValidation: function postValidation(buffer, pos, c, currentResult, opts, maskset, strict) {\n if (!1 === currentResult) return currentResult;\n if (strict) return !0;\n if (null !== opts.min || null !== opts.max) {\n var unmasked = opts.onUnMask(buffer.slice().reverse().join(\"\"), void 0, $.extend({}, opts, {\n unmaskAsNumber: !0\n }));\n if (null !== opts.min && unmasked < opts.min && (unmasked.toString().length >= opts.min.toString().length || unmasked < 0)) return !1;\n if (null !== opts.max && unmasked > opts.max) return !1;\n }\n return currentResult;\n },\n onUnMask: function onUnMask(maskedValue, unmaskedValue, opts) {\n if (\"\" === unmaskedValue && !0 === opts.nullable) return unmaskedValue;\n var processValue = maskedValue.replace(opts.prefix, \"\");\n return processValue = processValue.replace(opts.suffix, \"\"), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n \"\" !== opts.placeholder.charAt(0) && (processValue = processValue.replace(new RegExp(opts.placeholder.charAt(0), \"g\"), \"0\")), \n opts.unmaskAsNumber ? (\"\" !== opts.radixPoint && -1 !== processValue.indexOf(opts.radixPoint) && (processValue = processValue.replace(Inputmask.escapeRegex.call(this, opts.radixPoint), \".\")), \n processValue = processValue.replace(new RegExp(\"^\" + Inputmask.escapeRegex(opts.negationSymbol.front)), \"-\"), \n processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\"), \n Number(processValue)) : processValue;\n },\n isComplete: function isComplete(buffer, opts) {\n var maskedValue = (opts.numericInput ? buffer.slice().reverse() : buffer).join(\"\");\n return maskedValue = maskedValue.replace(new RegExp(\"^\" + Inputmask.escapeRegex(opts.negationSymbol.front)), \"-\"), \n maskedValue = maskedValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\"), \n maskedValue = maskedValue.replace(opts.prefix, \"\"), maskedValue = maskedValue.replace(opts.suffix, \"\"), \n maskedValue = maskedValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator) + \"([0-9]{3})\", \"g\"), \"$1\"), \n \",\" === opts.radixPoint && (maskedValue = maskedValue.replace(Inputmask.escapeRegex(opts.radixPoint), \".\")), \n isFinite(maskedValue);\n },\n onBeforeMask: function onBeforeMask(initialValue, opts) {\n var radixPoint = opts.radixPoint || \",\";\n isFinite(opts.digits) && (opts.digits = parseInt(opts.digits)), \"number\" != typeof initialValue && \"number\" !== opts.inputType || \"\" === radixPoint || (initialValue = initialValue.toString().replace(\".\", radixPoint));\n var valueParts = initialValue.split(radixPoint), integerPart = valueParts[0].replace(/[^\\-0-9]/g, \"\"), decimalPart = 1 < valueParts.length ? valueParts[1].replace(/[^0-9]/g, \"\") : \"\", forceDigits = 1 < valueParts.length;\n initialValue = integerPart + (\"\" !== decimalPart ? radixPoint + decimalPart : decimalPart);\n var digits = 0;\n if (\"\" !== radixPoint && (digits = opts.digitsOptional ? opts.digits < decimalPart.length ? opts.digits : decimalPart.length : opts.digits, \n \"\" !== decimalPart || !opts.digitsOptional)) {\n var digitsFactor = Math.pow(10, digits || 1);\n initialValue = initialValue.replace(Inputmask.escapeRegex(radixPoint), \".\"), isNaN(parseFloat(initialValue)) || (initialValue = (opts.roundingFN(parseFloat(initialValue) * digitsFactor) / digitsFactor).toFixed(digits)), \n initialValue = initialValue.toString().replace(\".\", radixPoint);\n }\n if (0 === opts.digits && -1 !== initialValue.indexOf(radixPoint) && (initialValue = initialValue.substring(0, initialValue.indexOf(radixPoint))), \n null !== opts.min || null !== opts.max) {\n var numberValue = initialValue.toString().replace(radixPoint, \".\");\n null !== opts.min && numberValue < opts.min ? initialValue = opts.min.toString().replace(\".\", radixPoint) : null !== opts.max && numberValue > opts.max && (initialValue = opts.max.toString().replace(\".\", radixPoint));\n }\n return alignDigits(initialValue.toString().split(\"\"), digits, opts, forceDigits).join(\"\");\n },\n onBeforeWrite: function onBeforeWrite(e, buffer, caretPos, opts) {\n function stripBuffer(buffer, stripRadix) {\n if (!1 !== opts.__financeInput || stripRadix) {\n var position = $.inArray(opts.radixPoint, buffer);\n -1 !== position && buffer.splice(position, 1);\n }\n if (\"\" !== opts.groupSeparator) for (;-1 !== (position = buffer.indexOf(opts.groupSeparator)); ) buffer.splice(position, 1);\n return buffer;\n }\n var result, leadingzeroes = checkForLeadingZeroes(buffer, opts);\n if (leadingzeroes) {\n var buf = buffer.slice().reverse(), caretNdx = buf.join(\"\").indexOf(leadingzeroes[0]);\n buf.splice(caretNdx, leadingzeroes[0].length);\n var newCaretPos = buf.length - caretNdx;\n stripBuffer(buf), result = {\n refreshFromBuffer: !0,\n buffer: buf.reverse(),\n caret: caretPos < newCaretPos ? caretPos : newCaretPos\n };\n }\n if (e) switch (e.type) {\n case \"blur\":\n case \"checkval\":\n if (null !== opts.min) {\n var unmasked = opts.onUnMask(buffer.slice().reverse().join(\"\"), void 0, $.extend({}, opts, {\n unmaskAsNumber: !0\n }));\n if (null !== opts.min && unmasked < opts.min) return {\n refreshFromBuffer: !0,\n buffer: alignDigits(opts.min.toString().replace(\".\", opts.radixPoint).split(\"\"), opts.digits, opts).reverse()\n };\n }\n if (buffer[buffer.length - 1] === opts.negationSymbol.front) {\n var nmbrMtchs = new RegExp(\"(^\" + (\"\" != opts.negationSymbol.front ? Inputmask.escapeRegex(opts.negationSymbol.front) + \"?\" : \"\") + Inputmask.escapeRegex(opts.prefix) + \")(.*)(\" + Inputmask.escapeRegex(opts.suffix) + (\"\" != opts.negationSymbol.back ? Inputmask.escapeRegex(opts.negationSymbol.back) + \"?\" : \"\") + \"$)\").exec(stripBuffer(buffer.slice(), !0).reverse().join(\"\")), number = nmbrMtchs ? nmbrMtchs[2] : \"\";\n 0 == number && (result = {\n refreshFromBuffer: !0,\n buffer: [ 0 ]\n });\n } else \"\" !== opts.radixPoint && buffer[0] === opts.radixPoint && (result && result.buffer ? result.buffer.shift() : (buffer.shift(), \n result = {\n refreshFromBuffer: !0,\n buffer: stripBuffer(buffer)\n }));\n if (opts.enforceDigitsOnBlur) {\n result = result || {};\n var bffr = result && result.buffer || buffer.slice().reverse();\n result.refreshFromBuffer = !0, result.buffer = alignDigits(bffr, opts.digits, opts, !0).reverse();\n }\n }\n return result;\n },\n onKeyDown: function onKeyDown(e, buffer, caretPos, opts) {\n var $input = $(this), bffr;\n if (e.ctrlKey) switch (e.keyCode) {\n case keyCode.UP:\n return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) + parseInt(opts.step)), \n $input.trigger(\"setvalue\"), !1;\n\n case keyCode.DOWN:\n return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) - parseInt(opts.step)), \n $input.trigger(\"setvalue\"), !1;\n }\n if (!e.shiftKey && (e.keyCode === keyCode.DELETE || e.keyCode === keyCode.BACKSPACE || e.keyCode === keyCode.BACKSPACE_SAFARI) && caretPos.begin !== buffer.length) {\n if (buffer[e.keyCode === keyCode.DELETE ? caretPos.begin - 1 : caretPos.end] === opts.negationSymbol.front) return bffr = buffer.slice().reverse(), \n \"\" !== opts.negationSymbol.front && bffr.shift(), \"\" !== opts.negationSymbol.back && bffr.pop(), \n $input.trigger(\"setvalue\", [ bffr.join(\"\"), caretPos.begin ]), !1;\n if (!0 === opts._radixDance) {\n var radixPos = $.inArray(opts.radixPoint, buffer);\n if (opts.digitsOptional) {\n if (0 === radixPos) return bffr = buffer.slice().reverse(), bffr.pop(), $input.trigger(\"setvalue\", [ bffr.join(\"\"), caretPos.begin >= bffr.length ? bffr.length : caretPos.begin ]), \n !1;\n } else if (-1 !== radixPos && (caretPos.begin < radixPos || caretPos.end < radixPos || e.keyCode === keyCode.DELETE && caretPos.begin === radixPos)) return caretPos.begin !== caretPos.end || e.keyCode !== keyCode.BACKSPACE && e.keyCode !== keyCode.BACKSPACE_SAFARI || caretPos.begin++, \n bffr = buffer.slice().reverse(), bffr.splice(bffr.length - caretPos.begin, caretPos.begin - caretPos.end + 1), \n bffr = alignDigits(bffr, opts.digits, opts).join(\"\"), $input.trigger(\"setvalue\", [ bffr, caretPos.begin >= bffr.length ? radixPos + 1 : caretPos.begin ]), \n !1;\n }\n }\n }\n },\n currency: {\n prefix: \"\",\n groupSeparator: \",\",\n alias: \"numeric\",\n digits: 2,\n digitsOptional: !1\n },\n decimal: {\n alias: \"numeric\"\n },\n integer: {\n alias: \"numeric\",\n digits: 0\n },\n percentage: {\n alias: \"numeric\",\n min: 0,\n max: 100,\n suffix: \" %\",\n digits: 0,\n allowMinus: !1\n },\n indianns: {\n alias: \"numeric\",\n _mask: function _mask(opts) {\n return \"(\" + opts.groupSeparator + \"99){*|1}(\" + opts.groupSeparator + \"999){1|1}\";\n },\n groupSeparator: \",\",\n radixPoint: \".\",\n placeholder: \"0\",\n digits: 2,\n digitsOptional: !1\n }\n }), module.exports = Inputmask;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n var _inputmask = _interopRequireDefault(__webpack_require__(1));\n function _typeof(obj) {\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function _typeof(obj) {\n return typeof obj;\n } : function _typeof(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n }\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n }\n function _possibleConstructorReturn(self, call) {\n return !call || \"object\" !== _typeof(call) && \"function\" != typeof call ? _assertThisInitialized(self) : call;\n }\n function _assertThisInitialized(self) {\n if (void 0 === self) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n }\n function _inherits(subClass, superClass) {\n if (\"function\" != typeof superClass && null !== superClass) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: !0,\n configurable: !0\n }\n }), superClass && _setPrototypeOf(subClass, superClass);\n }\n function _wrapNativeSuper(Class) {\n var _cache = \"function\" == typeof Map ? new Map() : void 0;\n return _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (null === Class || !_isNativeFunction(Class)) return Class;\n if (\"function\" != typeof Class) throw new TypeError(\"Super expression must either be null or a function\");\n if (\"undefined\" != typeof _cache) {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n return Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), _setPrototypeOf(Wrapper, Class);\n }, _wrapNativeSuper(Class);\n }\n function isNativeReflectConstruct() {\n if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1;\n if (Reflect.construct.sham) return !1;\n if (\"function\" == typeof Proxy) return !0;\n try {\n return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), \n !0;\n } catch (e) {\n return !1;\n }\n }\n function _construct(Parent, args, Class) {\n return _construct = isNativeReflectConstruct() ? Reflect.construct : function _construct(Parent, args, Class) {\n var a = [ null ];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a), instance = new Constructor();\n return Class && _setPrototypeOf(instance, Class.prototype), instance;\n }, _construct.apply(null, arguments);\n }\n function _isNativeFunction(fn) {\n return -1 !== Function.toString.call(fn).indexOf(\"[native code]\");\n }\n function _setPrototypeOf(o, p) {\n return _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n return o.__proto__ = p, o;\n }, _setPrototypeOf(o, p);\n }\n function _getPrototypeOf(o) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, _getPrototypeOf(o);\n }\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n if (document.head.createShadowRoot || document.head.attachShadow) {\n var InputmaskElement = function(_HTMLElement) {\n function InputmaskElement() {\n var _this;\n _classCallCheck(this, InputmaskElement), _this = _possibleConstructorReturn(this, _getPrototypeOf(InputmaskElement).call(this));\n var attributeNames = _this.getAttributeNames(), shadow = _this.attachShadow({\n mode: \"closed\"\n }), input = document.createElement(\"input\");\n for (var attr in input.type = \"text\", shadow.appendChild(input), attributeNames) Object.prototype.hasOwnProperty.call(attributeNames, attr) && input.setAttribute(\"data-inputmask-\" + attributeNames[attr], _this.getAttribute(attributeNames[attr]));\n return new _inputmask.default().mask(input), input.inputmask.shadowRoot = shadow, \n _this;\n }\n return _inherits(InputmaskElement, _HTMLElement), InputmaskElement;\n }(_wrapNativeSuper(HTMLElement));\n customElements.define(\"input-mask\", InputmaskElement);\n }\n } ], installedModules = {}, __webpack_require__.m = modules, __webpack_require__.c = installedModules, \n __webpack_require__.d = function(exports, name, getter) {\n __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n enumerable: !0,\n get: getter\n });\n }, __webpack_require__.r = function(exports) {\n \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(exports, Symbol.toStringTag, {\n value: \"Module\"\n }), Object.defineProperty(exports, \"__esModule\", {\n value: !0\n });\n }, __webpack_require__.t = function(value, mode) {\n if (1 & mode && (value = __webpack_require__(value)), 8 & mode) return value;\n if (4 & mode && \"object\" == typeof value && value && value.__esModule) return value;\n var ns = Object.create(null);\n if (__webpack_require__.r(ns), Object.defineProperty(ns, \"default\", {\n enumerable: !0,\n value: value\n }), 2 & mode && \"string\" != typeof value) for (var key in value) __webpack_require__.d(ns, key, function(key) {\n return value[key];\n }.bind(null, key));\n return ns;\n }, __webpack_require__.n = function(module) {\n var getter = module && module.__esModule ? function getDefault() {\n return module.default;\n } : function getModuleExports() {\n return module;\n };\n return __webpack_require__.d(getter, \"a\", getter), getter;\n }, __webpack_require__.o = function(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n }, __webpack_require__.p = \"\", __webpack_require__(__webpack_require__.s = 5);\n function __webpack_require__(moduleId) {\n if (installedModules[moduleId]) return installedModules[moduleId].exports;\n var module = installedModules[moduleId] = {\n i: moduleId,\n l: !1,\n exports: {}\n };\n return modules[moduleId].call(module.exports, module, module.exports, __webpack_require__), \n module.l = !0, module.exports;\n }\n var modules, installedModules;\n});","module.exports = require(\"./dist/inputmask\");\n","(function(factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n define(['jquery', 'hammerjs'], factory);\r\n } else if (typeof exports === 'object') {\r\n factory(require('jquery'), require('hammerjs'));\r\n } else {\r\n factory(jQuery, Hammer);\r\n }\r\n}(function($, Hammer) {\r\n function hammerify(el, options) {\r\n var $el = $(el);\r\n if(!$el.data(\"hammer\")) {\r\n $el.data(\"hammer\", new Hammer($el[0], options));\r\n }\r\n }\r\n\r\n $.fn.hammer = function(options) {\r\n return this.each(function() {\r\n hammerify(this, options);\r\n });\r\n };\r\n\r\n // extend the emit method to also trigger jQuery events\r\n Hammer.Manager.prototype.emit = (function(originalEmit) {\r\n return function(type, data) {\r\n originalEmit.call(this, type, data);\r\n $(this.element).trigger({\r\n type: type,\r\n gesture: data\r\n });\r\n };\r\n })(Hammer.Manager.prototype.emit);\r\n}));\r\n","/*!\n * hoverIntent v1.10.1 // 2019.10.05 // jQuery v1.7.0+\n * http://briancherne.github.io/jquery-hoverIntent/\n *\n * You may use hoverIntent under the terms of the MIT license. Basically that\n * means you are free to use hoverIntent as long as this header is left intact.\n * Copyright 2007-2019 Brian Cherne\n */\n\n/**\n * hoverIntent is similar to jQuery's built-in \"hover\" method except that\n * instead of firing the handlerIn function immediately, hoverIntent checks\n * to see if the user's mouse has slowed down (beneath the sensitivity\n * threshold) before firing the event. The handlerOut function is only\n * called after a matching handlerIn.\n *\n * // basic usage ... just like .hover()\n * .hoverIntent( handlerIn, handlerOut )\n * .hoverIntent( handlerInOut )\n *\n * // basic usage ... with event delegation!\n * .hoverIntent( handlerIn, handlerOut, selector )\n * .hoverIntent( handlerInOut, selector )\n *\n * // using a basic configuration object\n * .hoverIntent( config )\n *\n * @param handlerIn function OR configuration object\n * @param handlerOut function OR selector for delegation OR undefined\n * @param selector selector OR undefined\n * @author Brian Cherne <brian(at)cherne(dot)net>\n */\n\n;(function(factory) {\n 'use strict';\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory(require('jquery'));\n } else if (jQuery && !jQuery.fn.hoverIntent) {\n factory(jQuery);\n }\n})(function($) {\n 'use strict';\n\n // default configuration values\n var _cfg = {\n interval: 100,\n sensitivity: 6,\n timeout: 0\n };\n\n // counter used to generate an ID for each instance\n var INSTANCE_COUNT = 0;\n\n // current X and Y position of mouse, updated during mousemove tracking (shared across instances)\n var cX, cY;\n\n // saves the current pointer position coordinates based on the given mousemove event\n var track = function(ev) {\n cX = ev.pageX;\n cY = ev.pageY;\n };\n\n // compares current and previous mouse positions\n var compare = function(ev,$el,s,cfg) {\n // compare mouse positions to see if pointer has slowed enough to trigger `over` function\n if ( Math.sqrt( (s.pX-cX)*(s.pX-cX) + (s.pY-cY)*(s.pY-cY) ) < cfg.sensitivity ) {\n $el.off(s.event,track);\n delete s.timeoutId;\n // set hoverIntent state as active for this element (permits `out` handler to trigger)\n s.isActive = true;\n // overwrite old mouseenter event coordinates with most recent pointer position\n ev.pageX = cX; ev.pageY = cY;\n // clear coordinate data from state object\n delete s.pX; delete s.pY;\n return cfg.over.apply($el[0],[ev]);\n } else {\n // set previous coordinates for next comparison\n s.pX = cX; s.pY = cY;\n // use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)\n s.timeoutId = setTimeout( function(){compare(ev, $el, s, cfg);} , cfg.interval );\n }\n };\n\n // triggers given `out` function at configured `timeout` after a mouseleave and clears state\n var delay = function(ev,$el,s,out) {\n var data = $el.data('hoverIntent');\n if (data) {\n delete data[s.id];\n }\n return out.apply($el[0],[ev]);\n };\n\n $.fn.hoverIntent = function(handlerIn,handlerOut,selector) {\n // instance ID, used as a key to store and retrieve state information on an element\n var instanceId = INSTANCE_COUNT++;\n\n // extend the default configuration and parse parameters\n var cfg = $.extend({}, _cfg);\n if ( $.isPlainObject(handlerIn) ) {\n cfg = $.extend(cfg, handlerIn);\n if ( !$.isFunction(cfg.out) ) {\n cfg.out = cfg.over;\n }\n } else if ( $.isFunction(handlerOut) ) {\n cfg = $.extend(cfg, { over: handlerIn, out: handlerOut, selector: selector } );\n } else {\n cfg = $.extend(cfg, { over: handlerIn, out: handlerIn, selector: handlerOut } );\n }\n\n // A private function for handling mouse 'hovering'\n var handleHover = function(e) {\n // cloned event to pass to handlers (copy required for event object to be passed in IE)\n var ev = $.extend({},e);\n\n // the current target of the mouse event, wrapped in a jQuery object\n var $el = $(this);\n\n // read hoverIntent data from element (or initialize if not present)\n var hoverIntentData = $el.data('hoverIntent');\n if (!hoverIntentData) { $el.data('hoverIntent', (hoverIntentData = {})); }\n\n // read per-instance state from element (or initialize if not present)\n var state = hoverIntentData[instanceId];\n if (!state) { hoverIntentData[instanceId] = state = { id: instanceId }; }\n\n // state properties:\n // id = instance ID, used to clean up data\n // timeoutId = timeout ID, reused for tracking mouse position and delaying \"out\" handler\n // isActive = plugin state, true after `over` is called just until `out` is called\n // pX, pY = previously-measured pointer coordinates, updated at each polling interval\n // event = string representing the namespaced event used for mouse tracking\n\n // clear any existing timeout\n if (state.timeoutId) { state.timeoutId = clearTimeout(state.timeoutId); }\n\n // namespaced event used to register and unregister mousemove tracking\n var mousemove = state.event = 'mousemove.hoverIntent.hoverIntent'+instanceId;\n\n // handle the event, based on its type\n if (e.type === 'mouseenter') {\n // do nothing if already active\n if (state.isActive) { return; }\n // set \"previous\" X and Y position based on initial entry point\n state.pX = ev.pageX; state.pY = ev.pageY;\n // update \"current\" X and Y position based on mousemove\n $el.off(mousemove,track).on(mousemove,track);\n // start polling interval (self-calling timeout) to compare mouse coordinates over time\n state.timeoutId = setTimeout( function(){compare(ev,$el,state,cfg);} , cfg.interval );\n } else { // \"mouseleave\"\n // do nothing if not already active\n if (!state.isActive) { return; }\n // unbind expensive mousemove event\n $el.off(mousemove,track);\n // if hoverIntent state is true, then call the mouseOut function after the specified delay\n state.timeoutId = setTimeout( function(){delay(ev,$el,state,cfg.out);} , cfg.timeout );\n }\n };\n\n // listen for mouseenter and mouseleave\n return this.on({'mouseenter.hoverIntent':handleHover,'mouseleave.hoverIntent':handleHover}, cfg.selector);\n };\n});\n","export default typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n","import isBrowser from './isBrowser';\n\nconst timeoutDuration = (function(){\n const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}());\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const window = element.ownerDocument.defaultView;\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nexport default function getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n","import isBrowser from './isBrowser';\n\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nexport default function isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n const noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n let offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`], 10) +\n parseFloat(styles[`border${sideB}Width`], 10)\n );\n}\n","import isIE from './isIE';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE(10)\n ? (parseInt(html[`offset${axis}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]))\n : 0 \n );\n}\n\nexport default function getWindowSizes(document) {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE from './isIE';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n }\n else {\n rect = element.getBoundingClientRect();\n }\n }\n catch(e){}\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n const width =\n sizes.width || element.clientWidth || result.width;\n const height =\n sizes.height || element.clientHeight || result.height;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE from './isIE';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n const isIE10 = runIsIE(10);\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if(fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop, 10);\n const marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10 && !fixedPosition\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nexport default function getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n let el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getReferenceNode from './getReferenceNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement,\n fixedPosition = false\n) {\n // NOTE: 1 DOM access here\n\n let boundaries = { top: 0, left: 0 };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport' ) {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n }\n\n else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent,\n fixedPosition\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes(popper.ownerDocument);\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n const isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0; \n boundaries.top += isPaddingNumber ? padding : padding.top || 0; \n boundaries.right -= isPaddingNumber ? padding : padding.right || 0; \n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; \n\n return boundaries;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = !excludeScroll ? getScroll(html) : 0;\n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n const parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\nimport getReferenceNode from './getReferenceNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {\n const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const window = element.ownerDocument.defaultView;\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference,\n this.options.positionFixed\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n\n data.offsets.popper.position = this.options.positionFixed\n ? 'fixed'\n : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\nimport getRoundedOffsets from '../utils/getRoundedOffsets';\nimport isBrowser from '../utils/isBrowser';\n\nconst isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n const offsets = getRoundedOffsets(\n data,\n window.devicePixelRatio < 2 || !isFirefox\n );\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement,\n data.positionFixed\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n const flippedVariationByRef =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n // flips variation if popper content overflows boundaries\n const flippedVariationByContent =\n !!options.flipVariationsByContent &&\n ((isVertical && variation === 'start' && overflowsRight) ||\n (isVertical && variation === 'end' && overflowsLeft) ||\n (!isVertical && variation === 'start' && overflowsBottom) ||\n (!isVertical && variation === 'end' && overflowsTop));\n\n const flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false,\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n const transformProp = getSupportedPropertyName('transform');\n const popperStyles = data.instance.popper.style; // assignment to help minification\n const { top, left, [transformProp]: transform } = popperStyles;\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement,\n data.positionFixed\n );\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side =\n ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`], 10);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`], 10);\n let sideValue =\n center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nexport default function getRoundedOffsets(data, shouldRound) {\n const { popper, reference } = data.offsets;\n const { round, floor } = Math;\n const noRound = v => v;\n \n const referenceWidth = round(reference.width);\n const popperWidth = round(popper.width);\n \n const isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n const isVariation = data.placement.indexOf('-') !== -1;\n const sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n const bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n const horizontalToInteger = !shouldRound\n ? noRound\n : isVertical || isVariation || sameWidthParity\n ? round\n : floor;\n const verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(\n bothOddWidth && !isVariation && shouldRound\n ? popper.left - 1\n : popper.left\n ),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right),\n };\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n","/*!\n * Select2 4.0.12\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node/CommonJS\n module.exports = function (root, jQuery) {\n if (jQuery === undefined) {\n // require('jQuery') returns a factory that requires window to\n // build a jQuery instance, we normalize how we use modules\n // that require this pattern but the window provided is a noop\n // if it's defined (how jquery works)\n if (typeof window !== 'undefined') {\n jQuery = require('jquery');\n }\n else {\n jQuery = require('jquery')(root);\n }\n }\n factory(jQuery);\n return jQuery;\n };\n } else {\n // Browser globals\n factory(jQuery);\n }\n} (function (jQuery) {\n // This is needed so we can catch the AMD loader configuration and use it\n // The inner file should be wrapped (by `banner.start.js`) in a function that\n // returns the AMD loader references.\n var S2 =(function () {\n // Restore the Select2 AMD loader so it can be used\n // Needed mostly in the language files, where the loader is not inserted\n if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n var S2 = jQuery.fn.select2.amd;\n }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n var main, req, makeMap, handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @returns {String} normalized name\n */\n function normalize(name, baseName) {\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = (map && map['*']) || {};\n\n //Adjust any relative paths.\n if (name) {\n name = name.split('/');\n lastIndex = name.length - 1;\n\n // If wanting node ID compatibility, strip .js from end\n // of IDs. Have to do this here, and not in nameToUrl\n // because node allows either .js or non .js to map\n // to same file.\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n }\n\n // Starts with a '.' so need the baseName\n if (name[0].charAt(0) === '.' && baseParts) {\n //Convert baseName to array, and lop off the last part,\n //so that . matches that 'directory' and not name of the baseName's\n //module. For instance, baseName of 'one/two/three', maps to\n //'one/two/three.js', but we want the directory, 'one/two' for\n //this normalization.\n normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n name = normalizedBaseParts.concat(name);\n }\n\n //start trimDots\n for (i = 0; i < name.length; i++) {\n part = name[i];\n if (part === '.') {\n name.splice(i, 1);\n i -= 1;\n } else if (part === '..') {\n // If at the start, or previous value is still ..,\n // keep them so that when converted to a path it may\n // still work when converted to a path, even though\n // as an ID it is less than ideal. In larger point\n // releases, may be better to just kick out an error.\n if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n continue;\n } else if (i > 0) {\n name.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n //end trimDots\n\n name = name.join('/');\n }\n\n //Apply map config if available.\n if ((baseParts || starMap) && map) {\n nameParts = name.split('/');\n\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = map[baseParts.slice(0, j).join('/')];\n\n //baseName segment has config, find if it has one for\n //this name.\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break;\n }\n }\n }\n }\n\n if (foundMap) {\n break;\n }\n\n //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n if (!foundStarMap && starMap && starMap[nameSegment]) {\n foundStarMap = starMap[nameSegment];\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n return name;\n }\n\n function makeRequire(relName, forceSync) {\n return function () {\n //A version of a require function that passes a moduleName\n //value for items that may need to\n //look up paths relative to the moduleName\n var args = aps.call(arguments, 0);\n\n //If first arg is not require('string'), and there is only\n //one arg, it is the array form without a callback. Insert\n //a null so that the following concat is correct.\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\n return req.apply(undef, args.concat([relName, forceSync]));\n };\n }\n\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\n }\n\n function callDep(name) {\n if (hasProp(waiting, name)) {\n var args = waiting[name];\n delete waiting[name];\n defining[name] = true;\n main.apply(undef, args);\n }\n\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\n throw new Error('No ' + name);\n }\n return defined[name];\n }\n\n //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n return [prefix, name];\n }\n\n //Creates a parts array for a relName where first part is plugin ID,\n //second part is resource ID. Assumes relName has already been normalized.\n function makeRelParts(relName) {\n return relName ? splitPrefix(relName) : [];\n }\n\n /**\n * Makes a name map, normalizing the name, and using a plugin\n * for normalization if necessary. Grabs a ref to plugin\n * too, as an optimization.\n */\n makeMap = function (name, relParts) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0],\n relResourceName = relParts[1];\n\n name = parts[1];\n\n if (prefix) {\n prefix = normalize(prefix, relResourceName);\n plugin = callDep(prefix);\n }\n\n //Normalize according\n if (prefix) {\n if (plugin && plugin.normalize) {\n name = plugin.normalize(name, makeNormalize(relResourceName));\n } else {\n name = normalize(name, relResourceName);\n }\n } else {\n name = normalize(name, relResourceName);\n parts = splitPrefix(name);\n prefix = parts[0];\n name = parts[1];\n if (prefix) {\n plugin = callDep(prefix);\n }\n }\n\n //Using ridiculous property names for space reasons\n return {\n f: prefix ? prefix + '!' + name : name, //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n\n function makeConfig(name) {\n return function () {\n return (config && config.config && config.config[name]) || {};\n };\n }\n\n handlers = {\n require: function (name) {\n return makeRequire(name);\n },\n exports: function (name) {\n var e = defined[name];\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return (defined[name] = {});\n }\n },\n module: function (name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n\n main = function (name, deps, callback, relName) {\n var cjsModule, depName, ret, map, i, relParts,\n args = [],\n callbackType = typeof callback,\n usingExports;\n\n //Use name if no relName\n relName = relName || name;\n relParts = makeRelParts(relName);\n\n //Call the callback to define the module, if necessary.\n if (callbackType === 'undefined' || callbackType === 'function') {\n //Pull out the defined dependencies and pass the ordered\n //values to the callback.\n //Default to [require, exports, module] if no deps\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relParts);\n depName = map.f;\n\n //Fast path CommonJS standard dependencies.\n if (depName === \"require\") {\n args[i] = handlers.require(name);\n } else if (depName === \"exports\") {\n //CommonJS module spec 1.1\n args[i] = handlers.exports(name);\n usingExports = true;\n } else if (depName === \"module\") {\n //CommonJS module spec 1.1\n cjsModule = args[i] = handlers.module(name);\n } else if (hasProp(defined, depName) ||\n hasProp(waiting, depName) ||\n hasProp(defining, depName)) {\n args[i] = callDep(depName);\n } else if (map.p) {\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n args[i] = defined[depName];\n } else {\n throw new Error(name + ' missing ' + depName);\n }\n }\n\n ret = callback ? callback.apply(defined[name], args) : undefined;\n\n if (name) {\n //If setting exports via \"module\" is in play,\n //favor that over return value and exports. After that,\n //favor a non-undefined return value over exports use.\n if (cjsModule && cjsModule.exports !== undef &&\n cjsModule.exports !== defined[name]) {\n defined[name] = cjsModule.exports;\n } else if (ret !== undef || !usingExports) {\n //Use the return value from the function.\n defined[name] = ret;\n }\n }\n } else if (name) {\n //May just be an object definition for the module. Only\n //worry about defining if have a module name.\n defined[name] = callback;\n }\n };\n\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n if (typeof deps === \"string\") {\n if (handlers[deps]) {\n //callback in this case is really relName\n return handlers[deps](callback);\n }\n //Just return the module wanted. In this scenario, the\n //deps arg is the module name, and second arg (if passed)\n //is just the relName.\n //Normalize module name, if it contains . or ..\n return callDep(makeMap(deps, makeRelParts(callback)).f);\n } else if (!deps.splice) {\n //deps is a config object, not an array.\n config = deps;\n if (config.deps) {\n req(config.deps, config.callback);\n }\n if (!callback) {\n return;\n }\n\n if (callback.splice) {\n //callback is an array, which means it is a dependency list.\n //Adjust args if there are dependencies\n deps = callback;\n callback = relName;\n relName = null;\n } else {\n deps = undef;\n }\n }\n\n //Support require(['a'])\n callback = callback || function () {};\n\n //If relName is a function, it is an errback handler,\n //so remove it.\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n }\n\n //Simulate async callback;\n if (forceSync) {\n main(undef, deps, callback, relName);\n } else {\n //Using a non-zero value because of concern for what old browsers\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n //If want a value immediately, use require('id') instead -- something\n //that works in almond on the global level, but not guaranteed and\n //unlikely to work in other AMD implementations.\n setTimeout(function () {\n main(undef, deps, callback, relName);\n }, 4);\n }\n\n return req;\n };\n\n /**\n * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n req.config = function (cfg) {\n return req(cfg);\n };\n\n /**\n * Expose module registry for debugging and tooling\n */\n requirejs._defined = defined;\n\n define = function (name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n }\n\n //This module may not have dependencies\n if (!deps.splice) {\n //deps is not an array, so probably means\n //an object literal or factory function for\n //the value. Adjust args.\n callback = deps;\n deps = [];\n }\n\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n\n define.amd = {\n jQuery: true\n };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n var _$ = jQuery || $;\n\n if (_$ == null && console && console.error) {\n console.error(\n 'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n 'found. Make sure that you are including jQuery before Select2 on your ' +\n 'web page.'\n );\n }\n\n return _$;\n});\n\nS2.define('select2/utils',[\n 'jquery'\n], function ($) {\n var Utils = {};\n\n Utils.Extend = function (ChildClass, SuperClass) {\n var __hasProp = {}.hasOwnProperty;\n\n function BaseConstructor () {\n this.constructor = ChildClass;\n }\n\n for (var key in SuperClass) {\n if (__hasProp.call(SuperClass, key)) {\n ChildClass[key] = SuperClass[key];\n }\n }\n\n BaseConstructor.prototype = SuperClass.prototype;\n ChildClass.prototype = new BaseConstructor();\n ChildClass.__super__ = SuperClass.prototype;\n\n return ChildClass;\n };\n\n function getMethods (theClass) {\n var proto = theClass.prototype;\n\n var methods = [];\n\n for (var methodName in proto) {\n var m = proto[methodName];\n\n if (typeof m !== 'function') {\n continue;\n }\n\n if (methodName === 'constructor') {\n continue;\n }\n\n methods.push(methodName);\n }\n\n return methods;\n }\n\n Utils.Decorate = function (SuperClass, DecoratorClass) {\n var decoratedMethods = getMethods(DecoratorClass);\n var superMethods = getMethods(SuperClass);\n\n function DecoratedClass () {\n var unshift = Array.prototype.unshift;\n\n var argCount = DecoratorClass.prototype.constructor.length;\n\n var calledConstructor = SuperClass.prototype.constructor;\n\n if (argCount > 0) {\n unshift.call(arguments, SuperClass.prototype.constructor);\n\n calledConstructor = DecoratorClass.prototype.constructor;\n }\n\n calledConstructor.apply(this, arguments);\n }\n\n DecoratorClass.displayName = SuperClass.displayName;\n\n function ctr () {\n this.constructor = DecoratedClass;\n }\n\n DecoratedClass.prototype = new ctr();\n\n for (var m = 0; m < superMethods.length; m++) {\n var superMethod = superMethods[m];\n\n DecoratedClass.prototype[superMethod] =\n SuperClass.prototype[superMethod];\n }\n\n var calledMethod = function (methodName) {\n // Stub out the original method if it's not decorating an actual method\n var originalMethod = function () {};\n\n if (methodName in DecoratedClass.prototype) {\n originalMethod = DecoratedClass.prototype[methodName];\n }\n\n var decoratedMethod = DecoratorClass.prototype[methodName];\n\n return function () {\n var unshift = Array.prototype.unshift;\n\n unshift.call(arguments, originalMethod);\n\n return decoratedMethod.apply(this, arguments);\n };\n };\n\n for (var d = 0; d < decoratedMethods.length; d++) {\n var decoratedMethod = decoratedMethods[d];\n\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n }\n\n return DecoratedClass;\n };\n\n var Observable = function () {\n this.listeners = {};\n };\n\n Observable.prototype.on = function (event, callback) {\n this.listeners = this.listeners || {};\n\n if (event in this.listeners) {\n this.listeners[event].push(callback);\n } else {\n this.listeners[event] = [callback];\n }\n };\n\n Observable.prototype.trigger = function (event) {\n var slice = Array.prototype.slice;\n var params = slice.call(arguments, 1);\n\n this.listeners = this.listeners || {};\n\n // Params should always come in as an array\n if (params == null) {\n params = [];\n }\n\n // If there are no arguments to the event, use a temporary object\n if (params.length === 0) {\n params.push({});\n }\n\n // Set the `_type` of the first object to the event\n params[0]._type = event;\n\n if (event in this.listeners) {\n this.invoke(this.listeners[event], slice.call(arguments, 1));\n }\n\n if ('*' in this.listeners) {\n this.invoke(this.listeners['*'], arguments);\n }\n };\n\n Observable.prototype.invoke = function (listeners, params) {\n for (var i = 0, len = listeners.length; i < len; i++) {\n listeners[i].apply(this, params);\n }\n };\n\n Utils.Observable = Observable;\n\n Utils.generateChars = function (length) {\n var chars = '';\n\n for (var i = 0; i < length; i++) {\n var randomChar = Math.floor(Math.random() * 36);\n chars += randomChar.toString(36);\n }\n\n return chars;\n };\n\n Utils.bind = function (func, context) {\n return function () {\n func.apply(context, arguments);\n };\n };\n\n Utils._convertData = function (data) {\n for (var originalKey in data) {\n var keys = originalKey.split('-');\n\n var dataLevel = data;\n\n if (keys.length === 1) {\n continue;\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k];\n\n // Lowercase the first letter\n // By default, dash-separated becomes camelCase\n key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n if (!(key in dataLevel)) {\n dataLevel[key] = {};\n }\n\n if (k == keys.length - 1) {\n dataLevel[key] = data[originalKey];\n }\n\n dataLevel = dataLevel[key];\n }\n\n delete data[originalKey];\n }\n\n return data;\n };\n\n Utils.hasScroll = function (index, el) {\n // Adapted from the function created by @ShadowScripter\n // and adapted by @BillBarry on the Stack Exchange Code Review website.\n // The original code can be found at\n // http://codereview.stackexchange.com/q/13338\n // and was designed to be used with the Sizzle selector engine.\n\n var $el = $(el);\n var overflowX = el.style.overflowX;\n var overflowY = el.style.overflowY;\n\n //Check both x and y declarations\n if (overflowX === overflowY &&\n (overflowY === 'hidden' || overflowY === 'visible')) {\n return false;\n }\n\n if (overflowX === 'scroll' || overflowY === 'scroll') {\n return true;\n }\n\n return ($el.innerHeight() < el.scrollHeight ||\n $el.innerWidth() < el.scrollWidth);\n };\n\n Utils.escapeMarkup = function (markup) {\n var replaceMap = {\n '\\\\': '\',\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '/': '/'\n };\n\n // Do not try to escape the markup if it's not a string\n if (typeof markup !== 'string') {\n return markup;\n }\n\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n return replaceMap[match];\n });\n };\n\n // Append an array of jQuery nodes to a given element.\n Utils.appendMany = function ($element, $nodes) {\n // jQuery 1.7.x does not support $.fn.append() with an array\n // Fall back to a jQuery object collection using $.fn.add()\n if ($.fn.jquery.substr(0, 3) === '1.7') {\n var $jqNodes = $();\n\n $.map($nodes, function (node) {\n $jqNodes = $jqNodes.add(node);\n });\n\n $nodes = $jqNodes;\n }\n\n $element.append($nodes);\n };\n\n // Cache objects in Utils.__cache instead of $.data (see #4346)\n Utils.__cache = {};\n\n var id = 0;\n Utils.GetUniqueElementId = function (element) {\n // Get a unique element Id. If element has no id,\n // creates a new unique number, stores it in the id\n // attribute and returns the new id.\n // If an id already exists, it simply returns it.\n\n var select2Id = element.getAttribute('data-select2-id');\n if (select2Id == null) {\n // If element has id, use it.\n if (element.id) {\n select2Id = element.id;\n element.setAttribute('data-select2-id', select2Id);\n } else {\n element.setAttribute('data-select2-id', ++id);\n select2Id = id.toString();\n }\n }\n return select2Id;\n };\n\n Utils.StoreData = function (element, name, value) {\n // Stores an item in the cache for a specified element.\n // name is the cache key.\n var id = Utils.GetUniqueElementId(element);\n if (!Utils.__cache[id]) {\n Utils.__cache[id] = {};\n }\n\n Utils.__cache[id][name] = value;\n };\n\n Utils.GetData = function (element, name) {\n // Retrieves a value from the cache by its key (name)\n // name is optional. If no name specified, return\n // all cache items for the specified element.\n // and for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (name) {\n if (Utils.__cache[id]) {\n if (Utils.__cache[id][name] != null) {\n return Utils.__cache[id][name];\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n } else {\n return Utils.__cache[id];\n }\n };\n\n Utils.RemoveData = function (element) {\n // Removes all cached items for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (Utils.__cache[id] != null) {\n delete Utils.__cache[id];\n }\n\n element.removeAttribute('data-select2-id');\n };\n\n return Utils;\n});\n\nS2.define('select2/results',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Results ($element, options, dataAdapter) {\n this.$element = $element;\n this.data = dataAdapter;\n this.options = options;\n\n Results.__super__.constructor.call(this);\n }\n\n Utils.Extend(Results, Utils.Observable);\n\n Results.prototype.render = function () {\n var $results = $(\n '<ul class=\"select2-results__options\" role=\"listbox\"></ul>'\n );\n\n if (this.options.get('multiple')) {\n $results.attr('aria-multiselectable', 'true');\n }\n\n this.$results = $results;\n\n return $results;\n };\n\n Results.prototype.clear = function () {\n this.$results.empty();\n };\n\n Results.prototype.displayMessage = function (params) {\n var escapeMarkup = this.options.get('escapeMarkup');\n\n this.clear();\n this.hideLoading();\n\n var $message = $(\n '<li role=\"alert\" aria-live=\"assertive\"' +\n ' class=\"select2-results__option\"></li>'\n );\n\n var message = this.options.get('translations').get(params.message);\n\n $message.append(\n escapeMarkup(\n message(params.args)\n )\n );\n\n $message[0].className += ' select2-results__message';\n\n this.$results.append($message);\n };\n\n Results.prototype.hideMessages = function () {\n this.$results.find('.select2-results__message').remove();\n };\n\n Results.prototype.append = function (data) {\n this.hideLoading();\n\n var $options = [];\n\n if (data.results == null || data.results.length === 0) {\n if (this.$results.children().length === 0) {\n this.trigger('results:message', {\n message: 'noResults'\n });\n }\n\n return;\n }\n\n data.results = this.sort(data.results);\n\n for (var d = 0; d < data.results.length; d++) {\n var item = data.results[d];\n\n var $option = this.option(item);\n\n $options.push($option);\n }\n\n this.$results.append($options);\n };\n\n Results.prototype.position = function ($results, $dropdown) {\n var $resultsContainer = $dropdown.find('.select2-results');\n $resultsContainer.append($results);\n };\n\n Results.prototype.sort = function (data) {\n var sorter = this.options.get('sorter');\n\n return sorter(data);\n };\n\n Results.prototype.highlightFirstItem = function () {\n var $options = this.$results\n .find('.select2-results__option[aria-selected]');\n\n var $selected = $options.filter('[aria-selected=true]');\n\n // Check if there are any selected options\n if ($selected.length > 0) {\n // If there are selected options, highlight the first\n $selected.first().trigger('mouseenter');\n } else {\n // If there are no selected options, highlight the first option\n // in the dropdown\n $options.first().trigger('mouseenter');\n }\n\n this.ensureHighlightVisible();\n };\n\n Results.prototype.setClasses = function () {\n var self = this;\n\n this.data.current(function (selected) {\n var selectedIds = $.map(selected, function (s) {\n return s.id.toString();\n });\n\n var $options = self.$results\n .find('.select2-results__option[aria-selected]');\n\n $options.each(function () {\n var $option = $(this);\n\n var item = Utils.GetData(this, 'data');\n\n // id needs to be converted to a string when comparing\n var id = '' + item.id;\n\n if ((item.element != null && item.element.selected) ||\n (item.element == null && $.inArray(id, selectedIds) > -1)) {\n $option.attr('aria-selected', 'true');\n } else {\n $option.attr('aria-selected', 'false');\n }\n });\n\n });\n };\n\n Results.prototype.showLoading = function (params) {\n this.hideLoading();\n\n var loadingMore = this.options.get('translations').get('searching');\n\n var loading = {\n disabled: true,\n loading: true,\n text: loadingMore(params)\n };\n var $loading = this.option(loading);\n $loading.className += ' loading-results';\n\n this.$results.prepend($loading);\n };\n\n Results.prototype.hideLoading = function () {\n this.$results.find('.loading-results').remove();\n };\n\n Results.prototype.option = function (data) {\n var option = document.createElement('li');\n option.className = 'select2-results__option';\n\n var attrs = {\n 'role': 'option',\n 'aria-selected': 'false'\n };\n\n var matches = window.Element.prototype.matches ||\n window.Element.prototype.msMatchesSelector ||\n window.Element.prototype.webkitMatchesSelector;\n\n if ((data.element != null && matches.call(data.element, ':disabled')) ||\n (data.element == null && data.disabled)) {\n delete attrs['aria-selected'];\n attrs['aria-disabled'] = 'true';\n }\n\n if (data.id == null) {\n delete attrs['aria-selected'];\n }\n\n if (data._resultId != null) {\n option.id = data._resultId;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n if (data.children) {\n attrs.role = 'group';\n attrs['aria-label'] = data.text;\n delete attrs['aria-selected'];\n }\n\n for (var attr in attrs) {\n var val = attrs[attr];\n\n option.setAttribute(attr, val);\n }\n\n if (data.children) {\n var $option = $(option);\n\n var label = document.createElement('strong');\n label.className = 'select2-results__group';\n\n var $label = $(label);\n this.template(data, label);\n\n var $children = [];\n\n for (var c = 0; c < data.children.length; c++) {\n var child = data.children[c];\n\n var $child = this.option(child);\n\n $children.push($child);\n }\n\n var $childrenContainer = $('<ul></ul>', {\n 'class': 'select2-results__options select2-results__options--nested'\n });\n\n $childrenContainer.append($children);\n\n $option.append(label);\n $option.append($childrenContainer);\n } else {\n this.template(data, option);\n }\n\n Utils.StoreData(option, 'data', data);\n\n return option;\n };\n\n Results.prototype.bind = function (container, $container) {\n var self = this;\n\n var id = container.id + '-results';\n\n this.$results.attr('id', id);\n\n container.on('results:all', function (params) {\n self.clear();\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n self.highlightFirstItem();\n }\n });\n\n container.on('results:append', function (params) {\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n }\n });\n\n container.on('query', function (params) {\n self.hideMessages();\n self.showLoading(params);\n });\n\n container.on('select', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('unselect', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expended=\"true\"\n self.$results.attr('aria-expanded', 'true');\n self.$results.attr('aria-hidden', 'false');\n\n self.setClasses();\n self.ensureHighlightVisible();\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expended=\"false\"\n self.$results.attr('aria-expanded', 'false');\n self.$results.attr('aria-hidden', 'true');\n self.$results.removeAttr('aria-activedescendant');\n });\n\n container.on('results:toggle', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n $highlighted.trigger('mouseup');\n });\n\n container.on('results:select', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var data = Utils.GetData($highlighted[0], 'data');\n\n if ($highlighted.attr('aria-selected') == 'true') {\n self.trigger('close', {});\n } else {\n self.trigger('select', {\n data: data\n });\n }\n });\n\n container.on('results:previous', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('[aria-selected]');\n\n var currentIndex = $options.index($highlighted);\n\n // If we are already at the top, don't move further\n // If no options, currentIndex will be -1\n if (currentIndex <= 0) {\n return;\n }\n\n var nextIndex = currentIndex - 1;\n\n // If none are highlighted, highlight the first\n if ($highlighted.length === 0) {\n nextIndex = 0;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top;\n var nextTop = $next.offset().top;\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextTop - currentOffset < 0) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:next', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('[aria-selected]');\n\n var currentIndex = $options.index($highlighted);\n\n var nextIndex = currentIndex + 1;\n\n // If we are at the last option, stay there\n if (nextIndex >= $options.length) {\n return;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top +\n self.$results.outerHeight(false);\n var nextBottom = $next.offset().top + $next.outerHeight(false);\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextBottom > currentOffset) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:focus', function (params) {\n params.element.addClass('select2-results__option--highlighted');\n });\n\n container.on('results:message', function (params) {\n self.displayMessage(params);\n });\n\n if ($.fn.mousewheel) {\n this.$results.on('mousewheel', function (e) {\n var top = self.$results.scrollTop();\n\n var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n if (isAtTop) {\n self.$results.scrollTop(0);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (isAtBottom) {\n self.$results.scrollTop(\n self.$results.get(0).scrollHeight - self.$results.height()\n );\n\n e.preventDefault();\n e.stopPropagation();\n }\n });\n }\n\n this.$results.on('mouseup', '.select2-results__option[aria-selected]',\n function (evt) {\n var $this = $(this);\n\n var data = Utils.GetData(this, 'data');\n\n if ($this.attr('aria-selected') === 'true') {\n if (self.options.get('multiple')) {\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n } else {\n self.trigger('close', {});\n }\n\n return;\n }\n\n self.trigger('select', {\n originalEvent: evt,\n data: data\n });\n });\n\n this.$results.on('mouseenter', '.select2-results__option[aria-selected]',\n function (evt) {\n var data = Utils.GetData(this, 'data');\n\n self.getHighlightedResults()\n .removeClass('select2-results__option--highlighted');\n\n self.trigger('results:focus', {\n data: data,\n element: $(this)\n });\n });\n };\n\n Results.prototype.getHighlightedResults = function () {\n var $highlighted = this.$results\n .find('.select2-results__option--highlighted');\n\n return $highlighted;\n };\n\n Results.prototype.destroy = function () {\n this.$results.remove();\n };\n\n Results.prototype.ensureHighlightVisible = function () {\n var $highlighted = this.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var $options = this.$results.find('[aria-selected]');\n\n var currentIndex = $options.index($highlighted);\n\n var currentOffset = this.$results.offset().top;\n var nextTop = $highlighted.offset().top;\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n var offsetDelta = nextTop - currentOffset;\n nextOffset -= $highlighted.outerHeight(false) * 2;\n\n if (currentIndex <= 2) {\n this.$results.scrollTop(0);\n } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n this.$results.scrollTop(nextOffset);\n }\n };\n\n Results.prototype.template = function (result, container) {\n var template = this.options.get('templateResult');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n var content = template(result, container);\n\n if (content == null) {\n container.style.display = 'none';\n } else if (typeof content === 'string') {\n container.innerHTML = escapeMarkup(content);\n } else {\n $(container).append(content);\n }\n };\n\n return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n var KEYS = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n };\n\n return KEYS;\n});\n\nS2.define('select2/selection/base',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function BaseSelection ($element, options) {\n this.$element = $element;\n this.options = options;\n\n BaseSelection.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseSelection, Utils.Observable);\n\n BaseSelection.prototype.render = function () {\n var $selection = $(\n '<span class=\"select2-selection\" role=\"combobox\" ' +\n ' aria-haspopup=\"true\" aria-expanded=\"false\">' +\n '</span>'\n );\n\n this._tabindex = 0;\n\n if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n } else if (this.$element.attr('tabindex') != null) {\n this._tabindex = this.$element.attr('tabindex');\n }\n\n $selection.attr('title', this.$element.attr('title'));\n $selection.attr('tabindex', this._tabindex);\n $selection.attr('aria-disabled', 'false');\n\n this.$selection = $selection;\n\n return $selection;\n };\n\n BaseSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n this.container = container;\n\n this.$selection.on('focus', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('blur', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n if (evt.which === KEYS.SPACE) {\n evt.preventDefault();\n }\n });\n\n container.on('results:focus', function (params) {\n self.$selection.attr('aria-activedescendant', params.data._resultId);\n });\n\n container.on('selection:update', function (params) {\n self.update(params.data);\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expanded=\"true\"\n self.$selection.attr('aria-expanded', 'true');\n self.$selection.attr('aria-owns', resultsId);\n\n self._attachCloseHandler(container);\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expanded=\"false\"\n self.$selection.attr('aria-expanded', 'false');\n self.$selection.removeAttr('aria-activedescendant');\n self.$selection.removeAttr('aria-owns');\n\n self.$selection.trigger('focus');\n\n self._detachCloseHandler(container);\n });\n\n container.on('enable', function () {\n self.$selection.attr('tabindex', self._tabindex);\n self.$selection.attr('aria-disabled', 'false');\n });\n\n container.on('disable', function () {\n self.$selection.attr('tabindex', '-1');\n self.$selection.attr('aria-disabled', 'true');\n });\n };\n\n BaseSelection.prototype._handleBlur = function (evt) {\n var self = this;\n\n // This needs to be delayed as the active element is the body when the tab\n // key is pressed, possibly along with others.\n window.setTimeout(function () {\n // Don't trigger `blur` if the focus is still in the selection\n if (\n (document.activeElement == self.$selection[0]) ||\n ($.contains(self.$selection[0], document.activeElement))\n ) {\n return;\n }\n\n self.trigger('blur', evt);\n }, 1);\n };\n\n BaseSelection.prototype._attachCloseHandler = function (container) {\n\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\n var $target = $(e.target);\n\n var $select = $target.closest('.select2');\n\n var $all = $('.select2.select2-container--open');\n\n $all.each(function () {\n if (this == $select[0]) {\n return;\n }\n\n var $element = Utils.GetData(this, 'element');\n\n $element.select2('close');\n });\n });\n };\n\n BaseSelection.prototype._detachCloseHandler = function (container) {\n $(document.body).off('mousedown.select2.' + container.id);\n };\n\n BaseSelection.prototype.position = function ($selection, $container) {\n var $selectionContainer = $container.find('.selection');\n $selectionContainer.append($selection);\n };\n\n BaseSelection.prototype.destroy = function () {\n this._detachCloseHandler(this.container);\n };\n\n BaseSelection.prototype.update = function (data) {\n throw new Error('The `update` method must be defined in child classes.');\n };\n\n return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n 'jquery',\n './base',\n '../utils',\n '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n function SingleSelection () {\n SingleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(SingleSelection, BaseSelection);\n\n SingleSelection.prototype.render = function () {\n var $selection = SingleSelection.__super__.render.call(this);\n\n $selection.addClass('select2-selection--single');\n\n $selection.html(\n '<span class=\"select2-selection__rendered\"></span>' +\n '<span class=\"select2-selection__arrow\" role=\"presentation\">' +\n '<b role=\"presentation\"></b>' +\n '</span>'\n );\n\n return $selection;\n };\n\n SingleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n SingleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n\n this.$selection.find('.select2-selection__rendered')\n .attr('id', id)\n .attr('role', 'textbox')\n .attr('aria-readonly', 'true');\n this.$selection.attr('aria-labelledby', id);\n\n this.$selection.on('mousedown', function (evt) {\n // Only respond to left clicks\n if (evt.which !== 1) {\n return;\n }\n\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on('focus', function (evt) {\n // User focuses on the container\n });\n\n this.$selection.on('blur', function (evt) {\n // User exits the container\n });\n\n container.on('focus', function (evt) {\n if (!container.isOpen()) {\n self.$selection.trigger('focus');\n }\n });\n };\n\n SingleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title'); // clear tooltip on empty\n };\n\n SingleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n SingleSelection.prototype.selectionContainer = function () {\n return $('<span></span>');\n };\n\n SingleSelection.prototype.update = function (data) {\n if (data.length === 0) {\n this.clear();\n return;\n }\n\n var selection = data[0];\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n var formatted = this.display(selection, $rendered);\n\n $rendered.empty().append(formatted);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $rendered.attr('title', title);\n } else {\n $rendered.removeAttr('title');\n }\n };\n\n return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n 'jquery',\n './base',\n '../utils'\n], function ($, BaseSelection, Utils) {\n function MultipleSelection ($element, options) {\n MultipleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(MultipleSelection, BaseSelection);\n\n MultipleSelection.prototype.render = function () {\n var $selection = MultipleSelection.__super__.render.call(this);\n\n $selection.addClass('select2-selection--multiple');\n\n $selection.html(\n '<ul class=\"select2-selection__rendered\"></ul>'\n );\n\n return $selection;\n };\n\n MultipleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n MultipleSelection.__super__.bind.apply(this, arguments);\n\n this.$selection.on('click', function (evt) {\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on(\n 'click',\n '.select2-selection__choice__remove',\n function (evt) {\n // Ignore the event if it is disabled\n if (self.options.get('disabled')) {\n return;\n }\n\n var $remove = $(this);\n var $selection = $remove.parent();\n\n var data = Utils.GetData($selection[0], 'data');\n\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n }\n );\n };\n\n MultipleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title');\n };\n\n MultipleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n MultipleSelection.prototype.selectionContainer = function () {\n var $container = $(\n '<li class=\"select2-selection__choice\">' +\n '<span class=\"select2-selection__choice__remove\" role=\"presentation\">' +\n '×' +\n '</span>' +\n '</li>'\n );\n\n return $container;\n };\n\n MultipleSelection.prototype.update = function (data) {\n this.clear();\n\n if (data.length === 0) {\n return;\n }\n\n var $selections = [];\n\n for (var d = 0; d < data.length; d++) {\n var selection = data[d];\n\n var $selection = this.selectionContainer();\n var formatted = this.display(selection, $selection);\n\n $selection.append(formatted);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $selection.attr('title', title);\n }\n\n Utils.StoreData($selection[0], 'data', selection);\n\n $selections.push($selection);\n }\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n\n Utils.appendMany($rendered, $selections);\n };\n\n return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n '../utils'\n], function (Utils) {\n function Placeholder (decorated, $element, options) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options);\n }\n\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n var $placeholder = this.selectionContainer();\n\n $placeholder.html(this.display(placeholder));\n $placeholder.addClass('select2-selection__placeholder')\n .removeClass('select2-selection__choice');\n\n return $placeholder;\n };\n\n Placeholder.prototype.update = function (decorated, data) {\n var singlePlaceholder = (\n data.length == 1 && data[0].id != this.placeholder.id\n );\n var multipleSelections = data.length > 1;\n\n if (multipleSelections || singlePlaceholder) {\n return decorated.call(this, data);\n }\n\n this.clear();\n\n var $placeholder = this.createPlaceholder(this.placeholder);\n\n this.$selection.find('.select2-selection__rendered').append($placeholder);\n };\n\n return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n 'jquery',\n '../keys',\n '../utils'\n], function ($, KEYS, Utils) {\n function AllowClear () { }\n\n AllowClear.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n if (this.placeholder == null) {\n if (this.options.get('debug') && window.console && console.error) {\n console.error(\n 'Select2: The `allowClear` option should be used in combination ' +\n 'with the `placeholder` option.'\n );\n }\n }\n\n this.$selection.on('mousedown', '.select2-selection__clear',\n function (evt) {\n self._handleClear(evt);\n });\n\n container.on('keypress', function (evt) {\n self._handleKeyboardClear(evt, container);\n });\n };\n\n AllowClear.prototype._handleClear = function (_, evt) {\n // Ignore the event if it is disabled\n if (this.options.get('disabled')) {\n return;\n }\n\n var $clear = this.$selection.find('.select2-selection__clear');\n\n // Ignore the event if nothing has been selected\n if ($clear.length === 0) {\n return;\n }\n\n evt.stopPropagation();\n\n var data = Utils.GetData($clear[0], 'data');\n\n var previousVal = this.$element.val();\n this.$element.val(this.placeholder.id);\n\n var unselectData = {\n data: data\n };\n this.trigger('clear', unselectData);\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n\n for (var d = 0; d < data.length; d++) {\n unselectData = {\n data: data[d]\n };\n\n // Trigger the `unselect` event, so people can prevent it from being\n // cleared.\n this.trigger('unselect', unselectData);\n\n // If the event was prevented, don't clear it out.\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n }\n\n this.$element.trigger('change');\n\n this.trigger('toggle', {});\n };\n\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n if (container.isOpen()) {\n return;\n }\n\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n this._handleClear(evt);\n }\n };\n\n AllowClear.prototype.update = function (decorated, data) {\n decorated.call(this, data);\n\n if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n data.length === 0) {\n return;\n }\n\n var removeAll = this.options.get('translations').get('removeAllItems'); \n\n var $remove = $(\n '<span class=\"select2-selection__clear\" title=\"' + removeAll() +'\">' +\n '×' +\n '</span>'\n );\n Utils.StoreData($remove[0], 'data', data);\n\n this.$selection.find('.select2-selection__rendered').prepend($remove);\n };\n\n return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function Search (decorated, $element, options) {\n decorated.call(this, $element, options);\n }\n\n Search.prototype.render = function (decorated) {\n var $search = $(\n '<li class=\"select2-search select2-search--inline\">' +\n '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n ' autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"none\"' +\n ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' +\n '</li>'\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n\n var $rendered = decorated.call(this);\n\n this._transferTabIndex();\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n decorated.call(this, container, $container);\n\n container.on('open', function () {\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n });\n\n container.on('close', function () {\n self.$search.val('');\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n self.$search.trigger('focus');\n });\n\n container.on('enable', function () {\n self.$search.prop('disabled', false);\n\n self._transferTabIndex();\n });\n\n container.on('disable', function () {\n self.$search.prop('disabled', true);\n });\n\n container.on('focus', function (evt) {\n self.$search.trigger('focus');\n });\n\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n\n this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n evt.stopPropagation();\n\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n\n var key = evt.which;\n\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n var $previousChoice = self.$searchContainer\n .prev('.select2-selection__choice');\n\n if ($previousChoice.length > 0) {\n var item = Utils.GetData($previousChoice[0], 'data');\n\n self.searchRemoveChoice(item);\n\n evt.preventDefault();\n }\n }\n });\n\n this.$selection.on('click', '.select2-search--inline', function (evt) {\n if (self.$search.val()) {\n evt.stopPropagation();\n }\n });\n\n // Try to detect the IE version should the `documentMode` property that\n // is stored on the document. This is only implemented in IE and is\n // slightly cleaner than doing a user agent check.\n // This property is not available in Edge, but Edge also doesn't have\n // this bug.\n var msie = document.documentMode;\n var disableInputEvents = msie && msie <= 11;\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$selection.on(\n 'input.searchcheck',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents) {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n // Unbind the duplicated `keyup` event\n self.$selection.off('keyup.search');\n }\n );\n\n this.$selection.on(\n 'keyup.search input.search',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents && evt.type === 'input') {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n var key = evt.which;\n\n // We can freely ignore events from modifier keys\n if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n return;\n }\n\n // Tabbing will be handled during the `keydown` phase\n if (key == KEYS.TAB) {\n return;\n }\n\n self.handleSearch(evt);\n }\n );\n };\n\n /**\n * This method will transfer the tabindex attribute from the rendered\n * selection to the search box. This allows for the search box to be used as\n * the primary focus instead of the selection container.\n *\n * @private\n */\n Search.prototype._transferTabIndex = function (decorated) {\n this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n this.$selection.attr('tabindex', '-1');\n };\n\n Search.prototype.createPlaceholder = function (decorated, placeholder) {\n this.$search.attr('placeholder', placeholder.text);\n };\n\n Search.prototype.update = function (decorated, data) {\n var searchHadFocus = this.$search[0] == document.activeElement;\n\n this.$search.attr('placeholder', '');\n\n decorated.call(this, data);\n\n this.$selection.find('.select2-selection__rendered')\n .append(this.$searchContainer);\n\n this.resizeSearch();\n if (searchHadFocus) {\n this.$search.trigger('focus');\n }\n };\n\n Search.prototype.handleSearch = function () {\n this.resizeSearch();\n\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.searchRemoveChoice = function (decorated, item) {\n this.trigger('unselect', {\n data: item\n });\n\n this.$search.val(item.text);\n this.handleSearch();\n };\n\n Search.prototype.resizeSearch = function () {\n this.$search.css('width', '25px');\n\n var width = '';\n\n if (this.$search.attr('placeholder') !== '') {\n width = this.$selection.find('.select2-selection__rendered').width();\n } else {\n var minimumWidth = this.$search.val().length + 1;\n\n width = (minimumWidth * 0.75) + 'em';\n }\n\n this.$search.css('width', width);\n };\n\n return Search;\n});\n\nS2.define('select2/selection/eventRelay',[\n 'jquery'\n], function ($) {\n function EventRelay () { }\n\n EventRelay.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var relayEvents = [\n 'open', 'opening',\n 'close', 'closing',\n 'select', 'selecting',\n 'unselect', 'unselecting',\n 'clear', 'clearing'\n ];\n\n var preventableEvents = [\n 'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n ];\n\n decorated.call(this, container, $container);\n\n container.on('*', function (name, params) {\n // Ignore events that should not be relayed\n if ($.inArray(name, relayEvents) === -1) {\n return;\n }\n\n // The parameters should always be an object\n params = params || {};\n\n // Generate the jQuery event for the Select2 event\n var evt = $.Event('select2:' + name, {\n params: params\n });\n\n self.$element.trigger(evt);\n\n // Only handle preventable events if it was one\n if ($.inArray(name, preventableEvents) === -1) {\n return;\n }\n\n params.prevented = evt.isDefaultPrevented();\n });\n };\n\n return EventRelay;\n});\n\nS2.define('select2/translation',[\n 'jquery',\n 'require'\n], function ($, require) {\n function Translation (dict) {\n this.dict = dict || {};\n }\n\n Translation.prototype.all = function () {\n return this.dict;\n };\n\n Translation.prototype.get = function (key) {\n return this.dict[key];\n };\n\n Translation.prototype.extend = function (translation) {\n this.dict = $.extend({}, translation.all(), this.dict);\n };\n\n // Static functions\n\n Translation._cache = {};\n\n Translation.loadPath = function (path) {\n if (!(path in Translation._cache)) {\n var translations = require(path);\n\n Translation._cache[path] = translations;\n }\n\n return new Translation(Translation._cache[path]);\n };\n\n return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n var diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u0152': 'OE',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u0153': 'oe',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03CE': '\\u03C9',\n '\\u03C2': '\\u03C3',\n '\\u2019': '\\''\n };\n\n return diacritics;\n});\n\nS2.define('select2/data/base',[\n '../utils'\n], function (Utils) {\n function BaseAdapter ($element, options) {\n BaseAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseAdapter, Utils.Observable);\n\n BaseAdapter.prototype.current = function (callback) {\n throw new Error('The `current` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.query = function (params, callback) {\n throw new Error('The `query` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.bind = function (container, $container) {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.destroy = function () {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.generateResultId = function (container, data) {\n var id = container.id + '-result-';\n\n id += Utils.generateChars(4);\n\n if (data.id != null) {\n id += '-' + data.id.toString();\n } else {\n id += '-' + Utils.generateChars(4);\n }\n return id;\n };\n\n return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n './base',\n '../utils',\n 'jquery'\n], function (BaseAdapter, Utils, $) {\n function SelectAdapter ($element, options) {\n this.$element = $element;\n this.options = options;\n\n SelectAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(SelectAdapter, BaseAdapter);\n\n SelectAdapter.prototype.current = function (callback) {\n var data = [];\n var self = this;\n\n this.$element.find(':selected').each(function () {\n var $option = $(this);\n\n var option = self.item($option);\n\n data.push(option);\n });\n\n callback(data);\n };\n\n SelectAdapter.prototype.select = function (data) {\n var self = this;\n\n data.selected = true;\n\n // If data.element is a DOM node, use it instead\n if ($(data.element).is('option')) {\n data.element.selected = true;\n\n this.$element.trigger('change');\n\n return;\n }\n\n if (this.$element.prop('multiple')) {\n this.current(function (currentData) {\n var val = [];\n\n data = [data];\n data.push.apply(data, currentData);\n\n for (var d = 0; d < data.length; d++) {\n var id = data[d].id;\n\n if ($.inArray(id, val) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n self.$element.trigger('change');\n });\n } else {\n var val = data.id;\n\n this.$element.val(val);\n this.$element.trigger('change');\n }\n };\n\n SelectAdapter.prototype.unselect = function (data) {\n var self = this;\n\n if (!this.$element.prop('multiple')) {\n return;\n }\n\n data.selected = false;\n\n if ($(data.element).is('option')) {\n data.element.selected = false;\n\n this.$element.trigger('change');\n\n return;\n }\n\n this.current(function (currentData) {\n var val = [];\n\n for (var d = 0; d < currentData.length; d++) {\n var id = currentData[d].id;\n\n if (id !== data.id && $.inArray(id, val) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n\n self.$element.trigger('change');\n });\n };\n\n SelectAdapter.prototype.bind = function (container, $container) {\n var self = this;\n\n this.container = container;\n\n container.on('select', function (params) {\n self.select(params.data);\n });\n\n container.on('unselect', function (params) {\n self.unselect(params.data);\n });\n };\n\n SelectAdapter.prototype.destroy = function () {\n // Remove anything added to child elements\n this.$element.find('*').each(function () {\n // Remove any custom data set by Select2\n Utils.RemoveData(this);\n });\n };\n\n SelectAdapter.prototype.query = function (params, callback) {\n var data = [];\n var self = this;\n\n var $options = this.$element.children();\n\n $options.each(function () {\n var $option = $(this);\n\n if (!$option.is('option') && !$option.is('optgroup')) {\n return;\n }\n\n var option = self.item($option);\n\n var matches = self.matches(params, option);\n\n if (matches !== null) {\n data.push(matches);\n }\n });\n\n callback({\n results: data\n });\n };\n\n SelectAdapter.prototype.addOptions = function ($options) {\n Utils.appendMany(this.$element, $options);\n };\n\n SelectAdapter.prototype.option = function (data) {\n var option;\n\n if (data.children) {\n option = document.createElement('optgroup');\n option.label = data.text;\n } else {\n option = document.createElement('option');\n\n if (option.textContent !== undefined) {\n option.textContent = data.text;\n } else {\n option.innerText = data.text;\n }\n }\n\n if (data.id !== undefined) {\n option.value = data.id;\n }\n\n if (data.disabled) {\n option.disabled = true;\n }\n\n if (data.selected) {\n option.selected = true;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n var $option = $(option);\n\n var normalizedData = this._normalizeItem(data);\n normalizedData.element = option;\n\n // Override the option's data with the combined data\n Utils.StoreData(option, 'data', normalizedData);\n\n return $option;\n };\n\n SelectAdapter.prototype.item = function ($option) {\n var data = {};\n\n data = Utils.GetData($option[0], 'data');\n\n if (data != null) {\n return data;\n }\n\n if ($option.is('option')) {\n data = {\n id: $option.val(),\n text: $option.text(),\n disabled: $option.prop('disabled'),\n selected: $option.prop('selected'),\n title: $option.prop('title')\n };\n } else if ($option.is('optgroup')) {\n data = {\n text: $option.prop('label'),\n children: [],\n title: $option.prop('title')\n };\n\n var $children = $option.children('option');\n var children = [];\n\n for (var c = 0; c < $children.length; c++) {\n var $child = $($children[c]);\n\n var child = this.item($child);\n\n children.push(child);\n }\n\n data.children = children;\n }\n\n data = this._normalizeItem(data);\n data.element = $option[0];\n\n Utils.StoreData($option[0], 'data', data);\n\n return data;\n };\n\n SelectAdapter.prototype._normalizeItem = function (item) {\n if (item !== Object(item)) {\n item = {\n id: item,\n text: item\n };\n }\n\n item = $.extend({}, {\n text: ''\n }, item);\n\n var defaults = {\n selected: false,\n disabled: false\n };\n\n if (item.id != null) {\n item.id = item.id.toString();\n }\n\n if (item.text != null) {\n item.text = item.text.toString();\n }\n\n if (item._resultId == null && item.id && this.container != null) {\n item._resultId = this.generateResultId(this.container, item);\n }\n\n return $.extend({}, defaults, item);\n };\n\n SelectAdapter.prototype.matches = function (params, data) {\n var matcher = this.options.get('matcher');\n\n return matcher(params, data);\n };\n\n return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n './select',\n '../utils',\n 'jquery'\n], function (SelectAdapter, Utils, $) {\n function ArrayAdapter ($element, options) {\n this._dataToConvert = options.get('data') || [];\n\n ArrayAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(ArrayAdapter, SelectAdapter);\n\n ArrayAdapter.prototype.bind = function (container, $container) {\n ArrayAdapter.__super__.bind.call(this, container, $container);\n\n this.addOptions(this.convertToOptions(this._dataToConvert));\n };\n\n ArrayAdapter.prototype.select = function (data) {\n var $option = this.$element.find('option').filter(function (i, elm) {\n return elm.value == data.id.toString();\n });\n\n if ($option.length === 0) {\n $option = this.option(data);\n\n this.addOptions($option);\n }\n\n ArrayAdapter.__super__.select.call(this, data);\n };\n\n ArrayAdapter.prototype.convertToOptions = function (data) {\n var self = this;\n\n var $existing = this.$element.find('option');\n var existingIds = $existing.map(function () {\n return self.item($(this)).id;\n }).get();\n\n var $options = [];\n\n // Filter out all items except for the one passed in the argument\n function onlyItem (item) {\n return function () {\n return $(this).val() == item.id;\n };\n }\n\n for (var d = 0; d < data.length; d++) {\n var item = this._normalizeItem(data[d]);\n\n // Skip items which were pre-loaded, only merge the data\n if ($.inArray(item.id, existingIds) >= 0) {\n var $existingOption = $existing.filter(onlyItem(item));\n\n var existingData = this.item($existingOption);\n var newData = $.extend(true, {}, item, existingData);\n\n var $newOption = this.option(newData);\n\n $existingOption.replaceWith($newOption);\n\n continue;\n }\n\n var $option = this.option(item);\n\n if (item.children) {\n var $children = this.convertToOptions(item.children);\n\n Utils.appendMany($option, $children);\n }\n\n $options.push($option);\n }\n\n return $options;\n };\n\n return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n './array',\n '../utils',\n 'jquery'\n], function (ArrayAdapter, Utils, $) {\n function AjaxAdapter ($element, options) {\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n if (this.ajaxOptions.processResults != null) {\n this.processResults = this.ajaxOptions.processResults;\n }\n\n AjaxAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n AjaxAdapter.prototype._applyDefaults = function (options) {\n var defaults = {\n data: function (params) {\n return $.extend({}, params, {\n q: params.term\n });\n },\n transport: function (params, success, failure) {\n var $request = $.ajax(params);\n\n $request.then(success);\n $request.fail(failure);\n\n return $request;\n }\n };\n\n return $.extend({}, defaults, options, true);\n };\n\n AjaxAdapter.prototype.processResults = function (results) {\n return results;\n };\n\n AjaxAdapter.prototype.query = function (params, callback) {\n var matches = [];\n var self = this;\n\n if (this._request != null) {\n // JSONP requests cannot always be aborted\n if ($.isFunction(this._request.abort)) {\n this._request.abort();\n }\n\n this._request = null;\n }\n\n var options = $.extend({\n type: 'GET'\n }, this.ajaxOptions);\n\n if (typeof options.url === 'function') {\n options.url = options.url.call(this.$element, params);\n }\n\n if (typeof options.data === 'function') {\n options.data = options.data.call(this.$element, params);\n }\n\n function request () {\n var $request = options.transport(options, function (data) {\n var results = self.processResults(data, params);\n\n if (self.options.get('debug') && window.console && console.error) {\n // Check to make sure that the response included a `results` key.\n if (!results || !results.results || !$.isArray(results.results)) {\n console.error(\n 'Select2: The AJAX results did not return an array in the ' +\n '`results` key of the response.'\n );\n }\n }\n\n callback(results);\n }, function () {\n // Attempt to detect if a request was aborted\n // Only works if the transport exposes a status property\n if ('status' in $request &&\n ($request.status === 0 || $request.status === '0')) {\n return;\n }\n\n self.trigger('results:message', {\n message: 'errorLoading'\n });\n });\n\n self._request = $request;\n }\n\n if (this.ajaxOptions.delay && params.term != null) {\n if (this._queryTimeout) {\n window.clearTimeout(this._queryTimeout);\n }\n\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n } else {\n request();\n }\n };\n\n return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n 'jquery'\n], function ($) {\n function Tags (decorated, $element, options) {\n var tags = options.get('tags');\n\n var createTag = options.get('createTag');\n\n if (createTag !== undefined) {\n this.createTag = createTag;\n }\n\n var insertTag = options.get('insertTag');\n\n if (insertTag !== undefined) {\n this.insertTag = insertTag;\n }\n\n decorated.call(this, $element, options);\n\n if ($.isArray(tags)) {\n for (var t = 0; t < tags.length; t++) {\n var tag = tags[t];\n var item = this._normalizeItem(tag);\n\n var $option = this.option(item);\n\n this.$element.append($option);\n }\n }\n }\n\n Tags.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n this._removeOldTags();\n\n if (params.term == null || params.page != null) {\n decorated.call(this, params, callback);\n return;\n }\n\n function wrapper (obj, child) {\n var data = obj.results;\n\n for (var i = 0; i < data.length; i++) {\n var option = data[i];\n\n var checkChildren = (\n option.children != null &&\n !wrapper({\n results: option.children\n }, true)\n );\n\n var optionText = (option.text || '').toUpperCase();\n var paramsTerm = (params.term || '').toUpperCase();\n\n var checkText = optionText === paramsTerm;\n\n if (checkText || checkChildren) {\n if (child) {\n return false;\n }\n\n obj.data = data;\n callback(obj);\n\n return;\n }\n }\n\n if (child) {\n return true;\n }\n\n var tag = self.createTag(params);\n\n if (tag != null) {\n var $option = self.option(tag);\n $option.attr('data-select2-tag', true);\n\n self.addOptions([$option]);\n\n self.insertTag(data, tag);\n }\n\n obj.results = data;\n\n callback(obj);\n }\n\n decorated.call(this, params, wrapper);\n };\n\n Tags.prototype.createTag = function (decorated, params) {\n var term = $.trim(params.term);\n\n if (term === '') {\n return null;\n }\n\n return {\n id: term,\n text: term\n };\n };\n\n Tags.prototype.insertTag = function (_, data, tag) {\n data.unshift(tag);\n };\n\n Tags.prototype._removeOldTags = function (_) {\n var $options = this.$element.find('option[data-select2-tag]');\n\n $options.each(function () {\n if (this.selected) {\n return;\n }\n\n $(this).remove();\n });\n };\n\n return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n 'jquery'\n], function ($) {\n function Tokenizer (decorated, $element, options) {\n var tokenizer = options.get('tokenizer');\n\n if (tokenizer !== undefined) {\n this.tokenizer = tokenizer;\n }\n\n decorated.call(this, $element, options);\n }\n\n Tokenizer.prototype.bind = function (decorated, container, $container) {\n decorated.call(this, container, $container);\n\n this.$search = container.dropdown.$search || container.selection.$search ||\n $container.find('.select2-search__field');\n };\n\n Tokenizer.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n function createAndSelect (data) {\n // Normalize the data object so we can use it for checks\n var item = self._normalizeItem(data);\n\n // Check if the data object already exists as a tag\n // Select it if it doesn't\n var $existingOptions = self.$element.find('option').filter(function () {\n return $(this).val() === item.id;\n });\n\n // If an existing option wasn't found for it, create the option\n if (!$existingOptions.length) {\n var $option = self.option(item);\n $option.attr('data-select2-tag', true);\n\n self._removeOldTags();\n self.addOptions([$option]);\n }\n\n // Select the item, now that we know there is an option for it\n select(item);\n }\n\n function select (data) {\n self.trigger('select', {\n data: data\n });\n }\n\n params.term = params.term || '';\n\n var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n if (tokenData.term !== params.term) {\n // Replace the search term if we have the search box\n if (this.$search.length) {\n this.$search.val(tokenData.term);\n this.$search.trigger('focus');\n }\n\n params.term = tokenData.term;\n }\n\n decorated.call(this, params, callback);\n };\n\n Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n var separators = options.get('tokenSeparators') || [];\n var term = params.term;\n var i = 0;\n\n var createTag = this.createTag || function (params) {\n return {\n id: params.term,\n text: params.term\n };\n };\n\n while (i < term.length) {\n var termChar = term[i];\n\n if ($.inArray(termChar, separators) === -1) {\n i++;\n\n continue;\n }\n\n var part = term.substr(0, i);\n var partParams = $.extend({}, params, {\n term: part\n });\n\n var data = createTag(partParams);\n\n if (data == null) {\n i++;\n continue;\n }\n\n callback(data);\n\n // Reset the term to not include the tokenized portion\n term = term.substr(i + 1) || '';\n i = 0;\n }\n\n return {\n term: term\n };\n };\n\n return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n function MinimumInputLength (decorated, $e, options) {\n this.minimumInputLength = options.get('minimumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (params.term.length < this.minimumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooShort',\n args: {\n minimum: this.minimumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n function MaximumInputLength (decorated, $e, options) {\n this.maximumInputLength = options.get('maximumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (this.maximumInputLength > 0 &&\n params.term.length > this.maximumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooLong',\n args: {\n maximum: this.maximumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n function MaximumSelectionLength (decorated, $e, options) {\n this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumSelectionLength.prototype.bind =\n function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function () {\n self._checkIfMaximumSelected();\n });\n };\n\n MaximumSelectionLength.prototype.query =\n function (decorated, params, callback) {\n var self = this;\n\n this._checkIfMaximumSelected(function () {\n decorated.call(self, params, callback);\n });\n };\n\n MaximumSelectionLength.prototype._checkIfMaximumSelected =\n function (_, successCallback) {\n var self = this;\n\n this.current(function (currentData) {\n var count = currentData != null ? currentData.length : 0;\n if (self.maximumSelectionLength > 0 &&\n count >= self.maximumSelectionLength) {\n self.trigger('results:message', {\n message: 'maximumSelected',\n args: {\n maximum: self.maximumSelectionLength\n }\n });\n return;\n }\n\n if (successCallback) {\n successCallback();\n }\n });\n };\n\n return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Dropdown ($element, options) {\n this.$element = $element;\n this.options = options;\n\n Dropdown.__super__.constructor.call(this);\n }\n\n Utils.Extend(Dropdown, Utils.Observable);\n\n Dropdown.prototype.render = function () {\n var $dropdown = $(\n '<span class=\"select2-dropdown\">' +\n '<span class=\"select2-results\"></span>' +\n '</span>'\n );\n\n $dropdown.attr('dir', this.options.get('dir'));\n\n this.$dropdown = $dropdown;\n\n return $dropdown;\n };\n\n Dropdown.prototype.bind = function () {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.position = function ($dropdown, $container) {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.destroy = function () {\n // Remove the dropdown from the DOM\n this.$dropdown.remove();\n };\n\n return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n 'jquery',\n '../utils'\n], function ($, Utils) {\n function Search () { }\n\n Search.prototype.render = function (decorated) {\n var $rendered = decorated.call(this);\n\n var $search = $(\n '<span class=\"select2-search select2-search--dropdown\">' +\n '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n ' autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"none\"' +\n ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' +\n '</span>'\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n\n $rendered.prepend($search);\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n decorated.call(this, container, $container);\n\n this.$search.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n });\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$search.on('input', function (evt) {\n // Unbind the duplicated `keyup` event\n $(this).off('keyup');\n });\n\n this.$search.on('keyup input', function (evt) {\n self.handleSearch(evt);\n });\n\n container.on('open', function () {\n self.$search.attr('tabindex', 0);\n self.$search.attr('aria-controls', resultsId);\n\n self.$search.trigger('focus');\n\n window.setTimeout(function () {\n self.$search.trigger('focus');\n }, 0);\n });\n\n container.on('close', function () {\n self.$search.attr('tabindex', -1);\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n\n self.$search.val('');\n self.$search.trigger('blur');\n });\n\n container.on('focus', function () {\n if (!container.isOpen()) {\n self.$search.trigger('focus');\n }\n });\n\n container.on('results:all', function (params) {\n if (params.query.term == null || params.query.term === '') {\n var showSearch = self.showSearch(params);\n\n if (showSearch) {\n self.$searchContainer.removeClass('select2-search--hide');\n } else {\n self.$searchContainer.addClass('select2-search--hide');\n }\n }\n });\n\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n };\n\n Search.prototype.handleSearch = function (evt) {\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.showSearch = function (_, params) {\n return true;\n };\n\n return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n function HidePlaceholder (decorated, $element, options, dataAdapter) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n HidePlaceholder.prototype.append = function (decorated, data) {\n data.results = this.removePlaceholder(data.results);\n\n decorated.call(this, data);\n };\n\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n var modifiedData = data.slice(0);\n\n for (var d = data.length - 1; d >= 0; d--) {\n var item = data[d];\n\n if (this.placeholder.id === item.id) {\n modifiedData.splice(d, 1);\n }\n }\n\n return modifiedData;\n };\n\n return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n 'jquery'\n], function ($) {\n function InfiniteScroll (decorated, $element, options, dataAdapter) {\n this.lastParams = {};\n\n decorated.call(this, $element, options, dataAdapter);\n\n this.$loadingMore = this.createLoadingMore();\n this.loading = false;\n }\n\n InfiniteScroll.prototype.append = function (decorated, data) {\n this.$loadingMore.remove();\n this.loading = false;\n\n decorated.call(this, data);\n\n if (this.showLoadingMore(data)) {\n this.$results.append(this.$loadingMore);\n this.loadMoreIfNeeded();\n }\n };\n\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('query', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n container.on('query:append', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n };\n\n InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n var isLoadMoreVisible = $.contains(\n document.documentElement,\n this.$loadingMore[0]\n );\n\n if (this.loading || !isLoadMoreVisible) {\n return;\n }\n\n var currentOffset = this.$results.offset().top +\n this.$results.outerHeight(false);\n var loadingMoreOffset = this.$loadingMore.offset().top +\n this.$loadingMore.outerHeight(false);\n\n if (currentOffset + 50 >= loadingMoreOffset) {\n this.loadMore();\n }\n };\n\n InfiniteScroll.prototype.loadMore = function () {\n this.loading = true;\n\n var params = $.extend({}, {page: 1}, this.lastParams);\n\n params.page++;\n\n this.trigger('query:append', params);\n };\n\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n return data.pagination && data.pagination.more;\n };\n\n InfiniteScroll.prototype.createLoadingMore = function () {\n var $option = $(\n '<li ' +\n 'class=\"select2-results__option select2-results__option--load-more\"' +\n 'role=\"option\" aria-disabled=\"true\"></li>'\n );\n\n var message = this.options.get('translations').get('loadingMore');\n\n $option.html(message(this.lastParams));\n\n return $option;\n };\n\n return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n 'jquery',\n '../utils'\n], function ($, Utils) {\n function AttachBody (decorated, $element, options) {\n this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n\n decorated.call(this, $element, options);\n }\n\n AttachBody.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('open', function () {\n self._showDropdown();\n self._attachPositioningHandler(container);\n\n // Must bind after the results handlers to ensure correct sizing\n self._bindContainerResultHandlers(container);\n });\n\n container.on('close', function () {\n self._hideDropdown();\n self._detachPositioningHandler(container);\n });\n\n this.$dropdownContainer.on('mousedown', function (evt) {\n evt.stopPropagation();\n });\n };\n\n AttachBody.prototype.destroy = function (decorated) {\n decorated.call(this);\n\n this.$dropdownContainer.remove();\n };\n\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n // Clone all of the container classes\n $dropdown.attr('class', $container.attr('class'));\n\n $dropdown.removeClass('select2');\n $dropdown.addClass('select2-container--open');\n\n $dropdown.css({\n position: 'absolute',\n top: -999999\n });\n\n this.$container = $container;\n };\n\n AttachBody.prototype.render = function (decorated) {\n var $container = $('<span></span>');\n\n var $dropdown = decorated.call(this);\n $container.append($dropdown);\n\n this.$dropdownContainer = $container;\n\n return $container;\n };\n\n AttachBody.prototype._hideDropdown = function (decorated) {\n this.$dropdownContainer.detach();\n };\n\n AttachBody.prototype._bindContainerResultHandlers =\n function (decorated, container) {\n\n // These should only be bound once\n if (this._containerResultsHandlersBound) {\n return;\n }\n\n var self = this;\n\n container.on('results:all', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:append', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:message', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('select', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('unselect', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n this._containerResultsHandlersBound = true;\n };\n\n AttachBody.prototype._attachPositioningHandler =\n function (decorated, container) {\n var self = this;\n\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.each(function () {\n Utils.StoreData(this, 'select2-scroll-position', {\n x: $(this).scrollLeft(),\n y: $(this).scrollTop()\n });\n });\n\n $watchers.on(scrollEvent, function (ev) {\n var position = Utils.GetData(this, 'select2-scroll-position');\n $(this).scrollTop(position.y);\n });\n\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n function (e) {\n self._positionDropdown();\n self._resizeDropdown();\n });\n };\n\n AttachBody.prototype._detachPositioningHandler =\n function (decorated, container) {\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.off(scrollEvent);\n\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n };\n\n AttachBody.prototype._positionDropdown = function () {\n var $window = $(window);\n\n var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');\n var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');\n\n var newDirection = null;\n\n var offset = this.$container.offset();\n\n offset.bottom = offset.top + this.$container.outerHeight(false);\n\n var container = {\n height: this.$container.outerHeight(false)\n };\n\n container.top = offset.top;\n container.bottom = offset.top + container.height;\n\n var dropdown = {\n height: this.$dropdown.outerHeight(false)\n };\n\n var viewport = {\n top: $window.scrollTop(),\n bottom: $window.scrollTop() + $window.height()\n };\n\n var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n var css = {\n left: offset.left,\n top: container.bottom\n };\n\n // Determine what the parent element is to use for calculating the offset\n var $offsetParent = this.$dropdownParent;\n\n // For statically positioned elements, we need to get the element\n // that is determining the offset\n if ($offsetParent.css('position') === 'static') {\n $offsetParent = $offsetParent.offsetParent();\n }\n\n var parentOffset = {\n top: 0,\n left: 0\n };\n\n if (\n $.contains(document.body, $offsetParent[0]) ||\n $offsetParent[0].isConnected\n ) {\n parentOffset = $offsetParent.offset();\n }\n\n css.top -= parentOffset.top;\n css.left -= parentOffset.left;\n\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\n newDirection = 'below';\n }\n\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n newDirection = 'above';\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n newDirection = 'below';\n }\n\n if (newDirection == 'above' ||\n (isCurrentlyAbove && newDirection !== 'below')) {\n css.top = container.top - parentOffset.top - dropdown.height;\n }\n\n if (newDirection != null) {\n this.$dropdown\n .removeClass('select2-dropdown--below select2-dropdown--above')\n .addClass('select2-dropdown--' + newDirection);\n this.$container\n .removeClass('select2-container--below select2-container--above')\n .addClass('select2-container--' + newDirection);\n }\n\n this.$dropdownContainer.css(css);\n };\n\n AttachBody.prototype._resizeDropdown = function () {\n var css = {\n width: this.$container.outerWidth(false) + 'px'\n };\n\n if (this.options.get('dropdownAutoWidth')) {\n css.minWidth = css.width;\n css.position = 'relative';\n css.width = 'auto';\n }\n\n this.$dropdown.css(css);\n };\n\n AttachBody.prototype._showDropdown = function (decorated) {\n this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n this._positionDropdown();\n this._resizeDropdown();\n };\n\n return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n function countResults (data) {\n var count = 0;\n\n for (var d = 0; d < data.length; d++) {\n var item = data[d];\n\n if (item.children) {\n count += countResults(item.children);\n } else {\n count++;\n }\n }\n\n return count;\n }\n\n function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n if (this.minimumResultsForSearch < 0) {\n this.minimumResultsForSearch = Infinity;\n }\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\n return false;\n }\n\n return decorated.call(this, params);\n };\n\n return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n '../utils'\n], function (Utils) {\n function SelectOnClose () { }\n\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('close', function (params) {\n self._handleSelectOnClose(params);\n });\n };\n\n SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n if (params && params.originalSelect2Event != null) {\n var event = params.originalSelect2Event;\n\n // Don't select an item if the close event was triggered from a select or\n // unselect event\n if (event._type === 'select' || event._type === 'unselect') {\n return;\n }\n }\n\n var $highlightedResults = this.getHighlightedResults();\n\n // Only select highlighted results\n if ($highlightedResults.length < 1) {\n return;\n }\n\n var data = Utils.GetData($highlightedResults[0], 'data');\n\n // Don't re-select already selected resulte\n if (\n (data.element != null && data.element.selected) ||\n (data.element == null && data.selected)\n ) {\n return;\n }\n\n this.trigger('select', {\n data: data\n });\n };\n\n return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n function CloseOnSelect () { }\n\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function (evt) {\n self._selectTriggered(evt);\n });\n\n container.on('unselect', function (evt) {\n self._selectTriggered(evt);\n });\n };\n\n CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n var originalEvent = evt.originalEvent;\n\n // Don't close if the control key is being held\n if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n return;\n }\n\n this.trigger('close', {\n originalEvent: originalEvent,\n originalSelect2Event: evt\n });\n };\n\n return CloseOnSelect;\n});\n\nS2.define('select2/i18n/en',[],function () {\n // English\n return {\n errorLoading: function () {\n return 'The results could not be loaded.';\n },\n inputTooLong: function (args) {\n var overChars = args.input.length - args.maximum;\n\n var message = 'Please delete ' + overChars + ' character';\n\n if (overChars != 1) {\n message += 's';\n }\n\n return message;\n },\n inputTooShort: function (args) {\n var remainingChars = args.minimum - args.input.length;\n\n var message = 'Please enter ' + remainingChars + ' or more characters';\n\n return message;\n },\n loadingMore: function () {\n return 'Loading more results…';\n },\n maximumSelected: function (args) {\n var message = 'You can only select ' + args.maximum + ' item';\n\n if (args.maximum != 1) {\n message += 's';\n }\n\n return message;\n },\n noResults: function () {\n return 'No results found';\n },\n searching: function () {\n return 'Searching…';\n },\n removeAllItems: function () {\n return 'Remove all items';\n }\n };\n});\n\nS2.define('select2/defaults',[\n 'jquery',\n 'require',\n\n './results',\n\n './selection/single',\n './selection/multiple',\n './selection/placeholder',\n './selection/allowClear',\n './selection/search',\n './selection/eventRelay',\n\n './utils',\n './translation',\n './diacritics',\n\n './data/select',\n './data/array',\n './data/ajax',\n './data/tags',\n './data/tokenizer',\n './data/minimumInputLength',\n './data/maximumInputLength',\n './data/maximumSelectionLength',\n\n './dropdown',\n './dropdown/search',\n './dropdown/hidePlaceholder',\n './dropdown/infiniteScroll',\n './dropdown/attachBody',\n './dropdown/minimumResultsForSearch',\n './dropdown/selectOnClose',\n './dropdown/closeOnSelect',\n\n './i18n/en'\n], function ($, require,\n\n ResultsList,\n\n SingleSelection, MultipleSelection, Placeholder, AllowClear,\n SelectionSearch, EventRelay,\n\n Utils, Translation, DIACRITICS,\n\n SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n\n EnglishTranslation) {\n function Defaults () {\n this.reset();\n }\n\n Defaults.prototype.apply = function (options) {\n options = $.extend(true, {}, this.defaults, options);\n\n if (options.dataAdapter == null) {\n if (options.ajax != null) {\n options.dataAdapter = AjaxData;\n } else if (options.data != null) {\n options.dataAdapter = ArrayData;\n } else {\n options.dataAdapter = SelectData;\n }\n\n if (options.minimumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MinimumInputLength\n );\n }\n\n if (options.maximumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumInputLength\n );\n }\n\n if (options.maximumSelectionLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumSelectionLength\n );\n }\n\n if (options.tags) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n }\n\n if (options.tokenSeparators != null || options.tokenizer != null) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n Tokenizer\n );\n }\n\n if (options.query != null) {\n var Query = require(options.amdBase + 'compat/query');\n\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n Query\n );\n }\n\n if (options.initSelection != null) {\n var InitSelection = require(options.amdBase + 'compat/initSelection');\n\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n InitSelection\n );\n }\n }\n\n if (options.resultsAdapter == null) {\n options.resultsAdapter = ResultsList;\n\n if (options.ajax != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n InfiniteScroll\n );\n }\n\n if (options.placeholder != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n HidePlaceholder\n );\n }\n\n if (options.selectOnClose) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n SelectOnClose\n );\n }\n }\n\n if (options.dropdownAdapter == null) {\n if (options.multiple) {\n options.dropdownAdapter = Dropdown;\n } else {\n var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n options.dropdownAdapter = SearchableDropdown;\n }\n\n if (options.minimumResultsForSearch !== 0) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n MinimumResultsForSearch\n );\n }\n\n if (options.closeOnSelect) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n CloseOnSelect\n );\n }\n\n if (\n options.dropdownCssClass != null ||\n options.dropdownCss != null ||\n options.adaptDropdownCssClass != null\n ) {\n var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');\n\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n DropdownCSS\n );\n }\n\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n AttachBody\n );\n }\n\n if (options.selectionAdapter == null) {\n if (options.multiple) {\n options.selectionAdapter = MultipleSelection;\n } else {\n options.selectionAdapter = SingleSelection;\n }\n\n // Add the placeholder mixin if a placeholder was specified\n if (options.placeholder != null) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n Placeholder\n );\n }\n\n if (options.allowClear) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n AllowClear\n );\n }\n\n if (options.multiple) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n SelectionSearch\n );\n }\n\n if (\n options.containerCssClass != null ||\n options.containerCss != null ||\n options.adaptContainerCssClass != null\n ) {\n var ContainerCSS = require(options.amdBase + 'compat/containerCss');\n\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n ContainerCSS\n );\n }\n\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n EventRelay\n );\n }\n\n // If the defaults were not previously applied from an element, it is\n // possible for the language option to have not been resolved\n options.language = this._resolveLanguage(options.language);\n\n // Always fall back to English since it will always be complete\n options.language.push('en');\n\n var uniqueLanguages = [];\n\n for (var l = 0; l < options.language.length; l++) {\n var language = options.language[l];\n\n if (uniqueLanguages.indexOf(language) === -1) {\n uniqueLanguages.push(language);\n }\n }\n\n options.language = uniqueLanguages;\n\n options.translations = this._processTranslations(\n options.language,\n options.debug\n );\n\n return options;\n };\n\n Defaults.prototype.reset = function () {\n function stripDiacritics (text) {\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n function match(a) {\n return DIACRITICS[a] || a;\n }\n\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n }\n\n function matcher (params, data) {\n // Always return the object if there is nothing to compare\n if ($.trim(params.term) === '') {\n return data;\n }\n\n // Do a recursive check for options with children\n if (data.children && data.children.length > 0) {\n // Clone the data object if there are children\n // This is required as we modify the object to remove any non-matches\n var match = $.extend(true, {}, data);\n\n // Check each child of the option\n for (var c = data.children.length - 1; c >= 0; c--) {\n var child = data.children[c];\n\n var matches = matcher(params, child);\n\n // If there wasn't a match, remove the object in the array\n if (matches == null) {\n match.children.splice(c, 1);\n }\n }\n\n // If any children matched, return the new object\n if (match.children.length > 0) {\n return match;\n }\n\n // If there were no matching children, check just the plain object\n return matcher(params, match);\n }\n\n var original = stripDiacritics(data.text).toUpperCase();\n var term = stripDiacritics(params.term).toUpperCase();\n\n // Check if the text contains the term\n if (original.indexOf(term) > -1) {\n return data;\n }\n\n // If it doesn't contain the term, don't return anything\n return null;\n }\n\n this.defaults = {\n amdBase: './',\n amdLanguageBase: './i18n/',\n closeOnSelect: true,\n debug: false,\n dropdownAutoWidth: false,\n escapeMarkup: Utils.escapeMarkup,\n language: {},\n matcher: matcher,\n minimumInputLength: 0,\n maximumInputLength: 0,\n maximumSelectionLength: 0,\n minimumResultsForSearch: 0,\n selectOnClose: false,\n scrollAfterSelect: false,\n sorter: function (data) {\n return data;\n },\n templateResult: function (result) {\n return result.text;\n },\n templateSelection: function (selection) {\n return selection.text;\n },\n theme: 'default',\n width: 'resolve'\n };\n };\n\n Defaults.prototype.applyFromElement = function (options, $element) {\n var optionLanguage = options.language;\n var defaultLanguage = this.defaults.language;\n var elementLanguage = $element.prop('lang');\n var parentLanguage = $element.closest('[lang]').prop('lang');\n\n var languages = Array.prototype.concat.call(\n this._resolveLanguage(elementLanguage),\n this._resolveLanguage(optionLanguage),\n this._resolveLanguage(defaultLanguage),\n this._resolveLanguage(parentLanguage)\n );\n\n options.language = languages;\n\n return options;\n };\n\n Defaults.prototype._resolveLanguage = function (language) {\n if (!language) {\n return [];\n }\n\n if ($.isEmptyObject(language)) {\n return [];\n }\n\n if ($.isPlainObject(language)) {\n return [language];\n }\n\n var languages;\n\n if (!$.isArray(language)) {\n languages = [language];\n } else {\n languages = language;\n }\n\n var resolvedLanguages = [];\n\n for (var l = 0; l < languages.length; l++) {\n resolvedLanguages.push(languages[l]);\n\n if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n // Extract the region information if it is included\n var languageParts = languages[l].split('-');\n var baseLanguage = languageParts[0];\n\n resolvedLanguages.push(baseLanguage);\n }\n }\n\n return resolvedLanguages;\n };\n\n Defaults.prototype._processTranslations = function (languages, debug) {\n var translations = new Translation();\n\n for (var l = 0; l < languages.length; l++) {\n var languageData = new Translation();\n\n var language = languages[l];\n\n if (typeof language === 'string') {\n try {\n // Try to load it with the original name\n languageData = Translation.loadPath(language);\n } catch (e) {\n try {\n // If we couldn't load it, check if it wasn't the full path\n language = this.defaults.amdLanguageBase + language;\n languageData = Translation.loadPath(language);\n } catch (ex) {\n // The translation could not be loaded at all. Sometimes this is\n // because of a configuration problem, other times this can be\n // because of how Select2 helps load all possible translation files\n if (debug && window.console && console.warn) {\n console.warn(\n 'Select2: The language file for \"' + language + '\" could ' +\n 'not be automatically loaded. A fallback will be used instead.'\n );\n }\n }\n }\n } else if ($.isPlainObject(language)) {\n languageData = new Translation(language);\n } else {\n languageData = language;\n }\n\n translations.extend(languageData);\n }\n\n return translations;\n };\n\n Defaults.prototype.set = function (key, value) {\n var camelKey = $.camelCase(key);\n\n var data = {};\n data[camelKey] = value;\n\n var convertedData = Utils._convertData(data);\n\n $.extend(true, this.defaults, convertedData);\n };\n\n var defaults = new Defaults();\n\n return defaults;\n});\n\nS2.define('select2/options',[\n 'require',\n 'jquery',\n './defaults',\n './utils'\n], function (require, $, Defaults, Utils) {\n function Options (options, $element) {\n this.options = options;\n\n if ($element != null) {\n this.fromElement($element);\n }\n\n if ($element != null) {\n this.options = Defaults.applyFromElement(this.options, $element);\n }\n\n this.options = Defaults.apply(this.options);\n\n if ($element && $element.is('input')) {\n var InputCompat = require(this.get('amdBase') + 'compat/inputData');\n\n this.options.dataAdapter = Utils.Decorate(\n this.options.dataAdapter,\n InputCompat\n );\n }\n }\n\n Options.prototype.fromElement = function ($e) {\n var excludedData = ['select2'];\n\n if (this.options.multiple == null) {\n this.options.multiple = $e.prop('multiple');\n }\n\n if (this.options.disabled == null) {\n this.options.disabled = $e.prop('disabled');\n }\n\n if (this.options.dir == null) {\n if ($e.prop('dir')) {\n this.options.dir = $e.prop('dir');\n } else if ($e.closest('[dir]').prop('dir')) {\n this.options.dir = $e.closest('[dir]').prop('dir');\n } else {\n this.options.dir = 'ltr';\n }\n }\n\n $e.prop('disabled', this.options.disabled);\n $e.prop('multiple', this.options.multiple);\n\n if (Utils.GetData($e[0], 'select2Tags')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-select2-tags` attribute has been changed to ' +\n 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n 'removed in future versions of Select2.'\n );\n }\n\n Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n Utils.StoreData($e[0], 'tags', true);\n }\n\n if (Utils.GetData($e[0], 'ajaxUrl')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-ajax-url` attribute has been changed to ' +\n '`data-ajax--url` and support for the old attribute will be removed' +\n ' in future versions of Select2.'\n );\n }\n\n $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n }\n\n var dataset = {};\n\n function upperCaseLetter(_, letter) {\n return letter.toUpperCase();\n }\n\n // Pre-load all of the attributes which are prefixed with `data-`\n for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n var attributeName = $e[0].attributes[attr].name;\n var prefix = 'data-';\n\n if (attributeName.substr(0, prefix.length) == prefix) {\n // Get the contents of the attribute after `data-`\n var dataName = attributeName.substring(prefix.length);\n\n // Get the data contents from the consistent source\n // This is more than likely the jQuery data helper\n var dataValue = Utils.GetData($e[0], dataName);\n\n // camelCase the attribute name to match the spec\n var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n // Store the data attribute contents into the dataset since\n dataset[camelDataName] = dataValue;\n }\n }\n\n // Prefer the element's `dataset` attribute if it exists\n // jQuery 1.x does not correctly handle data attributes with multiple dashes\n if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n dataset = $.extend(true, {}, $e[0].dataset, dataset);\n }\n\n // Prefer our internal data cache if it exists\n var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n\n data = Utils._convertData(data);\n\n for (var key in data) {\n if ($.inArray(key, excludedData) > -1) {\n continue;\n }\n\n if ($.isPlainObject(this.options[key])) {\n $.extend(this.options[key], data[key]);\n } else {\n this.options[key] = data[key];\n }\n }\n\n return this;\n };\n\n Options.prototype.get = function (key) {\n return this.options[key];\n };\n\n Options.prototype.set = function (key, val) {\n this.options[key] = val;\n };\n\n return Options;\n});\n\nS2.define('select2/core',[\n 'jquery',\n './options',\n './utils',\n './keys'\n], function ($, Options, Utils, KEYS) {\n var Select2 = function ($element, options) {\n if (Utils.GetData($element[0], 'select2') != null) {\n Utils.GetData($element[0], 'select2').destroy();\n }\n\n this.$element = $element;\n\n this.id = this._generateId($element);\n\n options = options || {};\n\n this.options = new Options(options, $element);\n\n Select2.__super__.constructor.call(this);\n\n // Set up the tabindex\n\n var tabindex = $element.attr('tabindex') || 0;\n Utils.StoreData($element[0], 'old-tabindex', tabindex);\n $element.attr('tabindex', '-1');\n\n // Set up containers and adapters\n\n var DataAdapter = this.options.get('dataAdapter');\n this.dataAdapter = new DataAdapter($element, this.options);\n\n var $container = this.render();\n\n this._placeContainer($container);\n\n var SelectionAdapter = this.options.get('selectionAdapter');\n this.selection = new SelectionAdapter($element, this.options);\n this.$selection = this.selection.render();\n\n this.selection.position(this.$selection, $container);\n\n var DropdownAdapter = this.options.get('dropdownAdapter');\n this.dropdown = new DropdownAdapter($element, this.options);\n this.$dropdown = this.dropdown.render();\n\n this.dropdown.position(this.$dropdown, $container);\n\n var ResultsAdapter = this.options.get('resultsAdapter');\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n this.$results = this.results.render();\n\n this.results.position(this.$results, this.$dropdown);\n\n // Bind events\n\n var self = this;\n\n // Bind the container to all of the adapters\n this._bindAdapters();\n\n // Register any DOM event handlers\n this._registerDomEvents();\n\n // Register any internal event handlers\n this._registerDataEvents();\n this._registerSelectionEvents();\n this._registerDropdownEvents();\n this._registerResultsEvents();\n this._registerEvents();\n\n // Set the initial state\n this.dataAdapter.current(function (initialData) {\n self.trigger('selection:update', {\n data: initialData\n });\n });\n\n // Hide the original select\n $element.addClass('select2-hidden-accessible');\n $element.attr('aria-hidden', 'true');\n\n // Synchronize any monitored attributes\n this._syncAttributes();\n\n Utils.StoreData($element[0], 'select2', this);\n\n // Ensure backwards compatibility with $element.data('select2').\n $element.data('select2', this);\n };\n\n Utils.Extend(Select2, Utils.Observable);\n\n Select2.prototype._generateId = function ($element) {\n var id = '';\n\n if ($element.attr('id') != null) {\n id = $element.attr('id');\n } else if ($element.attr('name') != null) {\n id = $element.attr('name') + '-' + Utils.generateChars(2);\n } else {\n id = Utils.generateChars(4);\n }\n\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = 'select2-' + id;\n\n return id;\n };\n\n Select2.prototype._placeContainer = function ($container) {\n $container.insertAfter(this.$element);\n\n var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n if (width != null) {\n $container.css('width', width);\n }\n };\n\n Select2.prototype._resolveWidth = function ($element, method) {\n var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n if (method == 'resolve') {\n var styleWidth = this._resolveWidth($element, 'style');\n\n if (styleWidth != null) {\n return styleWidth;\n }\n\n return this._resolveWidth($element, 'element');\n }\n\n if (method == 'element') {\n var elementWidth = $element.outerWidth(false);\n\n if (elementWidth <= 0) {\n return 'auto';\n }\n\n return elementWidth + 'px';\n }\n\n if (method == 'style') {\n var style = $element.attr('style');\n\n if (typeof(style) !== 'string') {\n return null;\n }\n\n var attrs = style.split(';');\n\n for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n var attr = attrs[i].replace(/\\s/g, '');\n var matches = attr.match(WIDTH);\n\n if (matches !== null && matches.length >= 1) {\n return matches[1];\n }\n }\n\n return null;\n }\n\n if (method == 'computedstyle') {\n var computedStyle = window.getComputedStyle($element[0]);\n\n return computedStyle.width;\n }\n\n return method;\n };\n\n Select2.prototype._bindAdapters = function () {\n this.dataAdapter.bind(this, this.$container);\n this.selection.bind(this, this.$container);\n\n this.dropdown.bind(this, this.$container);\n this.results.bind(this, this.$container);\n };\n\n Select2.prototype._registerDomEvents = function () {\n var self = this;\n\n this.$element.on('change.select2', function () {\n self.dataAdapter.current(function (data) {\n self.trigger('selection:update', {\n data: data\n });\n });\n });\n\n this.$element.on('focus.select2', function (evt) {\n self.trigger('focus', evt);\n });\n\n this._syncA = Utils.bind(this._syncAttributes, this);\n this._syncS = Utils.bind(this._syncSubtree, this);\n\n if (this.$element[0].attachEvent) {\n this.$element[0].attachEvent('onpropertychange', this._syncA);\n }\n\n var observer = window.MutationObserver ||\n window.WebKitMutationObserver ||\n window.MozMutationObserver\n ;\n\n if (observer != null) {\n this._observer = new observer(function (mutations) {\n $.each(mutations, self._syncA);\n $.each(mutations, self._syncS);\n });\n this._observer.observe(this.$element[0], {\n attributes: true,\n childList: true,\n subtree: false\n });\n } else if (this.$element[0].addEventListener) {\n this.$element[0].addEventListener(\n 'DOMAttrModified',\n self._syncA,\n false\n );\n this.$element[0].addEventListener(\n 'DOMNodeInserted',\n self._syncS,\n false\n );\n this.$element[0].addEventListener(\n 'DOMNodeRemoved',\n self._syncS,\n false\n );\n }\n };\n\n Select2.prototype._registerDataEvents = function () {\n var self = this;\n\n this.dataAdapter.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerSelectionEvents = function () {\n var self = this;\n var nonRelayEvents = ['toggle', 'focus'];\n\n this.selection.on('toggle', function () {\n self.toggleDropdown();\n });\n\n this.selection.on('focus', function (params) {\n self.focus(params);\n });\n\n this.selection.on('*', function (name, params) {\n if ($.inArray(name, nonRelayEvents) !== -1) {\n return;\n }\n\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerDropdownEvents = function () {\n var self = this;\n\n this.dropdown.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerResultsEvents = function () {\n var self = this;\n\n this.results.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerEvents = function () {\n var self = this;\n\n this.on('open', function () {\n self.$container.addClass('select2-container--open');\n });\n\n this.on('close', function () {\n self.$container.removeClass('select2-container--open');\n });\n\n this.on('enable', function () {\n self.$container.removeClass('select2-container--disabled');\n });\n\n this.on('disable', function () {\n self.$container.addClass('select2-container--disabled');\n });\n\n this.on('blur', function () {\n self.$container.removeClass('select2-container--focus');\n });\n\n this.on('query', function (params) {\n if (!self.isOpen()) {\n self.trigger('open', {});\n }\n\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:all', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('query:append', function (params) {\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:append', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('keypress', function (evt) {\n var key = evt.which;\n\n if (self.isOpen()) {\n if (key === KEYS.ESC || key === KEYS.TAB ||\n (key === KEYS.UP && evt.altKey)) {\n self.close();\n\n evt.preventDefault();\n } else if (key === KEYS.ENTER) {\n self.trigger('results:select', {});\n\n evt.preventDefault();\n } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n self.trigger('results:toggle', {});\n\n evt.preventDefault();\n } else if (key === KEYS.UP) {\n self.trigger('results:previous', {});\n\n evt.preventDefault();\n } else if (key === KEYS.DOWN) {\n self.trigger('results:next', {});\n\n evt.preventDefault();\n }\n } else {\n if (key === KEYS.ENTER || key === KEYS.SPACE ||\n (key === KEYS.DOWN && evt.altKey)) {\n self.open();\n\n evt.preventDefault();\n }\n }\n });\n };\n\n Select2.prototype._syncAttributes = function () {\n this.options.set('disabled', this.$element.prop('disabled'));\n\n if (this.options.get('disabled')) {\n if (this.isOpen()) {\n this.close();\n }\n\n this.trigger('disable', {});\n } else {\n this.trigger('enable', {});\n }\n };\n\n Select2.prototype._syncSubtree = function (evt, mutations) {\n var changed = false;\n var self = this;\n\n // Ignore any mutation events raised for elements that aren't options or\n // optgroups. This handles the case when the select element is destroyed\n if (\n evt && evt.target && (\n evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'\n )\n ) {\n return;\n }\n\n if (!mutations) {\n // If mutation events aren't supported, then we can only assume that the\n // change affected the selections\n changed = true;\n } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n for (var n = 0; n < mutations.addedNodes.length; n++) {\n var node = mutations.addedNodes[n];\n\n if (node.selected) {\n changed = true;\n }\n }\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n changed = true;\n }\n\n // Only re-pull the data if we think there is a change\n if (changed) {\n this.dataAdapter.current(function (currentData) {\n self.trigger('selection:update', {\n data: currentData\n });\n });\n }\n };\n\n /**\n * Override the trigger method to automatically trigger pre-events when\n * there are events that can be prevented.\n */\n Select2.prototype.trigger = function (name, args) {\n var actualTrigger = Select2.__super__.trigger;\n var preTriggerMap = {\n 'open': 'opening',\n 'close': 'closing',\n 'select': 'selecting',\n 'unselect': 'unselecting',\n 'clear': 'clearing'\n };\n\n if (args === undefined) {\n args = {};\n }\n\n if (name in preTriggerMap) {\n var preTriggerName = preTriggerMap[name];\n var preTriggerArgs = {\n prevented: false,\n name: name,\n args: args\n };\n\n actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n if (preTriggerArgs.prevented) {\n args.prevented = true;\n\n return;\n }\n }\n\n actualTrigger.call(this, name, args);\n };\n\n Select2.prototype.toggleDropdown = function () {\n if (this.options.get('disabled')) {\n return;\n }\n\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n };\n\n Select2.prototype.open = function () {\n if (this.isOpen()) {\n return;\n }\n\n this.trigger('query', {});\n };\n\n Select2.prototype.close = function () {\n if (!this.isOpen()) {\n return;\n }\n\n this.trigger('close', {});\n };\n\n Select2.prototype.isOpen = function () {\n return this.$container.hasClass('select2-container--open');\n };\n\n Select2.prototype.hasFocus = function () {\n return this.$container.hasClass('select2-container--focus');\n };\n\n Select2.prototype.focus = function (data) {\n // No need to re-trigger focus events if we are already focused\n if (this.hasFocus()) {\n return;\n }\n\n this.$container.addClass('select2-container--focus');\n this.trigger('focus', {});\n };\n\n Select2.prototype.enable = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n ' instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n args = [true];\n }\n\n var disabled = !args[0];\n\n this.$element.prop('disabled', disabled);\n };\n\n Select2.prototype.data = function () {\n if (this.options.get('debug') &&\n arguments.length > 0 && window.console && console.warn) {\n console.warn(\n 'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n 'should consider setting the value instead using `$element.val()`.'\n );\n }\n\n var data = [];\n\n this.dataAdapter.current(function (currentData) {\n data = currentData;\n });\n\n return data;\n };\n\n Select2.prototype.val = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n ' removed in later Select2 versions. Use $element.val() instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n return this.$element.val();\n }\n\n var newVal = args[0];\n\n if ($.isArray(newVal)) {\n newVal = $.map(newVal, function (obj) {\n return obj.toString();\n });\n }\n\n this.$element.val(newVal).trigger('change');\n };\n\n Select2.prototype.destroy = function () {\n this.$container.remove();\n\n if (this.$element[0].detachEvent) {\n this.$element[0].detachEvent('onpropertychange', this._syncA);\n }\n\n if (this._observer != null) {\n this._observer.disconnect();\n this._observer = null;\n } else if (this.$element[0].removeEventListener) {\n this.$element[0]\n .removeEventListener('DOMAttrModified', this._syncA, false);\n this.$element[0]\n .removeEventListener('DOMNodeInserted', this._syncS, false);\n this.$element[0]\n .removeEventListener('DOMNodeRemoved', this._syncS, false);\n }\n\n this._syncA = null;\n this._syncS = null;\n\n this.$element.off('.select2');\n this.$element.attr('tabindex',\n Utils.GetData(this.$element[0], 'old-tabindex'));\n\n this.$element.removeClass('select2-hidden-accessible');\n this.$element.attr('aria-hidden', 'false');\n Utils.RemoveData(this.$element[0]);\n this.$element.removeData('select2');\n\n this.dataAdapter.destroy();\n this.selection.destroy();\n this.dropdown.destroy();\n this.results.destroy();\n\n this.dataAdapter = null;\n this.selection = null;\n this.dropdown = null;\n this.results = null;\n };\n\n Select2.prototype.render = function () {\n var $container = $(\n '<span class=\"select2 select2-container\">' +\n '<span class=\"selection\"></span>' +\n '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' +\n '</span>'\n );\n\n $container.attr('dir', this.options.get('dir'));\n\n this.$container = $container;\n\n this.$container.addClass('select2-container--' + this.options.get('theme'));\n\n Utils.StoreData($container[0], 'element', this.$element);\n\n return $container;\n };\n\n return Select2;\n});\n\nS2.define('jquery-mousewheel',[\n 'jquery'\n], function ($) {\n // Used to shim jQuery.mousewheel for non-full builds.\n return $;\n});\n\nS2.define('jquery.select2',[\n 'jquery',\n 'jquery-mousewheel',\n\n './select2/core',\n './select2/defaults',\n './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n if ($.fn.select2 == null) {\n // All methods that should return the element\n var thisMethods = ['open', 'close', 'destroy'];\n\n $.fn.select2 = function (options) {\n options = options || {};\n\n if (typeof options === 'object') {\n this.each(function () {\n var instanceOptions = $.extend(true, {}, options);\n\n var instance = new Select2($(this), instanceOptions);\n });\n\n return this;\n } else if (typeof options === 'string') {\n var ret;\n var args = Array.prototype.slice.call(arguments, 1);\n\n this.each(function () {\n var instance = Utils.GetData(this, 'select2');\n\n if (instance == null && window.console && console.error) {\n console.error(\n 'The select2(\\'' + options + '\\') method was called on an ' +\n 'element that is not using Select2.'\n );\n }\n\n ret = instance[options].apply(instance, args);\n });\n\n // Check if we should be returning `this`\n if ($.inArray(options, thisMethods) > -1) {\n return this;\n }\n\n return ret;\n } else {\n throw new Error('Invalid arguments for Select2: ' + options);\n }\n };\n }\n\n if ($.fn.select2.defaults == null) {\n $.fn.select2.defaults = Defaults;\n }\n\n return Select2;\n});\n\n // Return the AMD loader configuration so it can be used outside of this file\n return {\n define: S2.define,\n require: S2.require\n };\n}());\n\n // Autoload the jQuery bindings\n // We know that all of the modules exist above this, so we're safe\n var select2 = S2.require('jquery.select2');\n\n // Hold the AMD module references on the jQuery function that was just loaded\n // This allows Select2 to use the internal loader outside of this file, such\n // as in the language files.\n jQuery.fn.select2.amd = S2;\n\n // Return the Select2 instance for anyone who is importing it.\n return select2;\n}));\n","/*! smooth-scroll v14.2.1 | (c) 2018 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/smooth-scroll */\nwindow.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t,n=(this.document||this.ownerDocument).querySelectorAll(e),o=this;do{for(t=n.length;--t>=0&&n.item(t)!==o;);}while(t<0&&(o=o.parentElement));return o}),(function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent(\"CustomEvent\");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}if(\"function\"==typeof window.CustomEvent)return!1;e.prototype=window.Event.prototype,window.CustomEvent=e})(),(function(){for(var e=0,t=[\"ms\",\"moz\",\"webkit\",\"o\"],n=0;n<t.length&&!window.requestAnimationFrame;++n)window.requestAnimationFrame=window[t[n]+\"RequestAnimationFrame\"],window.cancelAnimationFrame=window[t[n]+\"CancelAnimationFrame\"]||window[t[n]+\"CancelRequestAnimationFrame\"];window.requestAnimationFrame||(window.requestAnimationFrame=function(t,n){var o=(new Date).getTime(),i=Math.max(0,16-(o-e)),r=window.setTimeout((function(){t(o+i)}),i);return e=o+i,r}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})})(),(function(e,t){\"function\"==typeof define&&define.amd?define([],(function(){return t(e)})):\"object\"==typeof exports?module.exports=t(e):e.SmoothScroll=t(e)})(\"undefined\"!=typeof global?global:\"undefined\"!=typeof window?window:this,(function(e){\"use strict\";var t={ignore:\"[data-scroll-ignore]\",header:null,topOnEmptyHash:!0,speed:500,clip:!0,offset:0,easing:\"easeInOutCubic\",customEasing:null,updateURL:!0,popstate:!0,emitEvents:!0},n=function(){return\"querySelector\"in document&&\"addEventListener\"in e&&\"requestAnimationFrame\"in e&&\"closest\"in e.Element.prototype},o=function(){for(var e={},t=0;t<arguments.length;t++)!(function(t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(arguments[t]);return e},i=function(t){return!!(\"matchMedia\"in e&&e.matchMedia(\"(prefers-reduced-motion)\").matches)},r=function(t){return parseInt(e.getComputedStyle(t).height,10)},a=function(e){var t;try{t=decodeURIComponent(e)}catch(n){t=e}return t},u=function(e){\"#\"===e.charAt(0)&&(e=e.substr(1));for(var t,n=String(e),o=n.length,i=-1,r=\"\",a=n.charCodeAt(0);++i<o;){if(0===(t=n.charCodeAt(i)))throw new InvalidCharacterError(\"Invalid character: the input contains U+0000.\");t>=1&&t<=31||127==t||0===i&&t>=48&&t<=57||1===i&&t>=48&&t<=57&&45===a?r+=\"\\\\\"+t.toString(16)+\" \":r+=t>=128||45===t||95===t||t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122?n.charAt(i):\"\\\\\"+n.charAt(i)}var u;try{u=decodeURIComponent(\"#\"+r)}catch(e){u=\"#\"+r}return u},c=function(e,t){var n;return\"easeInQuad\"===e.easing&&(n=t*t),\"easeOutQuad\"===e.easing&&(n=t*(2-t)),\"easeInOutQuad\"===e.easing&&(n=t<.5?2*t*t:(4-2*t)*t-1),\"easeInCubic\"===e.easing&&(n=t*t*t),\"easeOutCubic\"===e.easing&&(n=--t*t*t+1),\"easeInOutCubic\"===e.easing&&(n=t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1),\"easeInQuart\"===e.easing&&(n=t*t*t*t),\"easeOutQuart\"===e.easing&&(n=1- --t*t*t*t),\"easeInOutQuart\"===e.easing&&(n=t<.5?8*t*t*t*t:1-8*--t*t*t*t),\"easeInQuint\"===e.easing&&(n=t*t*t*t*t),\"easeOutQuint\"===e.easing&&(n=1+--t*t*t*t*t),\"easeInOutQuint\"===e.easing&&(n=t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t),e.customEasing&&(n=e.customEasing(t)),n||t},s=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},l=function(t,n,o,i){var r=0;if(t.offsetParent)do{r+=t.offsetTop,t=t.offsetParent}while(t);return r=Math.max(r-n-o,0),i&&(r=Math.min(r,s()-e.innerHeight)),r},m=function(e){return e?r(e)+e.offsetTop:0},d=function(e,t,n){t||history.pushState&&n.updateURL&&history.pushState({smoothScroll:JSON.stringify(n),anchor:e.id},document.title,e===document.documentElement?\"#top\":\"#\"+e.id)},f=function(t,n,o){0===t&&document.body.focus(),o||(t.focus(),document.activeElement!==t&&(t.setAttribute(\"tabindex\",\"-1\"),t.focus(),t.style.outline=\"none\"),e.scrollTo(0,n))},h=function(t,n,o,i){if(n.emitEvents&&\"function\"==typeof e.CustomEvent){var r=new CustomEvent(t,{bubbles:!0,detail:{anchor:o,toggle:i}});document.dispatchEvent(r)}};return function(r,p){var g,v,w,y,E,b,S,A={};A.cancelScroll=function(e){cancelAnimationFrame(S),S=null,e||h(\"scrollCancel\",g)},A.animateScroll=function(n,i,r){var a=o(g||t,r||{}),u=\"[object Number]\"===Object.prototype.toString.call(n),p=u||!n.tagName?null:n;if(u||p){var v=e.pageYOffset;a.header&&!y&&(y=document.querySelector(a.header)),E||(E=m(y));var w,b,C,O=u?n:l(p,E,parseInt(\"function\"==typeof a.offset?a.offset(n,i):a.offset,10),a.clip),I=O-v,q=s(),F=0,L=function(t,o){var r=e.pageYOffset;if(t==o||r==o||(v<o&&e.innerHeight+r)>=q)return A.cancelScroll(!0),f(n,o,u),h(\"scrollStop\",a,n,i),w=null,S=null,!0},H=function(t){w||(w=t),F+=t-w,b=F/parseInt(a.speed,10),b=b>1?1:b,C=v+I*c(a,b),e.scrollTo(0,Math.floor(C)),L(C,O)||(S=e.requestAnimationFrame(H),w=t)};0===e.pageYOffset&&e.scrollTo(0,0),d(n,u,a),h(\"scrollStart\",a,n,i),A.cancelScroll(!0),e.requestAnimationFrame(H)}};var C=function(t){if(!i()&&0===t.button&&!t.metaKey&&!t.ctrlKey&&\"closest\"in t.target&&(w=t.target.closest(r))&&\"a\"===w.tagName.toLowerCase()&&!t.target.closest(g.ignore)&&w.hostname===e.location.hostname&&w.pathname===e.location.pathname&&/#/.test(w.href)){var n=u(a(w.hash)),o=g.topOnEmptyHash&&\"#\"===n?document.documentElement:document.querySelector(n);o=o||\"#top\"!==n?o:document.documentElement,o&&(t.preventDefault(),A.animateScroll(o,w))}},O=function(e){if(null!==history.state&&history.state.smoothScroll&&history.state.smoothScroll===JSON.stringify(g)&&history.state.anchor){var t=document.querySelector(u(a(history.state.anchor)));t&&A.animateScroll(t,null,{updateURL:!1})}},I=function(e){b||(b=setTimeout((function(){b=null,E=m(y)}),66))};return A.destroy=function(){g&&(document.removeEventListener(\"click\",C,!1),e.removeEventListener(\"resize\",I,!1),e.removeEventListener(\"popstate\",O,!1),A.cancelScroll(),g=null,v=null,w=null,y=null,E=null,b=null,S=null)},A.init=function(i){if(!n())throw\"Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.\";A.destroy(),g=o(t,i||{}),y=g.header?document.querySelector(g.header):null,E=m(y),document.addEventListener(\"click\",C,!1),y&&e.addEventListener(\"resize\",I,!1),g.updateURL&&g.popstate&&e.addEventListener(\"popstate\",O,!1)},A.init(p),A}}));","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var map = {\n\t\"./bg.png\": \"./src/img/bg.png\",\n\t\"./photo1.png\": \"./src/img/photo1.png\",\n\t\"./photo2.jpg\": \"./src/img/photo2.jpg\",\n\t\"./photo3.svg\": \"./src/img/photo3.svg\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./src/img sync \\\\.(png|jpe?g|svg)$\";","module.exports = \"../img/bg.png\";","module.exports = \"../img/photo1.png\";","module.exports = \"../img/photo2.jpg\";","module.exports = \"../fonts/photo3.svg\";","function _gaLt(event) {\n if (typeof ga !== 'function') {\n return;\n }\n\n var el = event.srcElement || event.target;\n\n /* Loop up the DOM tree through parent elements if clicked element is not a link (eg: an image inside a link) */\n while (\n el &&\n (typeof el.tagName == 'undefined' ||\n el.tagName.toLowerCase() != 'a' ||\n !el.href)\n ) {\n el = el.parentNode;\n }\n\n if (el && el.href) {\n /* link */\n var link = el.href;\n if (link.indexOf(location.host) == -1 && !link.match(/^javascript:/i)) {\n /* external link */\n /* HitCallback function to either open link in either same or new window */\n var hitBack = function(link, target) {\n target ? window.open(link, target) : (window.location.href = link);\n };\n /* Is target set and not _(self|parent|top)? */\n var target =\n el.target && !el.target.match(/^_(self|parent|top)$/i)\n ? el.target\n : false;\n /* send event with callback */\n ga(\n 'send',\n 'event',\n 'Outgoing Links',\n link,\n document.location.pathname + document.location.search,\n { hitCallback: hitBack(link, target) },\n );\n\n /* Prevent standard click */\n event.preventDefault ? event.preventDefault() : (event.returnValue = !1);\n }\n }\n}\n\n/* Attach the event to all clicks in the document after page has loaded */\nvar w = window;\nw.addEventListener\n ? w.addEventListener(\n 'load',\n () => {\n document.body.addEventListener('click', _gaLt, !1);\n },\n !1,\n )\n : w.attachEvent &&\n w.attachEvent('onload', () => {\n document.body.attachEvent('onclick', _gaLt);\n });\n","const Obj = {\n init: () => {\n class GoogleMapsHtmlOverlay extends google.maps.OverlayView {\n constructor(options) {\n super();\n const ui = this;\n\n ui.setMap(options.map);\n ui.position = options.position;\n ui.html = options.html\n ? options.html\n : '<div class=\"mapboxgl-marker\"><i class=\"marker-icon fas fa-map-marker-alt\"></i></div>';\n ui.divClass = options.divClass;\n ui.align = options.align;\n ui.isDebugMode = options.debug;\n ui.onClick = options.onClick;\n ui.onMouseOver = options.onMouseOver;\n\n ui.isBoolean = (arg) => {\n if (typeof arg === 'boolean') {\n return true;\n } else {\n return false;\n }\n };\n\n ui.isNotUndefined = (arg) => {\n if (typeof arg !== 'undefined') {\n return true;\n } else {\n return false;\n }\n };\n\n ui.hasContent = (arg) => {\n if (arg.length > 0) {\n return true;\n } else {\n return false;\n }\n };\n\n ui.isString = (arg) => {\n if (typeof arg === 'string') {\n return true;\n } else {\n return false;\n }\n };\n\n ui.isFunction = (arg) => {\n if (typeof arg === 'function') {\n return true;\n } else {\n return false;\n }\n };\n }\n onAdd() {\n const ui = this;\n\n // Create div element.\n ui.div = document.createElement('div');\n ui.div.style.position = 'absolute';\n\n // Validate and set custom div class\n if (ui.isNotUndefined(ui.divClass) && ui.hasContent(ui.divClass))\n ui.div.className = ui.divClass;\n\n // Validate and set custom HTML\n if (\n ui.isNotUndefined(ui.html) &&\n ui.hasContent(ui.html) &&\n ui.isString(ui.html)\n )\n ui.div.innerHTML = ui.html;\n\n // If debug mode is enabled custom content will be replaced with debug content\n if (ui.isBoolean(ui.isDebugMode) && ui.isDebugMode) {\n ui.div.className = 'debug-mode';\n ui.div.innerHTML =\n '<div style=\"height: 10px; width: 10px; background: red; border-radius: 100%;\"></div>' +\n '<div style=\"position: absolute; top: 5px; padding: 5px; width: 130px; text-align: center; font-size: 18px; text-transform: uppercase; font-weight: bolder; background: red; color: white; font-family: Arial;\">Debug mode</div>';\n ui.div.setAttribute(\n 'style',\n 'position: absolute;' +\n 'border: 5px dashed red;' +\n 'height: 150px;' +\n 'width: 150px;' +\n 'display: flex;' +\n 'justify-content: center;' +\n 'align-items: center;',\n );\n }\n\n // Add element to clickable layer\n ui.getPanes().overlayMouseTarget.appendChild(ui.div);\n\n // Add listeners to the element.\n google.maps.event.addDomListener(ui.div, 'click', (event) => {\n google.maps.event.trigger(ui, 'click');\n if (ui.isFunction(ui.onClick)) ui.onClick();\n event.stopPropagation();\n });\n\n google.maps.event.addDomListener(ui.div, 'mouseover', (event) => {\n google.maps.event.trigger(ui, 'mouseover');\n if (ui.isFunction(ui.onMouseOver)) ui.onMouseOver();\n event.stopPropagation();\n });\n }\n\n draw() {\n const ui = this;\n let $div = $(ui.div).find(\n '.mapboxgl-marker,.marker-pin,.mapboxgl-popup,.popup',\n );\n if (!$div.length) {\n $div = $(ui.div);\n }\n\n // Calculate position of div\n const positionInPixels = ui\n .getProjection()\n .fromLatLngToDivPixel(new google.maps.LatLng(ui.position));\n\n // Align HTML overlay relative to original position\n const offset = {\n y: undefined,\n x: undefined,\n };\n const divWidth = $div.outerWidth();\n const divHeight = $div.outerHeight();\n\n switch (Array.isArray(ui.align) ? ui.align.join(' ') : '') {\n case 'left top':\n offset.y = divHeight;\n offset.x = divWidth;\n break;\n case 'left center':\n offset.y = divHeight / 2;\n offset.x = divWidth;\n break;\n case 'left bottom':\n offset.y = 0;\n offset.x = divWidth;\n break;\n case 'center top':\n offset.y = divHeight;\n offset.x = divWidth / 2;\n break;\n case 'center center':\n offset.y = divHeight / 2;\n offset.x = divWidth / 2;\n break;\n case 'center bottom':\n offset.y = 0;\n offset.x = divWidth / 2;\n break;\n case 'right top':\n offset.y = divHeight;\n offset.x = 0;\n break;\n case 'right center':\n offset.y = divHeight / 2;\n offset.x = 0;\n break;\n case 'right bottom':\n offset.y = 0;\n offset.x = 0;\n break;\n default:\n offset.y = divHeight / 2;\n offset.x = divWidth / 2;\n break;\n }\n\n // Set position\n ui.div.style.top = `${positionInPixels.y - offset.y}px`;\n ui.div.style.left = `${positionInPixels.x - offset.x}px`;\n }\n\n getPosition() {\n const ui = this;\n return ui.position;\n }\n\n getDiv() {\n const ui = this;\n return ui.div;\n }\n\n setPosition(position, align) {\n const ui = this;\n ui.position = position;\n ui.align = align;\n ui.draw();\n }\n }\n return GoogleMapsHtmlOverlay;\n },\n};\n\nexport default Obj;\n","'use strict';\n\nimport $ from 'jquery';\nimport Events from '../../_events';\nimport MarkerUI from './_map.google.marker';\n\nconst GoogleMapsDriver = (($) => {\n class GoogleMapsDriver {\n getName() {\n return 'GoogleMapsDriver';\n }\n\n init($el, config = []) {\n const ui = this;\n const W = window;\n\n ui.$el = $el;\n ui.config = config;\n ui.markers = [];\n\n W[`init${ui.getName()}`] = () => {\n ui.googleApiLoaded();\n };\n\n $('body').append(\n `<script async defer src=\"https://maps.googleapis.com/maps/api/js?key=${\n config['key']\n }&callback=init${ui.getName()}\"></script>`,\n );\n }\n\n googleApiLoaded() {\n const ui = this;\n\n const $el = ui.$el;\n const config = ui.config;\n const $mapDiv = $el.find('.mapAPI-map');\n\n const zoom = config['mapZoom'] ? config['mapZoom'] : 10;\n const center = config['center']\n ? {\n lat: config['center'][1],\n lng: config['center'][0],\n }\n : {\n lat: 0,\n lng: 0,\n };\n const style = config['style'] ? config['style'] : null;\n\n console.log(`${ui.getName()}: API is loaded`);\n // init fontawesome icons\n ui.MarkerUI = MarkerUI.init($);\n\n ui.map = new google.maps.Map($mapDiv[0], {\n zoom,\n center,\n fullscreenControl: true,\n styles: style,\n });\n\n ui.default_zoom = zoom;\n\n $mapDiv.addClass('mapboxgl-map');\n\n ui.popup = new ui.MarkerUI({\n map: ui.map,\n align: ['center', 'top'],\n divClass: 'mapboxgl-popup popup mapboxgl-popup-anchor-bottom d-none',\n html:\n '<div class=\"mapboxgl-popup-tip\"></div><div class=\"mapboxgl-popup-content\">' +\n '<div class=\"mapboxgl-popup-close-button\" type=\"button\" aria-label=\"Close popup\">×</div>' +\n '<div class=\"html\"></div>' +\n '</div>',\n });\n\n ui.geocoder = new google.maps.Geocoder();\n\n $el.trigger(Events.MAPAPILOADED);\n }\n\n addMarker(crds, config) {\n const ui = this;\n\n const pos = {\n lat: crds[1],\n lng: crds[0],\n };\n\n const marker = new ui.MarkerUI({\n position: pos,\n map: ui.map,\n align: ['center', 'top'],\n html: `<div class=\"mapboxgl-marker\"><div id=\"Marker${config['id']}\" data-id=\"${config['id']}\" class=\"marker\">${config['icon']}</div></div>`,\n onClick: () => {\n const $el = $(`#Marker${config['id']}`);\n ui.showPopup(pos, config['content']);\n\n $el.trigger(Events.MAPMARKERCLICK);\n },\n });\n\n ui.markers.push(marker);\n\n return marker;\n }\n\n showPopup(pos, content) {\n const ui = this;\n const $popup = $(ui.popup.getDiv());\n\n if (ui.config['flyToMarker']) {\n ui.map.setCenter(pos); // panTo\n ui.map.setZoom(18);\n }\n\n // keep it hidden to render content\n $popup.css({\n opacity: '0',\n });\n $popup.removeClass('d-none');\n\n $popup.find('.mapboxgl-popup-content .html').html(content);\n\n $popup.find('.mapboxgl-popup-close-button').on('click', (e) => {\n e.preventDefault();\n ui.hidePopup();\n });\n\n // set position when content was rendered\n ui.popup.setPosition(pos, ['center', 'top']);\n\n // display popup\n $popup.css({\n 'margin-top': '-1rem',\n opacity: '1',\n });\n }\n\n hidePopup() {\n const ui = this;\n const $popup = $(ui.popup.getDiv());\n\n $popup.addClass('d-none');\n ui.restoreBounds();\n\n ui.$el.trigger(Events.MAPPOPUPCLOSE);\n }\n\n geocode(addr, callback) {\n const ui = this;\n\n ui.geocoder.geocode(\n {\n address: addr,\n },\n (results, status) => {\n if (status === 'OK') {\n //results[0].geometry.location;\n\n if (typeof callback === 'function') {\n callback(results);\n }\n\n return results;\n } else {\n console.error(\n `${ui.getName()}: Geocode was not successful for the following reason: ${status}`,\n );\n }\n },\n );\n }\n\n reverseGeocode(latLng, callback) {\n const ui = this;\n\n ui.geocoder.geocode(\n {\n location: latlng,\n },\n (results, status) => {\n if (status === 'OK') {\n //results[0].formatted_address;\n\n if (typeof callback === 'function') {\n callback(results);\n }\n\n return results;\n } else {\n console.error(\n `${ui.getName()}: Reverse Geocoding was not successful for the following reason: ${status}`,\n );\n }\n },\n );\n }\n\n addGeoJson(config) {\n const ui = this;\n\n const firstMarker = config['geojson'].features[0].geometry.coordinates;\n //Map.setCenter(firstMarker);\n const bounds = new google.maps.LatLngBounds();\n\n // add markers to map\n config['geojson'].features.forEach((marker) => {\n const id = marker.id;\n const crds = marker.geometry.coordinates;\n const content = marker.properties.content;\n\n ui.addMarker(crds, {\n id,\n content,\n icon: marker.icon,\n flyToMarker: config['flyToMarker'],\n });\n\n bounds.extend({\n lat: crds[1],\n lng: crds[0],\n });\n });\n\n ui.map.fitBounds(bounds, {\n padding: 30,\n }); //panToBounds\n\n ui.default_bounds = bounds;\n ui.default_zoom = ui.map.getZoom();\n }\n\n getMap() {\n const ui = this;\n return ui.map;\n }\n\n getPopup() {\n const ui = this;\n return ui.popup;\n }\n\n restoreBounds() {\n const ui = this;\n\n if (ui.default_bounds) {\n ui.map.fitBounds(ui.default_bounds, {\n padding: 30,\n }); //panToBounds\n } else {\n if (ui.markers[0]) {\n ui.map.setCenter(ui.markers[0].getPosition());\n }\n\n ui.restoreZoom();\n }\n }\n\n restoreZoom() {\n const ui = this;\n\n ui.map.setZoom(ui.default_zoom);\n }\n }\n\n return GoogleMapsDriver;\n})($);\n\nexport default GoogleMapsDriver;\n","/**\n * Add your global events here\n */\n\nimport MAP_DRIVER from './_components/drivers/_map.google';\n//import MAP_DRIVER from './_components/drivers/_map.mapbox';\n\nconst CONSTS = {\n ENVS: [\n 'xs',\n 'sm',\n 'md',\n 'lg',\n 'xl',\n 'xxl',\n 'xxxl',\n ],\n MAP_DRIVER,\n};\n\nexport default CONSTS;\n","/**\n * Add your global events here\n */\n\nmodule.exports = {\n AJAX: 'ajax-load',\n LOADED: 'load',\n MAPLOADED: 'map-loaded',\n MAPAPILOADED: 'map-api-loaded',\n MAPMARKERCLICK: 'map-marker-click',\n MAPPOPUPCLOSE: 'map-popup-close',\n SCROLL: 'scroll',\n RESIZE: 'resize',\n SET_TARGET_UPDATE: 'set-target-update',\n RESTORE_FIELD: 'restore-field',\n FORM_INIT_BASICS: 'form-basics',\n FORM_INIT_STEPPED: 'form-init-stepped',\n FORM_INIT_VALIDATE: 'form-init-validate',\n FORM_INIT_VALIDATE_FIELD: 'form-init-validate-field',\n FORM_INIT_STORAGE: 'form-init-storage',\n FORM_VALIDATION_FAILED: 'form-validation-failed',\n FORM_STEPPED_NEW_STEP: 'form-new-step',\n FORM_STEPPED_FIRST_STEP: 'form-first-step',\n FORM_STEPPED_LAST_STEP: 'form-last-step',\n FORM_FIELDS: 'input,textarea,select',\n};\n","/*\n * Conflicts with 'bootstrap/js/dist/dropdown'\n */\n'use strict';\n\nimport $ from 'jquery';\nimport Events from '../_events';\nimport 'jquery-hoverintent/jquery.hoverIntent.js';\n\nconst HoverUI = (($) => {\n // Constants\n const W = window;\n const D = document;\n const $Html = $('html');\n const $Body = $('body');\n\n const NAME = 'jsHoverUI';\n const DATA_KEY = NAME;\n\n class HoverUI {\n // Constructor\n constructor(el) {\n const ui = this;\n const $el = $(el);\n ui.$el = $el;\n\n // find parent\n let $parent = $el.parents('.nav-item, .dropdown');\n $parent = $parent && $parent.length ? $parent.first() : null;\n //$parent = $parent ? $parent : $el.parent();\n ui.$parent = $parent;\n\n // find target\n let $target = $el.data('target');\n $target = $target && $target.length ? $target : null;\n $target = $target\n ? $target\n : $parent\n ? $parent.find('.dropdown-menu')\n : null;\n\n if (!$target || !$target.length) {\n console.warn(`${NAME}: Missing target for:`);\n console.warn($el);\n return;\n }\n\n ui.$target = $target;\n\n const $triger = $parent ? $parent : $el;\n ui.$triger = $triger;\n\n // integrate with dropdown-toggle\n $('[data-toggle=\"dropdown\"]').on('click touch', (e) => {\n ui.hide();\n });\n\n if (!W.isTouch) {\n $triger.hoverIntent({\n sensitivity: 10,\n interval: 50,\n over: () => {\n ui.show();\n },\n out: () => {\n ui.hide();\n },\n });\n }\n\n $el.on('click touch', (e) => {\n if (!$el.data('allow-click')) {\n e.preventDefault();\n }\n\n if (ui.isShown()) {\n ui.hide();\n } else {\n ui.show();\n }\n });\n\n $el.data(NAME, ui);\n $triger.addClass(`${NAME}-active`);\n }\n\n isShown() {\n return this.$target.hasClass('show');\n }\n\n show() {\n const ui = this;\n ui.$el\n .parents('.dropdown')\n .not('.active')\n .each((i, el) => {\n const $el = $(el);\n $el.find('.dropdown').removeClass('show');\n $el.addClass('show');\n });\n\n ui.$target.addClass('show');\n }\n\n hide() {\n const ui = this;\n const $el = ui.$target;\n $el.removeClass('show');\n $el.find('.dropdown-menu').removeClass('show');\n $el.parent('.dropdown').removeClass('show');\n }\n\n dispose() {\n const ui = this;\n const $el = ui.$el;\n\n ui.$triger.removeClass(`${NAME}-active`);\n $.removeData($el, DATA_KEY);\n\n ui.$el = null;\n ui.$parent = null;\n ui.$target = null;\n ui.$triger = null;\n }\n\n static _jQueryInterface() {\n return this.each(function() {\n // attach functionality to el\n const $el = $(this);\n let data = $el.data(DATA_KEY);\n\n if (!data) {\n data = new HoverUI(this);\n $el.data(DATA_KEY, data);\n }\n });\n }\n }\n\n // jQuery interface\n $.fn[NAME] = HoverUI._jQueryInterface;\n $.fn[NAME].Constructor = HoverUI;\n $.fn[NAME].noConflict = function() {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return HoverUI._jQueryInterface;\n };\n\n // auto-apply\n $('[data-toggle=\"hover\"]').ready(() => {\n $('[data-toggle=\"hover\"]').jsHoverUI();\n });\n\n // rewrite 'bootstrap/js/dist/dropdown'\n $('[data-toggle=\"dropdown\"]').on('click touch', (e) => {\n e.preventDefault();\n\n const $el = $(e.currentTarget);\n const $parent = $el.parent('.dropdown');\n\n // hide siblings\n $parent\n .parent()\n .find('.dropdown, .dropdown-menu')\n .removeClass('show');\n\n if ($parent.hasClass('show')) {\n $parent.removeClass('show');\n $parent.find('.dropdown-menu').removeClass('show');\n } else {\n $parent.addClass('show');\n $parent.find('.dropdown-menu').addClass('show');\n }\n });\n\n return HoverUI;\n})($);\n\nexport default HoverUI;\n","import $ from 'jquery';\n\nimport 'hammerjs/hammer';\nimport 'jquery-hammerjs/jquery.hammer';\n\nimport Events from '../_events';\n\nconst CarouselUI = (($) => {\n // Constants\n const NAME = 'CarouselUI';\n\n class CarouselUI {\n // Static methods\n\n static each(callback) {\n $('.js-carousel').each((i, e) => {\n callback(i, $(e));\n });\n }\n\n static init() {\n this.dispose();\n\n this.each((i, e) => {\n const $e = $(e),\n id = `Carousel${i}`;\n\n $e.attr('id', id);\n $e.data('id', i);\n\n const $items = $(e).find('.carousel-item'),\n count = $items.length;\n if (!count) {\n return;\n }\n\n // create carousel-controls\n if ($e.data('indicators')) {\n const $indicators = $('<ol class=\"carousel-indicators\"></ol>');\n $indicators.append(`<li data-target=\"#${ id }\" data-slide-to=\"0\" class=\"active\"></li>`);\n for (let i = 1; i < count; i++) {\n $indicators.append(`<li data-target=\"#${ id }\" data-slide-to=\"${ i }\"></li>`);\n }\n $e.prepend($indicators);\n }\n\n // create arrows\n if ($e.data('arrows')) {\n $e.prepend(`<i class=\"carousel-control-prev\" data-target=\"#${ id }\" role=\"button\" data-slide=\"prev\"><i class=\"fas fa-chevron-left\" aria-hidden=\"true\"></i><i class=\"sr-only\">Previous</i></i>`);\n $e.prepend(`<i class=\"carousel-control-next\" data-target=\"#${ id }\" role=\"button\" data-slide=\"next\"><i class=\"fas fa-chevron-right\" aria-hidden=\"true\"></i><i class=\"sr-only\">Next</i></i>`);\n }\n\n // init carousel\n $e.carousel();\n\n const $youtubeSlides = $e.find('iframe[src^=\"https://www.youtube.com/embed/\"]');\n\n $e.on('slide.bs.carousel', () => {\n if ($youtubeSlides.length) {\n $youtubeSlides.each((i, e) => {\n const $e = $(e);\n try {\n $e.data('player', new YT.Player(e, {\n events: {\n 'onReady': () => {\n $e.data('player').pauseVideo();\n },\n },\n }));\n\n $e.data('player').pauseVideo();\n } catch (e) {}\n });\n }\n });\n\n $e.find('.carousel-control-prev').on('click', (e) => {\n e.preventDefault();\n $e.carousel('prev');\n });\n\n $e.find('.carousel-control-next').on('click', (e) => {\n e.preventDefault();\n $e.carousel('next');\n });\n\n // init touch swipes\n $e.hammer().bind('swipeleft panleft', (e) => {\n $(event.target).carousel('next');\n });\n\n $e.hammer().bind('swiperight panright', (e) => {\n $(event.target).carousel('prev');\n });\n\n /*$e.find('.carousel-item').hammer().bind('tap', (event) => {\n $(event.target).carousel('next');\n });*/\n });\n }\n\n static dispose() {\n this.each((i, e) => {\n $(e).carousel('dispose');\n });\n }\n }\n\n $(window).on(`${Events.AJAX} ${Events.LOADED}`, () => {\n CarouselUI.init();\n });\n\n return CarouselUI;\n})($);\n\nexport default CarouselUI;\n","import $ from 'jquery';\n\nconst SlidingMenu = (($) => {\n // Constants\n const NAME = 'jsSlidingMenu';\n const DATA_KEY = NAME;\n\n class SlidingMenu {\n // Constructor\n constructor(element) {\n this._element = element;\n const $element = $(this._element);\n $element.addClass(`${NAME}-active`);\n\n // esc button\n $(window).on('keyup',((e) => {\n if (e.which === 27) {\n $element.find('.is-open[data-toggle=\"offcanvas\"]').click();\n }\n }));\n }\n\n // Public methods\n dispose() {\n console.log(`Disposing: ${NAME} elements`);\n\n $(this._element).removeClass(`${NAME}-active`);\n $.removeData(this._element, DATA_KEY);\n this._element = null;\n }\n\n static _jQueryInterface() {\n return this.each(function () {\n // attach functionality to element\n const $element = $(this);\n let data = $element.data(DATA_KEY);\n\n if (!data) {\n data = new SlidingMenu(this);\n $element.data(DATA_KEY, data);\n }\n });\n }\n }\n\n // jQuery interface\n $.fn[NAME] = SlidingMenu._jQueryInterface;\n $.fn[NAME].Constructor = SlidingMenu;\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return SlidingMenu._jQueryInterface;\n };\n\n // auto-apply\n $(`.ui.${NAME}`).ready(() => {\n $(`.ui.${NAME}`).jsSlidingMenu();\n });\n\n return SlidingMenu;\n})($);\n\nexport default SlidingMenu;\n","\"use strict\";\n\nconst CookieUI = (($) => {\n const D = document;\n const W = window;\n\n class CookieUI {\n static get(name) {\n return D.cookie.split(\"; \").reduce((r, v) => {\n const parts = v.split(\"=\");\n return parts[0] === name ? decodeURIComponent(parts[1]) : r;\n }, \"\");\n }\n\n static set(name, value, days = 7, path = \"/\") {\n const expires = new Date(Date.now() + days * 864e5).toUTCString();\n D.cookie =\n `${name \n }=${ \n encodeURIComponent(value) \n }; expires=${ \n expires \n }; path=${ \n path}`;\n }\n }\n\n //W.CookieUI = new CookieUI();\n\n return CookieUI;\n})($);\n\nexport default CookieUI;\n","\"use strict\";\n\nimport $ from 'jquery';\n\nimport Events from '../_events';\nimport CookieUI from './_ui.cookie';\n\nconst FlyoutUI = (($) => {\n const W = window;\n const D = document;\n const $Body = $('body');\n\n const NAME = 'FlyoutUI';\n const COOKIE = `${NAME}-hide`;\n const TIMEOUT = 2000;\n\n class FlyoutUI {\n static init() {\n const ui = this;\n\n ui.$modal = $(`.flyout-${NAME}`);\n\n if (!ui.$modal.length) {\n return false;\n }\n\n const $close = ui.$modal.find(`.flyout-${NAME}__close`);\n ui.$modal.data(NAME, ui);\n\n if ($close.length) {\n $close.on('click', () => {\n ui.hide();\n });\n }\n\n const hide = CookieUI.get(COOKIE);\n\n if (!$close.length || !hide || hide !== 'true') {\n setTimeout(() => {\n ui.show();\n }, TIMEOUT);\n }\n\n }\n\n static show(callback) {\n const ui = this;\n\n ui.$modal.addClass(`flyout-${NAME}__active`);\n }\n\n static hide(callback) {\n const ui = this;\n\n CookieUI.set(COOKIE, 'true', 1);\n ui.$modal.removeClass(`flyout-${NAME}__active`);\n }\n }\n\n $(W).on(`${Events.AJAX} ${Events.LOADED}`, () => {\n FlyoutUI.init();\n });\n\n W.FlyoutUI = FlyoutUI;\n\n return FlyoutUI;\n})($);\n\nexport default FlyoutUI;\n","/**\r\n * Sticky Sidebar JavaScript Plugin.\r\n * @version 3.3.1\r\n * @author Ahmed Bouhuolia <a.bouhuolia@gmail.com>\r\n * @license The MIT License (MIT)\r\n */\r\nconst StickySidebar = (() => {\r\n \r\n // ---------------------------------\r\n // # Define Constants\r\n // ---------------------------------\r\n //\r\n const EVENT_KEY = '.stickySidebar';\r\n const VERSION = '3.3.1';\r\n \r\n const DEFAULTS = {\r\n \r\n /**\r\n * Additional top spacing of the element when it becomes sticky.\r\n * @type {Numeric|Function}\r\n */\r\n topSpacing: 0,\r\n \r\n /**\r\n * Additional bottom spacing of the element when it becomes sticky.\r\n * @type {Numeric|Function}\r\n */\r\n bottomSpacing: 0,\r\n \r\n /**\r\n * Container sidebar selector to know what the beginning and end of sticky element.\r\n * @type {String|False}\r\n */\r\n containerSelector: false,\r\n \r\n /**\r\n * Inner wrapper selector.\r\n * @type {String}\r\n */\r\n innerWrapperSelector: '.inner-wrapper-sticky',\r\n \r\n /**\r\n * The name of CSS class to apply to elements when they have become stuck.\r\n * @type {String|False}\r\n */\r\n stickyClass: 'is-affixed',\r\n \r\n /**\r\n * Detect when sidebar and its container change height so re-calculate their dimensions.\r\n * @type {Boolean}\r\n */\r\n resizeSensor: true,\r\n \r\n /**\r\n * The sidebar returns to its normal position if its width below this value.\r\n * @type {Numeric}\r\n */\r\n minWidth: false\r\n };\r\n \r\n // ---------------------------------\r\n // # Class Definition\r\n // ---------------------------------\r\n //\r\n /**\r\n * Sticky Sidebar Class.\r\n * @public\r\n */\r\n class StickySidebar{\r\n \r\n /**\r\n * Sticky Sidebar Constructor.\r\n * @constructor\r\n * @param {HTMLElement|String} sidebar - The sidebar element or sidebar selector.\r\n * @param {Object} options - The options of sticky sidebar.\r\n */\r\n constructor(sidebar, options = {}){\r\n this.options = StickySidebar.extend(DEFAULTS, options);\r\n \r\n // Sidebar element query if there's no one, throw error.\r\n this.sidebar = ('string' === typeof sidebar ) ? document.querySelector(sidebar) : sidebar;\r\n if( 'undefined' === typeof this.sidebar )\r\n throw new Error(\"There is no specific sidebar element.\");\r\n \r\n this.sidebarInner = false;\r\n this.container = this.sidebar.parentElement;\r\n \r\n // Current Affix Type of sidebar element.\r\n this.affixedType = 'STATIC';\r\n this.direction = 'down';\r\n this.support = {\r\n transform: false,\r\n transform3d: false\r\n };\r\n \r\n this._initialized = false;\r\n this._reStyle = false;\r\n this._breakpoint = false;\r\n this._resizeListeners = [];\r\n \r\n // Dimensions of sidebar, container and screen viewport.\r\n this.dimensions = {\r\n translateY: 0,\r\n topSpacing: 0,\r\n lastTopSpacing: 0,\r\n bottomSpacing: 0,\r\n lastBottomSpacing: 0,\r\n sidebarHeight: 0,\r\n sidebarWidth: 0,\r\n containerTop: 0,\r\n containerHeight: 0,\r\n viewportHeight: 0,\r\n viewportTop: 0, \r\n lastViewportTop: 0,\r\n };\r\n \r\n // Bind event handlers for referencability.\r\n ['handleEvent'].forEach( (method) => {\r\n this[method] = this[method].bind(this);\r\n });\r\n \r\n // Initialize sticky sidebar for first time.\r\n this.initialize();\r\n }\r\n \r\n /**\r\n * Initializes the sticky sidebar by adding inner wrapper, define its container, \r\n * min-width breakpoint, calculating dimensions, adding helper classes and inline style.\r\n * @private\r\n */\r\n initialize(){\r\n this._setSupportFeatures();\r\n \r\n // Get sticky sidebar inner wrapper, if not found, will create one.\r\n if( this.options.innerWrapperSelector ){\r\n this.sidebarInner = this.sidebar.querySelector(this.options.innerWrapperSelector);\r\n \r\n if( null === this.sidebarInner )\r\n this.sidebarInner = false;\r\n }\r\n \r\n if( ! this.sidebarInner ){\r\n let wrapper = document.createElement('div');\r\n wrapper.setAttribute('class', 'inner-wrapper-sticky');\r\n this.sidebar.appendChild(wrapper);\r\n \r\n while( this.sidebar.firstChild != wrapper )\r\n wrapper.appendChild(this.sidebar.firstChild);\r\n \r\n this.sidebarInner = this.sidebar.querySelector('.inner-wrapper-sticky');\r\n }\r\n \r\n // Container wrapper of the sidebar.\r\n if( this.options.containerSelector ){\r\n let containers = document.querySelectorAll(this.options.containerSelector);\r\n containers = Array.prototype.slice.call(containers);\r\n \r\n containers.forEach((container, item) => {\r\n if( ! container.contains(this.sidebar) ) return;\r\n this.container = container;\r\n });\r\n \r\n if( ! containers.length )\r\n throw new Error(\"The container does not contains on the sidebar.\");\r\n }\r\n \r\n // If top/bottom spacing is not function parse value to integer.\r\n if( 'function' !== typeof this.options.topSpacing )\r\n this.options.topSpacing = parseInt(this.options.topSpacing) || 0;\r\n \r\n if( 'function' !== typeof this.options.bottomSpacing )\r\n this.options.bottomSpacing = parseInt(this.options.bottomSpacing) || 0;\r\n \r\n // Breakdown sticky sidebar if screen width below `options.minWidth`.\r\n this._widthBreakpoint();\r\n \r\n // Calculate dimensions of sidebar, container and viewport.\r\n this.calcDimensions();\r\n \r\n // Affix sidebar in proper position.\r\n this.stickyPosition();\r\n \r\n // Bind all events.\r\n this.bindEvents();\r\n \r\n // Inform other properties the sticky sidebar is initialized.\r\n this._initialized = true;\r\n }\r\n \r\n /**\r\n * Bind all events of sticky sidebar plugin.\r\n * @protected\r\n */\r\n bindEvents(){\r\n window.addEventListener('resize', this, {passive: true, capture: false});\r\n window.addEventListener('scroll', this, {passive: true, capture: false});\r\n \r\n this.sidebar.addEventListener('update' + EVENT_KEY, this);\r\n \r\n if( this.options.resizeSensor && 'undefined' !== typeof ResizeSensor ){\r\n new ResizeSensor(this.sidebarInner, this.handleEvent);\r\n new ResizeSensor(this.container, this.handleEvent);\r\n }\r\n }\r\n \r\n /**\r\n * Handles all events of the plugin.\r\n * @param {Object} event - Event object passed from listener.\r\n */\r\n handleEvent(event){\r\n this.updateSticky(event);\r\n }\r\n \r\n /**\r\n * Calculates dimensions of sidebar, container and screen viewpoint\r\n * @public\r\n */\r\n calcDimensions(){\r\n if( this._breakpoint ) return;\r\n var dims = this.dimensions;\r\n \r\n // Container of sticky sidebar dimensions.\r\n dims.containerTop = StickySidebar.offsetRelative(this.container).top;\r\n dims.containerHeight = this.container.clientHeight;\r\n dims.containerBottom = dims.containerTop + dims.containerHeight;\r\n \r\n // Sidebar dimensions.\r\n dims.sidebarHeight = this.sidebarInner.offsetHeight;\r\n dims.sidebarWidth = this.sidebar.offsetWidth;\r\n \r\n // Screen viewport dimensions.\r\n dims.viewportHeight = window.innerHeight;\r\n \r\n this._calcDimensionsWithScroll();\r\n }\r\n \r\n /**\r\n * Some dimensions values need to be up-to-date when scrolling the page.\r\n * @private\r\n */\r\n _calcDimensionsWithScroll(){\r\n var dims = this.dimensions;\r\n \r\n dims.sidebarLeft = StickySidebar.offsetRelative(this.sidebar).left;\r\n \r\n dims.viewportTop = document.documentElement.scrollTop || document.body.scrollTop;\r\n dims.viewportBottom = dims.viewportTop + dims.viewportHeight;\r\n dims.viewportLeft = document.documentElement.scrollLeft || document.body.scrollLeft;\r\n \r\n dims.topSpacing = this.options.topSpacing;\r\n dims.bottomSpacing = this.options.bottomSpacing;\r\n \r\n if( 'function' === typeof dims.topSpacing )\r\n dims.topSpacing = parseInt(dims.topSpacing(this.sidebar)) || 0;\r\n \r\n if( 'function' === typeof dims.bottomSpacing )\r\n dims.bottomSpacing = parseInt(dims.bottomSpacing(this.sidebar)) || 0;\r\n \r\n if( 'VIEWPORT-TOP' === this.affixedType ){\r\n // Adjust translate Y in the case decrease top spacing value.\r\n if( dims.topSpacing < dims.lastTopSpacing ){\r\n dims.translateY += dims.lastTopSpacing - dims.topSpacing;\r\n this._reStyle = true; \r\n }\r\n \r\n } else if( 'VIEWPORT-BOTTOM' === this.affixedType ){\r\n // Adjust translate Y in the case decrease bottom spacing value.\r\n if( dims.bottomSpacing < dims.lastBottomSpacing ){\r\n dims.translateY += dims.lastBottomSpacing - dims.bottomSpacing;\r\n this._reStyle = true;\r\n }\r\n }\r\n \r\n dims.lastTopSpacing = dims.topSpacing;\r\n dims.lastBottomSpacing = dims.bottomSpacing;\r\n }\r\n \r\n /**\r\n * Determine whether the sidebar is bigger than viewport.\r\n * @public\r\n * @return {Boolean}\r\n */\r\n isSidebarFitsViewport(){\r\n return this.dimensions.sidebarHeight < this.dimensions.viewportHeight;\r\n }\r\n \r\n /**\r\n * Observe browser scrolling direction top and down.\r\n */\r\n observeScrollDir(){\r\n var dims = this.dimensions;\r\n if( dims.lastViewportTop === dims.viewportTop ) return;\r\n \r\n var furthest = 'down' === this.direction ? Math.min : Math.max;\r\n \r\n // If the browser is scrolling not in the same direction.\r\n if( dims.viewportTop === furthest(dims.viewportTop, dims.lastViewportTop) )\r\n this.direction = 'down' === this.direction ? 'up' : 'down';\r\n }\r\n \r\n /**\r\n * Gets affix type of sidebar according to current scrollTop and scrollLeft.\r\n * Holds all logical affix of the sidebar when scrolling up and down and when sidebar \r\n * is bigger than viewport and vice versa.\r\n * @public\r\n * @return {String|False} - Proper affix type.\r\n */\r\n getAffixType(){\r\n var dims = this.dimensions, affixType = false;\r\n \r\n this._calcDimensionsWithScroll();\r\n \r\n var sidebarBottom = dims.sidebarHeight + dims.containerTop;\r\n var colliderTop = dims.viewportTop + dims.topSpacing;\r\n var colliderBottom = dims.viewportBottom - dims.bottomSpacing;\r\n \r\n // When browser is scrolling top.\r\n if( 'up' === this.direction ){\r\n if( colliderTop <= dims.containerTop ){\r\n dims.translateY = 0;\r\n affixType = 'STATIC';\r\n \r\n } else if( colliderTop <= dims.translateY + dims.containerTop ){\r\n dims.translateY = colliderTop - dims.containerTop;\r\n affixType = 'VIEWPORT-TOP';\r\n \r\n } else if( ! this.isSidebarFitsViewport() && dims.containerTop <= colliderTop ){\r\n affixType = 'VIEWPORT-UNBOTTOM';\r\n }\r\n // When browser is scrolling up.\r\n } else {\r\n // When sidebar element is not bigger than screen viewport.\r\n if( this.isSidebarFitsViewport() ){\r\n \r\n if( dims.sidebarHeight + colliderTop >= dims.containerBottom ){\r\n dims.translateY = dims.containerBottom - sidebarBottom;\r\n affixType = 'CONTAINER-BOTTOM'; \r\n \r\n } else if( colliderTop >= dims.containerTop ){\r\n dims.translateY = colliderTop - dims.containerTop;\r\n affixType = 'VIEWPORT-TOP';\r\n }\r\n // When sidebar element is bigger than screen viewport.\r\n } else {\r\n \r\n if( dims.containerBottom <= colliderBottom ){\r\n dims.translateY = dims.containerBottom - sidebarBottom; \r\n affixType = 'CONTAINER-BOTTOM'; \r\n \r\n } else if( sidebarBottom + dims.translateY <= colliderBottom ){\r\n dims.translateY = colliderBottom - sidebarBottom;\r\n affixType = 'VIEWPORT-BOTTOM';\r\n \r\n } else if( dims.containerTop + dims.translateY <= colliderTop ){\r\n affixType = 'VIEWPORT-UNBOTTOM';\r\n }\r\n }\r\n }\r\n \r\n // Make sure the translate Y is not bigger than container height.\r\n dims.translateY = Math.max(0, dims.translateY);\r\n dims.translateY = Math.min(dims.containerHeight, dims.translateY);\r\n \r\n dims.lastViewportTop = dims.viewportTop;\r\n return affixType;\r\n }\r\n \r\n /**\r\n * Gets inline style of sticky sidebar wrapper and inner wrapper according \r\n * to its affix type.\r\n * @private\r\n * @param {String} affixType - Affix type of sticky sidebar.\r\n * @return {Object}\r\n */\r\n _getStyle(affixType){\r\n if( 'undefined' === typeof affixType ) return;\r\n \r\n var style = {inner: {}, outer: {}};\r\n var dims = this.dimensions;\r\n \r\n switch( affixType ){\r\n case 'VIEWPORT-TOP':\r\n style.inner = {position: 'fixed', top: dims.topSpacing,\r\n left: dims.sidebarLeft - dims.viewportLeft, width: dims.sidebarWidth};\r\n break;\r\n case 'VIEWPORT-BOTTOM':\r\n style.inner = {position: 'fixed', top: 'auto', left: dims.sidebarLeft,\r\n bottom: dims.bottomSpacing, width: dims.sidebarWidth};\r\n break;\r\n case 'CONTAINER-BOTTOM':\r\n case 'VIEWPORT-UNBOTTOM':\r\n let translate = this._getTranslate(0, dims.translateY + 'px');\r\n \r\n if( translate )\r\n style.inner = {transform: translate};\r\n else \r\n style.inner = {position: 'absolute', top: dims.translateY, width: dims.sidebarWidth};\r\n break;\r\n }\r\n \r\n switch( affixType ){\r\n case 'VIEWPORT-TOP':\r\n case 'VIEWPORT-BOTTOM':\r\n case 'VIEWPORT-UNBOTTOM':\r\n case 'CONTAINER-BOTTOM':\r\n style.outer = {height: dims.sidebarHeight, position: 'relative'};\r\n break;\r\n }\r\n \r\n style.outer = StickySidebar.extend({height: '', position: ''}, style.outer);\r\n style.inner = StickySidebar.extend({position: 'relative', top: '', left: '',\r\n bottom: '', width: '', transform: this._getTranslate()}, style.inner);\r\n \r\n return style;\r\n }\r\n \r\n /**\r\n * Cause the sidebar to be sticky according to affix type by adding inline\r\n * style, adding helper class and trigger events.\r\n * @function\r\n * @protected\r\n * @param {string} force - Update sticky sidebar position by force.\r\n */\r\n stickyPosition(force){\r\n if( this._breakpoint ) return;\r\n \r\n force = this._reStyle || force || false;\r\n \r\n var offsetTop = this.options.topSpacing;\r\n var offsetBottom = this.options.bottomSpacing;\r\n \r\n var affixType = this.getAffixType();\r\n var style = this._getStyle(affixType);\r\n \r\n if( (this.affixedType != affixType || force) && affixType ){\r\n let affixEvent = 'affix.' + affixType.toLowerCase().replace('viewport-', '') + EVENT_KEY;\r\n StickySidebar.eventTrigger(this.sidebar, affixEvent);\r\n \r\n if( 'STATIC' === affixType )\r\n StickySidebar.removeClass(this.sidebar, this.options.stickyClass);\r\n else\r\n StickySidebar.addClass(this.sidebar, this.options.stickyClass);\r\n \r\n for( let key in style.outer ){\r\n let _unit = ('number' === typeof style.outer[key]) ? 'px' : '';\r\n this.sidebar.style[key] = style.outer[key];\r\n }\r\n \r\n for( let key in style.inner ){\r\n let _unit = ('number' === typeof style.inner[key]) ? 'px' : '';\r\n this.sidebarInner.style[key] = style.inner[key] + _unit;\r\n }\r\n \r\n let affixedEvent = 'affixed.'+ affixType.toLowerCase().replace('viewport-', '') + EVENT_KEY;\r\n StickySidebar.eventTrigger(this.sidebar, affixedEvent);\r\n } else {\r\n if( this._initialized ) this.sidebarInner.style.left = style.inner.left;\r\n }\r\n \r\n this.affixedType = affixType;\r\n }\r\n \r\n /**\r\n * Breakdown sticky sidebar when window width is below `options.minWidth` value.\r\n * @protected\r\n */\r\n _widthBreakpoint(){\r\n \r\n if( window.innerWidth <= this.options.minWidth ){\r\n this._breakpoint = true;\r\n this.affixedType = 'STATIC';\r\n \r\n this.sidebar.removeAttribute('style');\r\n StickySidebar.removeClass(this.sidebar, this.options.stickyClass);\r\n this.sidebarInner.removeAttribute('style');\r\n } else {\r\n this._breakpoint = false;\r\n }\r\n }\r\n \r\n /**\r\n * Switches between functions stack for each event type, if there's no \r\n * event, it will re-initialize sticky sidebar.\r\n * @public\r\n */\r\n updateSticky(event = {}){\r\n if( this._running ) return;\r\n this._running = true;\r\n \r\n ((eventType) => {\r\n\r\n requestAnimationFrame(() => {\r\n switch( eventType ){\r\n // When browser is scrolling and re-calculate just dimensions\r\n // within scroll. \r\n case 'scroll':\r\n this._calcDimensionsWithScroll();\r\n this.observeScrollDir();\r\n this.stickyPosition();\r\n break;\r\n \r\n // When browser is resizing or there's no event, observe width\r\n // breakpoint and re-calculate dimensions.\r\n case 'resize':\r\n default: \r\n this._widthBreakpoint();\r\n this.calcDimensions();\r\n this.stickyPosition(true);\r\n break;\r\n }\r\n this._running = false;\r\n });\r\n })(event.type);\r\n }\r\n \r\n /**\r\n * Set browser support features to the public property.\r\n * @private\r\n */\r\n _setSupportFeatures(){\r\n var support = this.support;\r\n \r\n support.transform = StickySidebar.supportTransform();\r\n support.transform3d = StickySidebar.supportTransform(true);\r\n }\r\n \r\n /**\r\n * Get translate value, if the browser supports transfrom3d, it will adopt it.\r\n * and the same with translate. if browser doesn't support both return false.\r\n * @param {Number} y - Value of Y-axis.\r\n * @param {Number} x - Value of X-axis.\r\n * @param {Number} z - Value of Z-axis.\r\n * @return {String|False}\r\n */\r\n _getTranslate(y = 0, x = 0, z = 0){\r\n if( this.support.transform3d ) return 'translate3d(' + y +', '+ x +', '+ z +')';\r\n else if( this.support.translate ) return 'translate('+ y +', '+ x +')';\r\n else return false;\r\n }\r\n \r\n /**\r\n * Destroy sticky sidebar plugin.\r\n * @public\r\n */\r\n destroy(){\r\n window.removeEventListener('resize', this, {caption: false});\r\n window.removeEventListener('scroll', this, {caption: false});\r\n \r\n this.sidebar.classList.remove(this.options.stickyClass);\r\n this.sidebar.style.minHeight = '';\r\n \r\n this.sidebar.removeEventListener('update' + EVENT_KEY, this);\r\n \r\n var styleReset = {inner: {}, outer: {}};\r\n \r\n styleReset.inner = {position: '', top: '', left: '', bottom: '', width: '', transform: ''};\r\n styleReset.outer = {height: '', position: ''};\r\n \r\n for( let key in styleReset.outer )\r\n this.sidebar.style[key] = styleReset.outer[key];\r\n \r\n for( let key in styleReset.inner )\r\n this.sidebarInner.style[key] = styleReset.inner[key];\r\n \r\n if( this.options.resizeSensor && 'undefined' !== typeof ResizeSensor ){\r\n ResizeSensor.detach(this.sidebarInner, this.handleEvent);\r\n ResizeSensor.detach(this.container, this.handleEvent);\r\n }\r\n }\r\n \r\n /**\r\n * Determine if the browser supports CSS transform feature.\r\n * @function\r\n * @static\r\n * @param {Boolean} transform3d - Detect transform with translate3d.\r\n * @return {String}\r\n */\r\n static supportTransform(transform3d){\r\n var result = false,\r\n property = (transform3d) ? 'perspective' : 'transform',\r\n upper = property.charAt(0).toUpperCase() + property.slice(1),\r\n prefixes = ['Webkit', 'Moz', 'O', 'ms'],\r\n support = document.createElement('support'),\r\n style = support.style;\r\n \r\n (property + ' ' + prefixes.join(upper + ' ') + upper).split(' ').forEach(function(property, i) {\r\n if (style[property] !== undefined) {\r\n result = property;\r\n return false;\r\n }\r\n });\r\n return result;\r\n }\r\n \r\n /**\r\n * Trigger custom event.\r\n * @static\r\n * @param {DOMObject} element - Target element on the DOM.\r\n * @param {String} eventName - Event name.\r\n * @param {Object} data - \r\n */\r\n static eventTrigger(element, eventName, data){\r\n try{\r\n var event = new CustomEvent(eventName, {detail: data});\r\n } catch(e){\r\n var event = document.createEvent('CustomEvent');\r\n event.initCustomEvent(eventName, true, true, data);\r\n }\r\n element.dispatchEvent(event);\r\n }\r\n \r\n /**\r\n * Extend options object with defaults.\r\n * @function\r\n * @static\r\n */\r\n static extend(defaults, options){\r\n var results = {};\r\n for( let key in defaults ){\r\n if( 'undefined' !== typeof options[key] ) results[key] = options[key];\r\n else results[key] = defaults[key];\r\n }\r\n return results;\r\n }\r\n \r\n /**\r\n * Get current coordinates left and top of specific element.\r\n * @static\r\n */\r\n static offsetRelative(element){\r\n var result = {left: 0, top: 0};\r\n\r\n do{\r\n let offsetTop = element.offsetTop;\r\n let offsetLeft = element.offsetLeft;\r\n \r\n if( ! isNaN(offsetTop) )\r\n result.top += offsetTop;\r\n \r\n if( ! isNaN(offsetLeft) )\r\n result.left += offsetLeft;\r\n\r\n element = ( 'BODY' === element.tagName ) ?\r\n element.parentElement : element.offsetParent;\r\n } while(element)\r\n return result;\r\n }\r\n \r\n /**\r\n * Add specific class name to specific element.\r\n * @static \r\n * @param {ObjectDOM} element \r\n * @param {String} className \r\n */\r\n static addClass(element, className){\r\n if( ! StickySidebar.hasClass(element, className) ){\r\n if (element.classList)\r\n element.classList.add(className);\r\n else\r\n element.className += ' ' + className;\r\n }\r\n }\r\n \r\n /**\r\n * Remove specific class name to specific element\r\n * @static\r\n * @param {ObjectDOM} element \r\n * @param {String} className \r\n */\r\n static removeClass(element, className){\r\n if( StickySidebar.hasClass(element, className) ){\r\n if (element.classList)\r\n element.classList.remove(className);\r\n else\r\n element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\r\n }\r\n }\r\n\r\n /**\r\n * Determine weather the element has specific class name.\r\n * @static\r\n * @param {ObjectDOM} element \r\n * @param {String} className \r\n */\r\n static hasClass(element, className){\r\n if (element.classList)\r\n return element.classList.contains(className);\r\n else\r\n return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\r\n }\r\n }\r\n \r\n return StickySidebar;\r\n })();\r\n \r\n export default StickySidebar;\r\n \r\n // Global\r\n // -------------------------\r\n window.StickySidebar = StickySidebar;","'use strict';\n\nimport StickySidebar from 'sticky-sidebar/src/sticky-sidebar';\nimport Events from '../_events';\n\nconst SidebarUI = (($) => {\n const D = document;\n const W = window;\n const $Body = $('html,body');\n const NAME = 'SidebarUI';\n const CLASSNAME = `js${NAME}`;\n\n class SidebarUI {\n static init() {\n const ui = this;\n ui.dispose();\n\n if (!$(`.${CLASSNAME}`).length) {\n return;\n }\n\n console.log(`Initializing: ${NAME}`);\n\n const sticky = new StickySidebar(`.${CLASSNAME}`, {\n innerWrapperSelector: `.${CLASSNAME}__inner`,\n });\n\n $Body.on(`${Events.SCROLL} ${Events.RESIZE}`, (e) => {\n sticky.updateSticky(e);\n });\n }\n\n static dispose() {\n console.log(`Destroying: ${NAME}`);\n }\n }\n\n $(W).on(`${Events.AJAX} ${Events.LOADED}`, () => {\n SidebarUI.init();\n });\n\n W.SidebarUI = new SidebarUI();\n\n return SidebarUI;\n})($);\n\nexport default SidebarUI;\n","import $ from 'jquery';\n\nconst SpinnerUI = (($) => {\n class SpinnerUI {\n static show(callback) {\n $('#PageLoading').show(0, callback);\n }\n\n static hide(callback) {\n $('#PageLoading').hide('slow', callback);\n }\n }\n\n return SpinnerUI;\n})($);\n\nexport default SpinnerUI;\n","\"use strict\";\n\nimport $ from 'jquery';\nimport Events from '../_events';\nimport Spinner from './_ui.spinner';\n\nconst AjaxUI = (($) => {\n // Constants\n const G = window;\n const D = document;\n const $Html = $('html');\n const $Body = $('body');\n\n const NAME = 'jsAjaxUI';\n const DATA_KEY = NAME;\n\n class AjaxUI {\n // Constructor\n constructor(element) {\n this._element = element;\n const $element = $(this._element);\n $element.addClass(`${NAME}-active`);\n\n $element.bind('click', function(e) {\n e.preventDefault();\n\n const $this = $(this);\n\n $('.ajax').each(function() {\n const $this = $(this);\n $this.removeClass('active');\n $this.parents('.nav-item').removeClass('active');\n });\n\n $this.addClass('loading');\n\n AjaxUI.load($this.attr('href'), () => {\n $this.removeClass('loading');\n $this.parents('.nav-item').addClass('active');\n $this.addClass('active');\n });\n });\n }\n\n // Public methods\n static load(url, callback) {\n // show spinner\n Spinner.show(() => {\n $Body.removeClass('loaded');\n });\n\n // update document location\n G.MainUI.updateLocation(url);\n\n const absoluteLocation = G.URLDetails['base'] + G.URLDetails['relative'].substring(1);\n if (absoluteLocation !== G.location.href) {\n G.history.pushState({\n ajax: true,\n page: absoluteLocation,\n }, document.title, absoluteLocation);\n }\n\n $.ajax({\n sync: false,\n async: true,\n url,\n dataType: 'json',\n method: 'GET',\n cache: false,\n error(jqXHR) {\n console.warn(`AJAX request failure: ${jqXHR.statusText}`);\n G.location.href = url;\n\n // google analytics\n if (typeof G.ga === 'function') {\n G.ga('send', 'event', 'error', 'AJAX ERROR', jqXHR.statusText);\n }\n },\n success(data, status, jqXHR) {\n AjaxUI.process(data, jqXHR, callback);\n\n // google analytics\n if (typeof G.ga === 'function') {\n G.ga('set', {\n page: G.URLDetails['relative'] + G.URLDetails['hash'],\n title: jqXHR.getResponseHeader('X-Title'),\n });\n G.ga('send', 'pageview');\n }\n },\n });\n }\n\n static process(data, jqXHR, callback) {\n const css = jqXHR.getResponseHeader('X-Include-CSS').split(',') || [];\n const js = jqXHR.getResponseHeader('X-Include-JS').split(',') || [];\n\n // Replace HTML regions\n if (typeof(data.regions) === 'object') {\n for (const key in data.regions) {\n if (typeof(data.regions[key]) === 'string') {\n AjaxUI.replaceRegion(data.regions[key], key);\n }\n }\n }\n\n // remove already loaded scripts\n $('link[type=\"text/css\"]').each(function() {\n const i = css.indexOf($(this).attr('href'));\n if (i > -1) {\n css.splice(i, 1);\n } else if (!$Body.data('unload-blocked')) {\n console.log(`Unloading: ${ $(this).attr('href')}`);\n $(this).remove();\n }\n });\n\n $('script[type=\"text/javascript\"]').each(function() {\n const i = js.indexOf($(this).attr('src'));\n if (i > -1) {\n js.splice(i, 1);\n } else if (!$Body.data('unload-blocked')) {\n console.log(`Unloading: ${ $(this).attr('src')}`);\n $(this).remove();\n }\n });\n\n // preload CSS\n this.preload(css).then(() => {\n const $head = $('head');\n css.forEach((el) => {\n $head.append(`<link rel=\"stylesheet\" type=\"text/css\" href=\"${el}\" />`);\n });\n\n // preload JS\n this.preload(js, 'script').then(() => {\n\n js.forEach((el) => {\n $Body.append(`<script type=\"text/javascript\" charset=\"UTF-8\" src=\"${el}\"></script>`);\n });\n\n console.log('New page is loaded!');\n\n // trigger events\n if (typeof(data.events) === 'object') {\n for (const eventName in data.events) {\n $(D).trigger(eventName, [data.events[eventName]]);\n }\n }\n\n if (typeof callback !== 'undefined') {\n callback();\n }\n\n $(G).trigger(Events.AJAX);\n });\n });\n }\n\n static preload(items, type = 'text', cache = true, itemCallback = false) {\n if (!items.length) {\n return $.Deferred().resolve().promise();\n }\n\n const dfds = [];\n items.forEach((url, i) => {\n const dfd = $.Deferred();\n\n $.ajax({\n dataType: type,\n cache,\n url,\n }).always(() => {\n dfd.resolve();\n if (itemCallback) {\n itemCallback(i, url);\n }\n });\n\n dfds.push(dfd);\n });\n\n // return a master promise object which will resolve when all the deferred objects have resolved\n return $.when(...dfds);\n }\n\n static replaceRegion(html, key) {\n const $region = $(`[data-ajax-region=\"${key}\"]`);\n\n if ($region.length) {\n $region.empty().append(html);\n } else {\n console.warn('Region returned without class or id!');\n }\n }\n\n dispose() {\n const $element = $(this._element);\n\n $element.removeClass(`${NAME}-active`);\n $.removeData(this._element, DATA_KEY);\n this._element = null;\n }\n\n static _jQueryInterface() {\n return this.each(function() {\n // attach functionality to element\n const $element = $(this);\n let data = $element.data(DATA_KEY);\n\n if (!data) {\n data = new AjaxUI(this);\n $element.data(DATA_KEY, data);\n }\n });\n }\n }\n\n // jQuery interface\n $.fn[NAME] = AjaxUI._jQueryInterface;\n $.fn[NAME].Constructor = AjaxUI;\n $.fn[NAME].noConflict = function() {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return AjaxUI._jQueryInterface;\n };\n\n // auto-apply\n $('.ajax').ready(() => {\n $('.ajax').jsAjaxUI();\n });\n\n // AJAX update browser title\n $(D).on('layoutRefresh', (e, data) => {\n D.title = data.Title;\n\n $Html.attr('class', '');\n if (data.ClassName) {\n $Html.addClass(data.ClassName);\n }\n //data.Link = (data.Link === '/home/') ? '/' : data.Link;\n });\n\n // Back/Forward functionality\n G.onpopstate = function(event) {\n const $existingLink = $(`a[href^=\"${ D.location }\"]`);\n\n if (event.state !== null && event.state.ajax) {\n console.log('GOBACK (AJAX state)');\n AjaxUI.load(event.state.page);\n } else if ($existingLink.length && $existingLink.hasClass('ajax')) {\n console.log('GOBACK (AJAX link)');\n $existingLink.trigger('click');\n } else {\n console.log('GOBACK (HTTP)');\n G.location.href = D.location;\n }\n };\n\n return AjaxUI;\n})($);\n\nexport default AjaxUI;\n","import $ from 'jquery';\nimport Events from '../_events';\n\nconst FormFieldUI = (($) => {\n // Constants\n const NAME = 'jsFormFieldUI';\n const DATA_KEY = NAME;\n const $Html = $('html, body');\n\n class FormFieldUI {\n\n constructor(el) {\n const ui = this;\n\n ui.$el = $(el);\n ui.shown = true;\n\n ui.$el.data(DATA_KEY, ui);\n //ui.$actions = ui.$el.parents('form').children('.btn-toolbar,.form-actions');\n\n ui.vals = {\n 'val': ui.$el.val(),\n 'checked': ui.$el.is(':checked'),\n };\n\n // bootstrap collapse integration\n ui.$el.parents('.optionset').not('.field').removeClass('collapse');\n ui.$collapse = ui.$el.parents('.field.collapse').not('.composite').first();\n if (ui.$collapse.length) {\n ui.$el.removeClass('collapse');\n\n ui.$collapse.on('show.bs.collapse', (e) => {\n ui.show();\n });\n\n ui.$collapse.on('hidden.bs.collapse', (e) => {\n ui.hide();\n });\n }\n\n ui.$el.addClass(`${NAME}-active`);\n\n return ui;\n }\n\n // Public methods\n dispose() {\n const ui = this;\n const $el = ui.$el;\n\n $el.removeClass(`${NAME}-active`);\n $.removeData($el[0], DATA_KEY);\n }\n\n show() {\n const ui = this;\n const $el = ui.$el;\n\n ui.restore();\n ui.shown = true;\n\n /*if (ui.$collapse.length) {\n ui.$collapse.collapse('show');\n }\n\n if ($el.hasClass('collapse')) {\n $el.collapse('show');\n }*/\n\n $el.trigger(`shown.${ NAME}`);\n }\n\n hide() {\n const ui = this;\n const $el = ui.$el;\n\n ui.wipe();\n ui.shown = false;\n\n /*if (ui.$collapse.length) {\n ui.$collapse.collapse('hide');\n }\n\n if ($el.hasClass('collapse')) {\n $el.collapse('hide');\n }\n\n $el.trigger('change');*/\n $el.trigger(`hidden.${ NAME}`);\n }\n\n wipe() {\n const ui = this;\n const $el = ui.$el;\n\n ui.vals = {\n 'name': $el.attr('name'),\n 'val': $el.val(),\n 'checked': $el.is(':checked'),\n };\n\n $el.val('');\n $el.prop('checked', false);\n }\n\n restore() {\n const ui = this;\n const $el = ui.$el;\n const checked = ui.vals['checked'];\n\n $el.val(ui.vals['val']);\n $el.prop('checked', checked);\n }\n\n addMessage(msg, type = null, scrollTo = true) {\n const ui = this;\n const $field = ui.$el.closest('.field');\n\n\n $field.addClass('has-message');\n if (msg) {\n $field.append(`<div class=\"message alert ${ type }\">${ msg }</div>`);\n }\n\n if (scrollTo) {\n const pos = $field.offset().top;\n $field.focus();\n $Html.scrollTop(pos - 100);\n }\n }\n\n removeMessages() {\n const ui = this;\n const $field = ui.$el.closest('.field');\n\n $field.removeClass('has-message');\n $field.find('.message').remove();\n }\n\n static _jQueryInterface() {\n return this.each(function() {\n // attach functionality to el\n const $el = $(this);\n let data = $el.data(DATA_KEY);\n\n if (!data) {\n data = new FormFieldUI(this);\n $el.data(DATA_KEY, data);\n }\n });\n }\n }\n\n // jQuery interface\n $.fn[NAME] = FormFieldUI._jQueryInterface;\n $.fn[NAME].Constructor = FormFieldUI;\n $.fn[NAME].noConflict = function() {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return FormFieldUI._jQueryInterface;\n };\n\n return FormFieldUI;\n})($);\n\nexport default FormFieldUI;\n","import $ from 'jquery';\n\n//import 'bootstrap-select/dist/js/bootstrap-select';\n//$.fn.selectpicker.Constructor.BootstrapVersion = '4';\nimport select2 from 'select2/dist/js/select2.js';\nimport Inputmask from 'inputmask';\n\n//import select2 from 'jquery.inputmask/dist/jquery.inputmask.bundle';\n\nimport Events from '../_events';\nimport SpinnerUI from './_ui.spinner';\nimport FormFieldUI from './_ui.form.fields';\n\nconst FormBasics = (($) => {\n // Constants\n const NAME = 'jsFormBasics';\n const DATA_KEY = NAME;\n const $Html = $('html, body');\n const W = window;\n const D = document;\n\n class FormBasics {\n constructor(el) {\n const ui = this;\n const $el = $(el);\n\n ui._el = el;\n $el.data(DATA_KEY, this);\n\n //$('[data-inputmask]').inputmask();\n\n const $fields = $el.find(Events.FORM_FIELDS);\n // init fields ui\n $fields.each((i, el) => {\n // skip some fields here\n new FormFieldUI(el);\n });\n\n const $selectFields = $el.find('select:not([readonly])');\n const $radioOptions = $el.find('input[type=\"radio\"]');\n\n $selectFields.each((i, el) => {\n $(el).select2();\n });\n\n $fields.each((e, el) => {\n const $el = $(el);\n\n if ($el.hasClass('required') || $el.attr('aria-required')) {\n $el.closest('.field').addClass('required');\n }\n });\n\n $radioOptions.each((e, el) => {\n const $el = $(el);\n\n if ($el.is(':checked')) {\n $el.parents('.radio').addClass('checked');\n }\n });\n\n $radioOptions.on('change', (e) => {\n const $el = $(e.currentTarget);\n const $parent = $el.parents('.radio');\n\n $parent.siblings('.radio').each((i, el) => {\n const $el = $(el);\n\n if (!$el.find('input').is(':checked')) {\n $el.removeClass('checked');\n }\n });\n\n if ($el.is(':checked')) {\n $parent.addClass('checked');\n }\n });\n\n $el.on('submit', (e) => {\n SpinnerUI.show();\n });\n\n $el.addClass(`${NAME}-active`);\n $el.trigger(Events.FORM_INIT_BASICS);\n }\n\n // Public methods\n dispose() {\n const $el = $(this._el);\n\n const $selectFields = $el.find('select:not([readonly])');\n $selectFields.each((i, el) => {\n $(el).select2('destroy');\n });\n\n $el.removeClass(`${NAME}-active`);\n $.removeData(this._el, DATA_KEY);\n this._el = null;\n }\n\n static _jQueryInterface() {\n return this.each(() => {\n // attach functionality to el\n const $el = $(this);\n let data = $el.data(DATA_KEY);\n\n if (!data) {\n data = new FormBasics(this);\n $el.data(DATA_KEY, data);\n }\n });\n }\n }\n\n // jQuery interface\n $.fn[NAME] = FormBasics._jQueryInterface;\n $.fn[NAME].Constructor = FormBasics;\n $.fn[NAME].noConflict = function() {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return FormBasics._jQueryInterface;\n };\n\n const init = () => {\n $('form').jsFormBasics();\n };\n\n // auto-apply\n $(W).on(`${Events.AJAX} ${Events.LOADED}`, () => {\n init();\n });\n\n return FormBasics;\n})($);\n\nexport default FormBasics;\n","'use strict';\n\nimport $ from 'jquery';\n\nimport Events from './_events';\nimport Consts from './_consts';\n\nimport Spinner from './_components/_ui.spinner';\n\n// AJAX functionality\nimport AjaxUI from './_components/_ui.ajax';\n\nimport FormBasics from './_components/_ui.form.basics';\n\nimport SmoothScroll from 'smooth-scroll';\nconst smoothScroll = SmoothScroll();\n\nconst MainUI = (($) => {\n // Constants\n const W = window;\n const D = document;\n const $Body = $('body');\n\n const NAME = 'MainUI';\n\n // get browser locale\n //const Locale = $('html').attr('lang').substring(0, 2);\n\n const $AlertNotify = $('#AlertNotify');\n const $SiteWideMessage = $('#SiteWideMessage');\n\n // get browser window visibility preferences\n // Opera 12.10, Firefox >=18, Chrome >=31, IE11\n const HiddenName = 'hidden';\n const VisibilityChangeEvent = 'visibilitychange';\n\n // update visibility state\n D.addEventListener(VisibilityChangeEvent, () => {\n if (D.visibilityState === HiddenName) {\n console.log('Tab: hidden');\n $Body.addClass('is-hidden');\n $Body.trigger('tabHidden');\n } else {\n console.log('Tab: focused');\n $Body.removeClass('is-hidden');\n $Body.trigger('tabFocused');\n }\n });\n\n // update online/offline state\n const updateOnlineStatus = () => {\n if (!navigator.onLine) {\n console.log('Tab: offline');\n $Body.addClass('is-offline');\n $Body.trigger('offline');\n } else {\n console.log('Tab: online');\n $Body.removeClass('is-offline');\n $Body.trigger('online');\n }\n };\n\n if (typeof navigator.onLine !== 'undefined') {\n W.addEventListener(\n 'offline',\n () => {\n updateOnlineStatus();\n },\n false,\n );\n\n W.addEventListener(\n 'online',\n () => {\n updateOnlineStatus();\n },\n false,\n );\n\n W.addEventListener('load', () => {\n updateOnlineStatus();\n });\n }\n\n // scrollTo\n const ScrollTo = (trigger, selector) => {\n smoothScroll.animateScroll(D.querySelector(selector), trigger, {\n speed: 500,\n offset: -20,\n //easing: 'easeInOutCubic',\n // Callback API\n //before: (anchor, toggle) => {}, // Callback to run before scroll\n //`after: (anchor, toggle) => {} // Callback to run after scroll\n });\n };\n\n // session ping\n const pingInterval = setInterval(() => {\n if ($Body.hasClass('is-offline')) {\n return;\n }\n\n $.ajax({\n sync: false,\n async: true,\n cache: false,\n url: '/Security/ping',\n global: false,\n type: 'POST',\n complete(data, datastatus) {\n if (datastatus !== 'success') {\n clearInterval(pingInterval);\n\n $Body.addClass('is-offline');\n //W.location.reload(false);\n } else {\n $Body.removeClass('is-offline');\n }\n },\n });\n }, 300000); // 5 min in ms\n\n W.URLDetails = {\n base: $('base').attr('href'),\n relative: '/',\n hash: '',\n };\n\n class MainUI {\n // Static methods\n\n static init() {\n this.dispose();\n\n console.log(`Initializing: ${NAME}`);\n\n // update location details\n this.updateLocation();\n\n // mark available offline areas\n if ('caches' in W) {\n $('a.offline').addClass('offline-available');\n }\n\n this.loadImages();\n\n // detect bootstrap screen size\n this.detectBootstrapScreenSize();\n\n // mark external links\n $('a.external,a[rel=\"external\"]').attr('target', '_blank');\n\n // show encoded emails\n /*$(D).find('.obm').each(() => {\n if ($(this).attr('data-val') !== undefined) {\n const email = $(this).attr('data-val').split('')\n .reverse()\n .join('')\n .slice(0, -8)\n .replace(/[a-zA-Z]/g, (c) => String.fromCharCode((c <= 'Z' ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26))\n .replace('#AT#', '@');\n const attr = $(this).attr('data-val-append');\n if (attr !== undefined && attr !== false) {\n $(this).append(email);\n }\n if ($(this).find('.sr-only').length > 0) {\n $(this).find('.sr-only').append(email);\n }\n if ($(this).attr('href') !== undefined) {\n $(this).attr('href', `mailto:${email}`);\n }\n }\n });*/\n //\n\n // scroll links\n $('.js-scrollTo').on('click', (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const $el = $(e.currentTarget);\n\n ScrollTo(el, $el.attr('data-target'));\n });\n\n // load external fonts\n if ($('[data-extfont]').length) {\n $.getScript(\n '//ajax.googleapis.com/ajax/libs/webfont/1/webfont.js',\n () => {\n const fonts = [];\n\n $('[data-extfont]').each((i, el) => {\n fonts[i] = $(el).attr('data-extfont');\n });\n\n W.WebFont.load({\n google: {\n families: fonts,\n },\n });\n },\n );\n }\n\n // data-set links\n $('[data-set-target]').on('click', (e) => {\n const $el = $(e.currentTarget);\n const $target = $($el.data('set-target'));\n\n if (!$target.length) {\n return;\n }\n\n $target.each((i, targetEl) => {\n const $targetEl = $(targetEl);\n const tag = $targetEl.prop('tagName').toLowerCase();\n\n if (tag === 'input' || tag === 'select') {\n $targetEl.val($el.data('set-val'));\n } else if (!$targetEl.hasClass('field')) {\n $targetEl.text($el.data('set-val'));\n }\n });\n\n $el.trigger(Events.SET_TARGET_UPDATE);\n $target.closest('form').trigger(Events.SET_TARGET_UPDATE);\n });\n\n // emulate links\n $('.a[data-href]').on('click', (e) => {\n const $el = $(e.currentTarget);\n const href = $el.data('href');\n if (!href.length) {\n console.warn('Missing data-href');\n console.warn($el);\n }\n\n W.location.assign(href);\n });\n\n // hide spinner\n Spinner.hide(() => {\n $Body.addClass('loaded');\n });\n\n // fire page printing\n if (W.URLDetails['hash'].indexOf('printpage') > -1) {\n W.print();\n }\n\n $Body.data(NAME, this);\n }\n\n static detectBootstrapScreenSize() {\n const $el = $('<div class=\"env-test\"></div>');\n const envs = [...Consts.ENVS];\n\n $Body.append($el);\n let curEnv = envs.shift();\n\n for (const env of envs.reverse()) {\n $el.addClass(`d-${env}-none`);\n if ($el.is(':hidden')) {\n curEnv = env;\n break;\n }\n }\n\n $el.remove();\n $Body.removeClass(envs);\n $Body.addClass(curEnv);\n\n return curEnv;\n }\n\n static updateLocation(url) {\n let location = url || W.location.href;\n location = location.replace(W.URLDetails['base'], '/');\n const hash = location.indexOf('#');\n\n W.URLDetails.relative = location.split('#')[0];\n W.URLDetails.hash =\n hash >= 0 ? location.substr(location.indexOf('#')) : '';\n }\n\n // show site-wide alert\n static alert(msg, cls) {\n $SiteWideMessage.fadeOut('fast');\n\n $SiteWideMessage.html(\n `<div class=\"page-alert\"><div class=\"alert alert-${cls}\"><i class=\"close\" data-dismiss=\"alert\">×</i>${msg}</div></div>`,\n );\n $SiteWideMessage.find('.page-alert').alert();\n\n $SiteWideMessage.find('.close[data-dismiss=\"alert\"]').click(() => {\n $SiteWideMessage.fadeOut('slow', () => {\n $SiteWideMessage.find('.page-alert').alert('close');\n });\n });\n\n $SiteWideMessage.fadeIn('slow');\n\n if ($AlertNotify.length) {\n $AlertNotify[0].play();\n }\n\n $(W).trigger('alert-appeared');\n }\n\n // hide site-wide alert\n static alertHide() {\n if ($SiteWideMessage.length !== 0) {\n $SiteWideMessage.fadeOut('slow', () => {\n $SiteWideMessage.find('.alert').alert('close');\n });\n }\n\n if ($AlertNotify.length && typeof $AlertNotify[0].stop !== 'undefined') {\n $AlertNotify[0].stop();\n }\n\n $(W).trigger('alert-removed');\n }\n\n // load all images\n static loadImages() {\n const $imgs = $Body.find('img');\n const $imgUrls = [];\n const $imgLazyUrls = [];\n\n // collect image details\n $imgs.each((i, el) => {\n const $el = $(el);\n const src = $el.attr('src');\n const lazySrc = $el.data('lazy-src');\n\n if (src && src.length) {\n $imgUrls.push(src);\n }\n if (lazySrc && lazySrc.length) {\n $imgLazyUrls.push(lazySrc);\n $el.addClass('loading');\n\n AjaxUI.preload([lazySrc]).then(() => {\n $el.attr('src', lazySrc);\n\n $el.addClass('loaded');\n $el.removeClass('loading');\n\n $el.trigger('image-lazy-loaded');\n });\n }\n });\n\n // load lazy backgrounds\n $Body.find('[data-lazy-bg]').each((i, el) => {\n const $el = $(el);\n const lazySrc = $el.data('lazy-bg');\n\n if (lazySrc && lazySrc.length) {\n $imgLazyUrls.push(lazySrc);\n $el.addClass('loading');\n\n AjaxUI.preload([lazySrc]).then(() => {\n $el.css({ 'background-image': `url(${lazySrc})` });\n\n $el.addClass('loaded');\n $el.removeClass('loading');\n\n $el.trigger('image-lazy-bg-loaded');\n });\n }\n });\n\n // load defined images\n AjaxUI.preload($imgUrls).then(() => {\n $(W).trigger('images-loaded');\n\n // load lazy images\n AjaxUI.preload($imgLazyUrls).then(() => {\n console.log('All images are loaded!');\n\n $(W).trigger('images-lazy-loaded');\n });\n });\n }\n\n static dispose() {\n console.log(`Destroying: ${NAME}`);\n }\n }\n\n $(W).on(`${Events.AJAX} ${Events.LOADED}`, () => {\n MainUI.init();\n });\n\n $(W).on('resize', () => {\n MainUI.detectBootstrapScreenSize();\n });\n\n $(W).on('beforeunload unload', () => {\n Spinner.show(() => {\n $Body.removeClass('loaded');\n });\n });\n\n W.MainUI = MainUI;\n\n return MainUI;\n})($);\n\nexport default MainUI;\n","\"use strict\";\n\nimport $ from 'jquery';\n\nimport MainUI from \"../_main\";\nimport Events from '../_events';\nimport SpinnerUI from './_ui.spinner';\n\nconst VideoPreviewUI = (($) => {\n\n const NAME = 'jsVideoPreviewUI';\n const DATA_KEY = NAME;\n\n const G = window;\n const D = document;\n\n class VideoPreviewUI {\n\n constructor(el) {\n console.log(`Initializing: ${NAME}`);\n\n const ui = this;\n ui.$_el = $(el);\n ui.innerHTML = ui.$_el[0].innerHTML;\n\n ui.$_el.data(DATA_KEY, this);\n const href = ui.$_el.attr('href') || ui.$_el.data('href');\n const YouTubeGetID = (url) => {\n parsedURL = url.split(/(vi\\/|v%3D|v=|\\/v\\/|youtu\\.be\\/|\\/embed\\/)/);\n return undefined !== parsedURL[2] ? parsedURL[2].split(/[^0-9a-z_-]/i)[0] : parsedURL[0];\n };\n\n\n let video;\n\n if (video = href.match(/(youtube|youtube-nocookie|youtu|vimeo)\\.(com|be)\\/(watch\\?v=([\\w-]+)|([\\w-]+))/)) {\n let video_id;\n\n if (video[1] === 'youtube' || video[1] === 'youtube-nocookie' || video[1] === 'youtu') {\n video_id = YouTubeGetID(href);\n }\n\n if (video[1] == 'vimeo') {\n video_id = video[3];\n ui.$_el.addClass('loading');\n $.ajax({\n type: 'GET',\n url: `https://vimeo.com/api/v2/video/${ video_id }.json`,\n jsonp: 'callback',\n dataType: 'jsonp',\n success: function(data) {\n const thumbnail_src = data[0].thumbnail_large;\n ui.show(thumbnail_src);\n ui.$_el.removeClass('loading');\n },\n });\n\n return;\n }\n\n if (video_id) {\n ui.show(`//i3.ytimg.com/vi/${video_id}/0.jpg`);\n }\n }\n }\n\n show(src) {\n const ui = this;\n ui.$_el[0].innerHTML = '';\n ui.$_el.append(`<img src=\"${src}\" alt=\"Video\" />`);\n }\n\n static dispose() {\n console.log(`Destroying: ${NAME}`);\n ui.$_el[0].innerHTML = ui.innerHTML;\n }\n\n static _jQueryInterface() {\n return this.each((i, el) => {\n // attach functionality to element\n const $el = $(el);\n let data = $el.data(DATA_KEY);\n\n if (!data) {\n data = new VideoPreviewUI(el);\n $el.data(DATA_KEY, data);\n }\n });\n }\n }\n\n // jQuery interface\n $.fn[NAME] = VideoPreviewUI._jQueryInterface;\n $.fn[NAME].Constructor = VideoPreviewUI;\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return VideoPreviewUI._jQueryInterface;\n };\n\n // auto-apply\n $(window).on(`${Events.AJAX} ${Events.LOADED}`, () => {\n $('[data-video-preview=\"true\"]').jsVideoPreviewUI();\n });\n\n return VideoPreviewUI;\n})($);\n\nexport default VideoPreviewUI;\n","'use strict';\n\nimport $ from 'jquery';\n\nimport Events from './_events';\n\nconst LayoutUI = (($) => {\n // Constants\n const W = window;\n const D = document;\n const $Body = $('body');\n\n const NAME = 'LayoutUI';\n\n const datepickerOptions = {\n autoclose: true,\n startDate: 0,\n //todayBtn: true,\n todayHighlight: true,\n clearBtn: true,\n };\n\n class LayoutUI {\n static init() {\n const ui = this;\n ui.dispose();\n\n console.log(`Initializing: ${NAME}`);\n // your custom UI\n\n // Custom fonts\n $Body.append(\n '<link href=\"https://fonts.googleapis.com/css?family=Open+Sans:300,400,400i,700,700i&display=swap\" rel=\"stylesheet\">',\n );\n\n /*google analytics */\n /*(function(i, s, o, g, r, a, m) {\n i['GoogleAnalyticsObject'] = r;\n (i[r] =\n i[r] ||\n function() {\n (i[r].q = i[r].q || []).push(arguments);\n }),\n (i[r].l = 1 * new Date());\n (a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);\n a.async = 1;\n a.src = g;\n m.parentNode.insertBefore(a, m);\n })(\n window,\n document,\n 'script',\n '//www.google-analytics.com/analytics.js',\n 'ga',\n );\n ga('create', 'UA-********-*', 'auto');\n ga('send', 'pageview');*/\n }\n\n static dispose() {\n console.log(`Destroying: ${NAME}`);\n }\n }\n\n $(W).on(`${Events.AJAX} ${Events.LOADED}`, () => {\n LayoutUI.init();\n });\n\n W.LayoutUI = LayoutUI;\n\n return LayoutUI;\n})($);\n\nexport default LayoutUI;\n","'use strict';\n\nimport '../scss/app.scss';\n\n// import Bootstrap\nimport 'popper.js';\nimport 'bootstrap/js/dist/util';\nimport 'bootstrap/js/dist/alert';\nimport 'bootstrap/js/dist/button';\nimport 'bootstrap/js/dist/carousel';\nimport 'bootstrap/js/dist/collapse';\n\nimport 'hammerjs/hammer';\nimport 'jquery-hammerjs/jquery.hammer';\n\n// Routie\n//import 'pouchdb/dist/pouchdb';\n//import './_components/routes/index';\n\n// conflicts with _components/_ui.hover.js (shows dropdown on hover)\n//import 'bootstrap/js/dist/dropdown';\nimport './_components/_ui.hover';\n\nimport './_components/_ui.carousel';\nimport './_components/_ui.menu';\n\nimport 'bootstrap/js/dist/modal';\nimport 'bootstrap/js/dist/tooltip';\nimport 'bootstrap/js/dist/popover';\nimport 'bootstrap/js/dist/scrollspy';\nimport 'bootstrap/js/dist/tab';\n//\n\n// Offcanvas menu\n//import 'offcanvas-bootstrap/dist/js/bootstrap.offcanvas';\n\n// Uncomment it to enable meta-lightbox zooming on hover\n//import 'jquery-zoom/jquery.zoom';\n\n// FlyoutUI\nimport FlyoutUI from './_components/_ui.flyout';\n\n// Sticky sidebar\nimport SidebarUI from './_components/_ui.sidebar';\n\n// Toggle bootstrap form fields\n//import FormToggleUI from './_components/_ui.form.fields.toggle';\n\n// Bootstrap Date & Time fields\n//import FormDatetime from './_components/_ui.form.datetime';\n\n// Stepped forms functionality\n//import FormStepped from './_components/_ui.form.stepped';\n\n// Forms validation functionality\n//import FormValidate from './_components/_ui.form.validate';\n\n// Store forms data into localStorage\n//import FormStorage from './_components/_ui.form.storage';\n\n// client-side images cropping\n//import FormCroppie from './_components/_ui.form.croppie';\n\n// Google NoCaptcha fields\n//import NoCaptcha from './_components/_ui.nocaptcha';\n\n// youtube video preview image\nimport './_components/_ui.video.preview';\n\n// Meta Lightbox\nimport '@a2nt/meta-lightbox/src/js/index';\n\n//import Confirmation from 'bootstrap-confirmation2/dist/bootstrap-confirmation';\n//import Table from 'bootstrap-table/dist/bootstrap-table';\n\n// Map UI\n//import MapApi from './_components/_ui.map.api';\n\nimport './_main';\nimport './_layout';\n\n// Google Analytics\nimport './_components/drivers/_google.track.external.links';\n\nfunction importAll(r) {\n return r.keys().map(r);\n}\n\nconst images = importAll(\n require.context('../img/', false, /\\.(png|jpe?g|svg)$/),\n);\nconst fontAwesome = importAll(\n require.context('font-awesome', false, /\\.(otf|eot|svg|ttf|woff|woff2)$/),\n);\n","module.exports = jQuery;"],"sourceRoot":""} |