Arc-hive-omeka-theme/asset/js/app.js.map

1 line
1.1 MiB

{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../../js/foundation.core.utils.js","webpack:///../../js/foundation.util.mediaQuery.js","webpack:///../../js/foundation.core.js","webpack:///../../js/foundation.util.box.js","webpack:///../../js/foundation.util.imageLoader.js","webpack:///../../js/foundation.util.keyboard.js","webpack:///../../js/foundation.util.motion.js","webpack:///../../js/foundation.util.nest.js","webpack:///../../js/foundation.util.timer.js","webpack:///../../js/foundation.util.touch.js","webpack:///../../js/foundation.util.triggers.js","webpack:///../../js/foundation.core.plugin.js","webpack:///../../js/foundation.abide.js","webpack:///../../js/foundation.accordion.js","webpack:///../../js/foundation.accordionMenu.js","webpack:///../../js/foundation.drilldown.js","webpack:///../../js/foundation.positionable.js","webpack:///../../js/foundation.dropdown.js","webpack:///../../js/foundation.dropdownMenu.js","webpack:///../../js/foundation.equalizer.js","webpack:///../../js/foundation.interchange.js","webpack:///../../js/foundation.smoothScroll.js","webpack:///../../js/foundation.magellan.js","webpack:///../../js/foundation.offcanvas.js","webpack:///../../js/foundation.orbit.js","webpack:///../../js/foundation.responsiveMenu.js","webpack:///../../js/foundation.responsiveToggle.js","webpack:///../../js/foundation.reveal.js","webpack:///../../js/foundation.slider.js","webpack:///../../js/foundation.sticky.js","webpack:///../../js/foundation.tabs.js","webpack:///../../js/foundation.toggler.js","webpack:///../../js/foundation.tooltip.js","webpack:///../../js/foundation.responsiveAccordionTabs.js","webpack:///../../js/entries/foundation.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/what-input/dist/what-input.js","webpack:///./src/assets/js/app.js"],"names":["$","length","namespace","str","chars","charsLength","i","Math","transitions","elem","document","end","setTimeout","$elem","didLoad","eventType","cb","ignoreLeaveWindow","ignoreReappear","rest","callback","handler","eLeave","eReenter","window","styleMedia","style","script","info","matchMedium","text","matches","media","MediaQuery","queries","current","_init","self","$meta","extractedStyles","namedQueries","parseStyleToObject","name","value","_reInit","atLeast","query","only","size","upTo","nextSize","is","parts","p","bpSize","bpModifier","get","next","queryIndex","nextQuery","_getQueryName","_getCurrentSize","matched","_watcher","newSize","currentSize","styleObject","param","key","val","decodeURIComponent","ret","Array","FOUNDATION_VERSION","Foundation","version","_plugins","_uuids","plugin","className","functionName","attrName","hyphenate","registerPlugin","pluginName","GetYoDigits","unregisterPlugin","reInit","isJQ","plugins","type","_this","fns","plgs","Object","console","reflow","$el","opts","opt","el","parseValue","getFnName","addToJquery","foundation","$noJS","args","plugClass","throttle","timer","context","func","Date","vendors","vp","lastTime","now","nextTime","start","Function","aArgs","fToBind","fNOP","fBound","funcNameRegex","results","fn","isNaN","parseFloat","Box","ImNotTouchingYou","OverlapArea","GetDimensions","GetExplicitOffsets","eleDims","parDims","bottomOver","topOver","leftOver","rightOver","ignoreBottom","rect","parRect","winRect","winY","winX","width","height","offset","top","left","parentDims","windowDims","$eleDims","$anchorDims","anchor","topVal","leftVal","isOverflow","unloaded","images","singleImageLoaded","image","events","keyCodes","commands","event","String","Keyboard","keys","getKeyCodes","parseKey","handleKey","commandList","keyCode","cmds","Rtl","command","functions","returnValue","findFocusable","register","trapFocus","$focusable","$firstFocusable","$lastFocusable","$element","releaseFocus","k","kcs","initClasses","activeClasses","Motion","animateIn","animate","animateOut","duration","prog","ts","anim","element","initClass","isIn","activeClass","reset","requestAnimationFrame","transitionend","Nest","Feather","menu","items","subMenuClass","subItemClass","hasSubClass","applyAria","$item","$sub","Burn","options","nameSpace","remain","clearTimeout","Touch","isMoving","didMoved","tapEvent","startEvent","e","x","y","dx","startPosX","elapsedTime","dir","onTouchEnd","startPosY","startTime","SpotSwipe","setup","init","handleTouch","touches","first","eventTypes","touchstart","touchmove","touchend","simulatedEvent","clientY","MutationObserver","prefixes","triggers","Triggers","Listeners","Basic","Global","Initializers","openListener","closeListener","id","toggleListener","closeableListener","animation","toggleFocusListener","resizeListener","$nodes","scrollListener","closeMeListener","yetiBoxes","plugNames","listeners","listener","debounce","debounceGlobalListener","listeningElementsMutation","$target","mutationRecordsList","elementObserver","attributes","childList","characterData","subtree","attributeFilter","$document","onLoad","Plugin","getPluginName","obj","Abide","$globalErrors","isGood","failedValidators","$error","$label","$els","labels","$formError","$errors","$labels","errorId","elemId","groupName","$formErrors","clearRequire","validator","manageErrorClasses","required","goodToGo","message","dependentElements","acc","checkboxGroupName","noError","pattern","inputText","valid","$group","minRequired","checked","parseInt","validators","clear","$form","validateOn","labelErrorClass","inputErrorClass","formErrorSelector","formErrorClass","a11yAttributes","a11yErrorLevel","liveValidate","validateOnBlur","patterns","alpha","alpha_numeric","integer","number","card","cvv","email","url","domain","datetime","date","time","dateISO","month_day_year","day_month_year","color","website","test","equalTo","Accordion","$content","linkId","$initActive","$anchor","$link","isOwnAnchor","scrollTop","deepLinkSmudgeOffset","$tabContent","toggle","$a","previous","handled","history","$targetItem","$othersItems","$activeContents","targetContentId","$activeTabs","slideSpeed","multiExpand","allowAllClosed","deepLink","deepLinkSmudge","deepLinkSmudgeDelay","updateHistory","AccordionMenu","multiOpen","subId","isActive","initPanes","$submenu","$elements","$prevElement","$nextElement","open","close","up","down","closeAll","$targetBranch","$othersActiveSubmenus","$submenus","$allmenus","parentLink","submenuToggle","submenuToggleText","Drilldown","$menu","$back","$body","$scrollTopElement","scrollPos","calcHeight","parentSubMenu","trigger","autoFocus","$expandedSubmenus","index","isLastChild","maxHeight","result","numOfElems","autoApplyClass","backButton","backButtonPosition","wrapper","closeOnClick","autoHeight","animateHeight","scrollTopElement","scrollTopOffset","animationDuration","animationEasing","POSITIONS","VERTICAL_ALIGNMENTS","HORIZONTAL_ALIGNMENTS","ALIGNMENTS","currentIdx","array","Positionable","nextItem","position","alignment","isExhausted","$parent","minOverlap","minCoordinates","overlap","allowOverlap","allowBottomOverlap","vOffset","hOffset","Dropdown","$id","horizontalPosition","hasTouch","bodyData","ignoreMousedisappear","visibleFocusableElements","parentClass","hoverDelay","hover","hoverPane","forceFollow","DropdownMenu","subs","parClass","handleClickFn","hasSub","hasClicked","isTab","nextSibling","prevSibling","openSub","closeSub","isItself","idx","$sibs","oldClass","$parentLi","$toClose","somethingToClose","$activeItem","disableHover","autoclose","clickOpen","closingTime","closeOnClickInside","verticalClass","rightClass","Equalizer","eqId","$watched","onResizeMeBound","onPostEqualizedBound","imgs","tooSmall","onImagesLoaded","heights","len","lastElTopOffset","groups","group","elOffsetTop","j","ln","max","groupsILength","lenJ","equalizeOnStack","equalizeByRow","equalizeOn","Interchange","rule","match","types","rulesList","rules","path","SmoothScroll","arrival","loc","defaults","$loc","threshold","Magellan","body","html","$tar","pt","location","newScrollPos","isScrollingUp","activeIdx","visibleLinks","$oldActive","activeHash","isNewActive","isNewHash","hash","deepLinking","OffCanvas","base","reveal","overlay","overlayPosition","revealOnRegExp","RegExpEscape","revealOnClass","inCanvasFor","hasReveal","absoluteTopVal","transition","stickyData","isRevealed","parent","canvasFocus","contentOverlay","contentId","nested","contentScroll","transitionTime","forceTo","revealOn","inCanvasOn","revealClass","Orbit","$images","initActive","infinite","counter","temp","$controls","ltr","$slide","isLTR","chosenSlide","$curSlide","$firstSlide","$lastSlide","dirIn","dirOut","$newSlide","$oldBullet","$othersBullets","$newBullet","activeStateDescriptor","spans","spanCountInOthersBullets","count","bullets","navButtons","animInFromRight","animOutToRight","animInFromLeft","animOutToLeft","autoPlay","timerDelay","infiniteWrap","swipe","pauseOnHover","accessible","containerClass","slideClass","boxOfBullets","nextClass","prevClass","useMUI","MenuPlugins","dropdown","cssClass","drilldown","accordion","ResponsiveMenu","rulesTree","ruleSize","rulePlugin","matchedMq","ResponsiveToggle","targetID","target","input","hideFor","Reveal","mq","additionalOverlayClasses","outerWidth","outerHeight","margin","afterAnimation","updateScrollbarClass","finishUp","urlWithoutHash","animationIn","animationOut","showDelay","hideDelay","closeOnEsc","multipleOpened","fullScreen","resetOnClose","appendTo","Slider","pctOfBar","percent","baseLog","$hndl","isDbl","h2Val","h1Val","vert","hOrW","lOrT","handleDim","elemDim","pxToMove","movement","css","isLeftHndl","handlePct","dim","handlePos","moveTime","Move","initVal","step","$handle","vertical","direction","eventOffset","barDim","windowScroll","elemOffset","eventFromBar","barXY","offsetPct","firstHndlPos","absPosition","secndHndlPos","div","prev_val","next_val","handleChangeEvent","curHandle","_$handle","oldValue","decrease","newValue","increase","decrease_fast","increase_fast","min","initialStart","initialEnd","binding","clickSelect","draggable","disabled","doubleSided","decimal","disabledClass","invertVertical","changedDelay","nonLinearBase","positionValueFunction","frac","Sticky","scroll","btm","pts","breaks","place","checkSizes","stickTo","mrgn","notStuckTo","isTop","stickToTop","anchorPt","topOrBottom","newElemWidth","comp","pdngl","pdngr","newContainerHeight","elemHeight","mTop","emCalc","mBtm","topPoint","bottomPoint","winHeight","bottom","container","topAnchor","btmAnchor","marginTop","marginBottom","stickyOn","stickyClass","dynamicHeight","checkEvery","Tabs","anchorNoHash","historyHandled","$oldTab","$tabLink","$targetContent","$target_anchor","$activeTab","idStr","hashIdStr","panel","wrapOnKeys","matchHeight","activeCollapse","linkClass","linkActiveClass","panelClass","panelActiveClass","Toggler","$triggers","$trigger","controls","containsId","isOn","toggler","Tooltip","elementClassName","templateClasses","$template","isFocus","fadeInDuration","fadeOutDuration","disableForTouch","tooltipClass","triggerClass","showOn","template","tipText","touchCloseText","tooltipHeight","tooltipWidth","allowHtml","tabs","ResponsiveAccordionTabs","dummyPlugin","tmpPlugin","keyKey","objObj","toSet","fromString","$panels","tabsTitle","tabsPanel","$liHeads","$liHeadsA","display","visibility","$tabsContent","$placeholder","tempValue","_target","global","factory","module","exports","w","Error","noGlobal","arr","getProto","getPrototypeOf","slice","flat","call","concat","apply","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","support","isFunction","nodeType","item","isWindow","preservedScriptAttributes","src","nonce","noModule","DOMEval","code","node","doc","createElement","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","jQuery","selector","prototype","jquery","constructor","toArray","num","pushStack","elems","merge","prevObject","each","map","arguments","eq","last","even","grep","_elem","odd","sort","splice","extend","copy","copyIsArray","clone","deep","isPlainObject","isArray","undefined","expando","random","replace","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","isArrayLike","makeArray","inArray","second","invert","callbackInverse","callbackExpect","arg","guid","Symbol","iterator","split","_i","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","pop","pushNative","list","booleans","whitespace","identifier","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","nodeName","childNodes","els","seed","m","nid","newSelector","newContext","ownerDocument","exec","getElementById","getElementsByTagName","getElementsByClassName","qsa","testContext","scope","toSelector","join","querySelectorAll","qsaError","removeAttribute","cache","cacheLength","shift","markFunction","assert","addHandle","attrs","attrHandle","siblingCheck","cur","diff","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespaceURI","documentElement","hasCompare","subWindow","defaultView","addEventListener","attachEvent","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","operator","check","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","matcher","unmatched","lang","elemLang","activeElement","hasFocus","href","tabIndex","selected","selectedIndex","_matchIndexes","radio","checkbox","file","password","submit","filters","parseOnly","tokens","soFar","preFilters","cached","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","siblings","n","rneedsContext","needsContext","rsingleTag","winnow","qualifier","not","rootjQuery","root","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","has","targets","l","closest","prevAll","add","addBack","sibling","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","createOptions","object","_","flag","Callbacks","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","empty","disable","lock","fireWith","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Deferred","tuples","state","always","deferred","pipe","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","stack","warn","readyException","readyList","catch","readyWait","wait","completed","removeEventListener","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","getData","JSON","parse","dataAttr","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","show","values","hide","rcheckableType","rtagName","rscriptType","fragment","createDocumentFragment","checkClone","cloneNode","noCloneChecked","option","wrapMap","thead","col","tr","td","_default","tbody","tfoot","colgroup","caption","th","optgroup","getAll","setGlobalEval","refElements","buildFragment","scripts","selection","ignored","wrap","attached","nodes","createTextNode","htmlPrefilter","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","err","on","one","origFn","off","handleObjIn","eventHandle","t","handleObj","handlers","namespaces","origType","elemData","create","handle","triggered","dispatch","delegateType","bindType","delegateCount","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","preventDefault","stopPropagation","postDispatch","matchedHandlers","matchedSelectors","button","addProp","hook","Event","enumerable","originalEvent","writable","load","noBubble","click","leverageNative","beforeunload","notAsync","saved","isTrigger","stopImmediatePropagation","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","charCode","buttons","clientX","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","which","focus","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","swap","old","rboxStyle","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","offsetWidth","measure","round","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelBoxStyles","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","borderTopWidth","borderBottomWidth","offsetHeight","curCSS","computed","minWidth","maxWidth","getPropertyValue","addGetHookIf","conditionFn","hookFn","cssPrefixes","emptyStyle","vendorProps","vendorPropName","capName","finalPropName","final","cssProps","rdisplayswap","rcustomProp","cssShow","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","boxSizingNeeded","valueIsBorderBox","offsetProp","getClientRects","cssHooks","opacity","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","padding","border","prefix","suffix","expand","expanded","Tween","easing","propHooks","run","eased","pos","fx","scrollLeft","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","interval","tick","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","defaultPrefilter","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","properties","stopped","prefilters","currentTime","tweens","originalProperties","originalOptions","gotoEnd","bind","complete","tweener","prefilter","speed","speeds","fadeTo","to","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","timeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","bool","attrNames","getter","lowercaseName","rfocusable","rclickable","removeProp","propFix","tabindex","stripAndCollapse","getClass","classesToArray","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","responses","ct","finalDataType","firstDataType","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","conv","responseFields","dataFilter","throws","active","lastModified","etag","isLocal","protocol","processData","async","contentType","accepts","json","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","overrideMimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","modified","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","xhrSupported","cors","errorCallback","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","trim","define","_jQuery","_$","noConflict","webpackPolyfill","deprecate","paths","webpackUniversalModuleDefinition","modules","installedModules","__webpack_require__","moduleId","loaded","c","currentInput","currentIntent","formInputs","functionList","ignoreMap","changeIntentMap","inputMap","keydown","keyup","mousedown","mousemove","MSPointerDown","MSPointerMove","pointerdown","pointermove","inputTypes","isBuffering","isScrolling","mousePos","pointerMap","supportsPassive","setUp","detectWheel","addListeners","setInput","passive","PointerEvent","updateInput","setIntent","MSPointerEvent","touchBuffer","eventKey","activeElem","activeInput","notFormInput","fireFunctions","wheelType","onmousewheel","objPos","ask","ignoreKeys","registerOnChange","unRegisterOnChange","require"],"mappings":"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","file":"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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","\"use strict\";\n\nimport $ from 'jquery';\n\n// Core Foundation Utilities, utilized in a number of places.\n\n /**\n * Returns a boolean for RTL support\n */\nfunction rtl() {\n return $('html').attr('dir') === 'rtl';\n}\n\n/**\n * returns a random base-36 uid with namespacing\n * @function\n * @param {Number} length - number of random base-36 digits desired. Increase for more random strings.\n * @param {String} namespace - name of plugin to be incorporated in uid, optional.\n * @default {String} '' - if no plugin name is provided, nothing is appended to the uid.\n * @returns {String} - unique id\n */\nfunction GetYoDigits(length = 6, namespace){\n let str = '';\n const chars = '0123456789abcdefghijklmnopqrstuvwxyz';\n const charsLength = chars.length;\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * charsLength)];\n }\n return namespace ? `${str}-${namespace}` : str;\n}\n\n/**\n * Escape a string so it can be used as a regexp pattern\n * @function\n * @see https://stackoverflow.com/a/9310752/4317384\n *\n * @param {String} str - string to escape.\n * @returns {String} - escaped string\n */\nfunction RegExpEscape(str){\n return str.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\nfunction transitionend($elem){\n var transitions = {\n 'transition': 'transitionend',\n 'WebkitTransition': 'webkitTransitionEnd',\n 'MozTransition': 'transitionend',\n 'OTransition': 'otransitionend'\n };\n var elem = document.createElement('div'),\n end;\n\n for (let transition in transitions){\n if (typeof elem.style[transition] !== 'undefined'){\n end = transitions[transition];\n }\n }\n if (end) {\n return end;\n } else {\n setTimeout(function(){\n $elem.triggerHandler('transitionend', [$elem]);\n }, 1);\n return 'transitionend';\n }\n}\n\n/**\n * Return an event type to listen for window load.\n *\n * If `$elem` is passed, an event will be triggered on `$elem`. If window is already loaded, the event will still be triggered.\n * If `handler` is passed, attach it to the event on `$elem`.\n * Calling `onLoad` without handler allows you to get the event type that will be triggered before attaching the handler by yourself.\n * @function\n *\n * @param {Object} [] $elem - jQuery element on which the event will be triggered if passed.\n * @param {Function} [] handler - function to attach to the event.\n * @returns {String} - event type that should or will be triggered.\n */\nfunction onLoad($elem, handler) {\n const didLoad = document.readyState === 'complete';\n const eventType = (didLoad ? '_didLoad' : 'load') + '.zf.util.onLoad';\n const cb = () => $elem.triggerHandler(eventType);\n\n if ($elem) {\n if (handler) $elem.one(eventType, handler);\n\n if (didLoad)\n setTimeout(cb);\n else\n $(window).one('load', cb);\n }\n\n return eventType;\n}\n\n/**\n * Retuns an handler for the `mouseleave` that ignore disappeared mouses.\n *\n * If the mouse \"disappeared\" from the document (like when going on a browser UI element, See https://git.io/zf-11410),\n * the event is ignored.\n * - If the `ignoreLeaveWindow` is `true`, the event is ignored when the user actually left the window\n * (like by switching to an other window with [Alt]+[Tab]).\n * - If the `ignoreReappear` is `true`, the event will be ignored when the mouse will reappear later on the document\n * outside of the element it left.\n *\n * @function\n *\n * @param {Function} [] handler - handler for the filtered `mouseleave` event to watch.\n * @param {Object} [] options - object of options:\n * - {Boolean} [false] ignoreLeaveWindow - also ignore when the user switched windows.\n * - {Boolean} [false] ignoreReappear - also ignore when the mouse reappeared outside of the element it left.\n * @returns {Function} - filtered handler to use to listen on the `mouseleave` event.\n */\nfunction ignoreMousedisappear(handler, { ignoreLeaveWindow = false, ignoreReappear = false } = {}) {\n return function leaveEventHandler(eLeave, ...rest) {\n const callback = handler.bind(this, eLeave, ...rest);\n\n // The mouse left: call the given callback if the mouse entered elsewhere\n if (eLeave.relatedTarget !== null) {\n return callback();\n }\n\n // Otherwise, check if the mouse actually left the window.\n // In firefox if the user switched between windows, the window sill have the focus by the time\n // the event is triggered. We have to debounce the event to test this case.\n setTimeout(function leaveEventDebouncer() {\n if (!ignoreLeaveWindow && document.hasFocus && !document.hasFocus()) {\n return callback();\n }\n\n // Otherwise, wait for the mouse to reeapear outside of the element,\n if (!ignoreReappear) {\n $(document).one('mouseenter', function reenterEventHandler(eReenter) {\n if (!$(eLeave.currentTarget).has(eReenter.target).length) {\n // Fill where the mouse finally entered.\n eLeave.relatedTarget = eReenter.target;\n callback();\n }\n });\n }\n\n }, 0);\n };\n}\n\n\nexport { rtl, GetYoDigits, RegExpEscape, transitionend, onLoad, ignoreMousedisappear };\n","'use strict';\n\nimport $ from 'jquery';\n\n// Default set of media queries\nconst defaultQueries = {\n 'default' : 'only screen',\n landscape : 'only screen and (orientation: landscape)',\n portrait : 'only screen and (orientation: portrait)',\n retina : 'only screen and (-webkit-min-device-pixel-ratio: 2),' +\n 'only screen and (min--moz-device-pixel-ratio: 2),' +\n 'only screen and (-o-min-device-pixel-ratio: 2/1),' +\n 'only screen and (min-device-pixel-ratio: 2),' +\n 'only screen and (min-resolution: 192dpi),' +\n 'only screen and (min-resolution: 2dppx)'\n };\n\n\n// matchMedia() polyfill - Test a CSS media type/query in JS.\n// Authors & copyright © 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. MIT license\n/* eslint-disable */\nwindow.matchMedia || (window.matchMedia = (function () {\n \"use strict\";\n\n // For browsers that support matchMedium api such as IE 9 and webkit\n var styleMedia = (window.styleMedia || window.media);\n\n // For those that don't support matchMedium\n if (!styleMedia) {\n var style = document.createElement('style'),\n script = document.getElementsByTagName('script')[0],\n info = null;\n\n style.type = 'text/css';\n style.id = 'matchmediajs-test';\n\n if (!script) {\n document.head.appendChild(style);\n } else {\n script.parentNode.insertBefore(style, script);\n }\n\n // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers\n info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle;\n\n styleMedia = {\n matchMedium: function (media) {\n var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';\n\n // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers\n if (style.styleSheet) {\n style.styleSheet.cssText = text;\n } else {\n style.textContent = text;\n }\n\n // Test if media query is true or false\n return info.width === '1px';\n }\n };\n }\n\n return function(media) {\n return {\n matches: styleMedia.matchMedium(media || 'all'),\n media: media || 'all'\n };\n };\n})());\n/* eslint-enable */\n\nvar MediaQuery = {\n queries: [],\n\n current: '',\n\n /**\n * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher.\n * @function\n * @private\n */\n _init() {\n\n // make sure the initialization is only done once when calling _init() several times\n if (this.isInitialized === true) {\n return;\n } else {\n this.isInitialized = true;\n }\n\n var self = this;\n var $meta = $('meta.foundation-mq');\n if(!$meta.length){\n $('<meta class=\"foundation-mq\">').appendTo(document.head);\n }\n\n var extractedStyles = $('.foundation-mq').css('font-family');\n var namedQueries;\n\n namedQueries = parseStyleToObject(extractedStyles);\n\n self.queries = []; // reset\n\n for (var key in namedQueries) {\n if(namedQueries.hasOwnProperty(key)) {\n self.queries.push({\n name: key,\n value: `only screen and (min-width: ${namedQueries[key]})`\n });\n }\n }\n\n this.current = this._getCurrentSize();\n\n this._watcher();\n },\n\n /**\n * Reinitializes the media query helper.\n * Useful if your CSS breakpoint configuration has just been loaded or has changed since the initialization.\n * @function\n * @private\n */\n _reInit() {\n this.isInitialized = false;\n this._init();\n },\n\n /**\n * Checks if the screen is at least as wide as a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller.\n */\n atLeast(size) {\n var query = this.get(size);\n\n if (query) {\n return window.matchMedia(query).matches;\n }\n\n return false;\n },\n\n /**\n * Checks if the screen is within the given breakpoint.\n * If smaller than the breakpoint of larger than its upper limit it returns false.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` otherwise.\n */\n only(size) {\n return size === this._getCurrentSize();\n },\n\n /**\n * Checks if the screen is within a breakpoint or smaller.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it's larger.\n */\n upTo(size) {\n const nextSize = this.next(size);\n\n // If the next breakpoint does not match, the screen is smaller than\n // the upper limit of this breakpoint.\n if (nextSize) {\n return !this.atLeast(nextSize);\n }\n\n // If there is no next breakpoint, the \"size\" breakpoint does not have\n // an upper limit and the screen will always be within it or smaller.\n return true;\n },\n\n /**\n * Checks if the screen matches to a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it does not.\n */\n is(size) {\n const parts = size.trim().split(' ').filter(p => !!p.length);\n const [bpSize, bpModifier = ''] = parts;\n\n // Only the breakpont\n if (bpModifier === 'only') {\n return this.only(bpSize);\n }\n // At least the breakpoint (included)\n if (!bpModifier || bpModifier === 'up') {\n return this.atLeast(bpSize);\n }\n // Up to the breakpoint (included)\n if (bpModifier === 'down') {\n return this.upTo(bpSize);\n }\n\n throw new Error(`\n Invalid breakpoint passed to MediaQuery.is().\n Expected a breakpoint name formatted like \"<size> <modifier>\", got \"${size}\".\n `);\n },\n\n /**\n * Gets the media query of a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to get.\n * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist.\n */\n get(size) {\n for (var i in this.queries) {\n if(this.queries.hasOwnProperty(i)) {\n var query = this.queries[i];\n if (size === query.name) return query.value;\n }\n }\n\n return null;\n },\n\n /**\n * Get the breakpoint following the given breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint.\n * @returns {String|null} - The name of the following breakpoint, or `null` if the passed breakpoint was the last one.\n */\n next(size) {\n const queryIndex = this.queries.findIndex((q) => this._getQueryName(q) === size);\n if (queryIndex === -1) {\n throw new Error(`\n Unknown breakpoint \"${size}\" passed to MediaQuery.next().\n Ensure it is present in your Sass \"$breakpoints\" setting.\n `);\n }\n\n const nextQuery = this.queries[queryIndex + 1];\n return nextQuery ? nextQuery.name : null;\n },\n\n /**\n * Returns the name of the breakpoint related to the given value.\n * @function\n * @private\n * @param {String|Object} value - Breakpoint name or query object.\n * @returns {String} Name of the breakpoint.\n */\n _getQueryName(value) {\n if (typeof value === 'string')\n return value;\n if (typeof value === 'object')\n return value.name;\n throw new TypeError(`\n Invalid value passed to MediaQuery._getQueryName().\n Expected a breakpoint name (String) or a breakpoint query (Object), got \"${value}\" (${typeof value})\n `);\n },\n\n /**\n * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one).\n * @function\n * @private\n * @returns {String} Name of the current breakpoint.\n */\n _getCurrentSize() {\n var matched;\n\n for (var i = 0; i < this.queries.length; i++) {\n var query = this.queries[i];\n\n if (window.matchMedia(query.value).matches) {\n matched = query;\n }\n }\n\n return matched && this._getQueryName(matched);\n },\n\n /**\n * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes.\n * @function\n * @private\n */\n _watcher() {\n $(window).off('resize.zf.mediaquery').on('resize.zf.mediaquery', () => {\n var newSize = this._getCurrentSize(), currentSize = this.current;\n\n if (newSize !== currentSize) {\n // Change the current media query\n this.current = newSize;\n\n // Broadcast the media query change on the window\n $(window).trigger('changed.zf.mediaquery', [newSize, currentSize]);\n }\n });\n }\n};\n\n\n\n// Thank you: https://github.com/sindresorhus/query-string\nfunction parseStyleToObject(str) {\n var styleObject = {};\n\n if (typeof str !== 'string') {\n return styleObject;\n }\n\n str = str.trim().slice(1, -1); // browsers re-quote string style values\n\n if (!str) {\n return styleObject;\n }\n\n styleObject = str.split('&').reduce(function(ret, param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = parts[0];\n var val = parts[1];\n key = decodeURIComponent(key);\n\n // missing `=` should be `null`:\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n val = typeof val === 'undefined' ? null : decodeURIComponent(val);\n\n if (!ret.hasOwnProperty(key)) {\n ret[key] = val;\n } else if (Array.isArray(ret[key])) {\n ret[key].push(val);\n } else {\n ret[key] = [ret[key], val];\n }\n return ret;\n }, {});\n\n return styleObject;\n}\n\nexport {MediaQuery};\n","\"use strict\";\n\nimport $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\n\nvar FOUNDATION_VERSION = '6.6.3';\n\n// Global Foundation object\n// This is attached to the window, or used as a module for AMD/Browserify\nvar Foundation = {\n version: FOUNDATION_VERSION,\n\n /**\n * Stores initialized plugins.\n */\n _plugins: {},\n\n /**\n * Stores generated unique ids for plugin instances\n */\n _uuids: [],\n\n /**\n * Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing.\n * @param {Object} plugin - The constructor of the plugin.\n */\n plugin: function(plugin, name) {\n // Object key to use when adding to global Foundation object\n // Examples: Foundation.Reveal, Foundation.OffCanvas\n var className = (name || functionName(plugin));\n // Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin\n // Examples: data-reveal, data-off-canvas\n var attrName = hyphenate(className);\n\n // Add to the Foundation object and the plugins list (for reflowing)\n this._plugins[attrName] = this[className] = plugin;\n },\n /**\n * @function\n * Populates the _uuids array with pointers to each individual plugin instance.\n * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls.\n * Also fires the initialization event for each plugin, consolidating repetitive code.\n * @param {Object} plugin - an instance of a plugin, usually `this` in context.\n * @param {String} name - the name of the plugin, passed as a camelCased string.\n * @fires Plugin#init\n */\n registerPlugin: function(plugin, name){\n var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase();\n plugin.uuid = GetYoDigits(6, pluginName);\n\n if(!plugin.$element.attr(`data-${pluginName}`)){ plugin.$element.attr(`data-${pluginName}`, plugin.uuid); }\n if(!plugin.$element.data('zfPlugin')){ plugin.$element.data('zfPlugin', plugin); }\n /**\n * Fires when the plugin has initialized.\n * @event Plugin#init\n */\n plugin.$element.trigger(`init.zf.${pluginName}`);\n\n this._uuids.push(plugin.uuid);\n\n return;\n },\n /**\n * @function\n * Removes the plugins uuid from the _uuids array.\n * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute.\n * Also fires the destroyed event for the plugin, consolidating repetitive code.\n * @param {Object} plugin - an instance of a plugin, usually `this` in context.\n * @fires Plugin#destroyed\n */\n unregisterPlugin: function(plugin){\n var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor));\n\n this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1);\n plugin.$element.removeAttr(`data-${pluginName}`).removeData('zfPlugin')\n /**\n * Fires when the plugin has been destroyed.\n * @event Plugin#destroyed\n */\n .trigger(`destroyed.zf.${pluginName}`);\n for(var prop in plugin){\n plugin[prop] = null;//clean up script to prep for garbage collection.\n }\n return;\n },\n\n /**\n * @function\n * Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc.\n * @param {String} plugins - optional string of an individual plugin key, attained by calling `$(element).data('pluginName')`, or string of a plugin class i.e. `'dropdown'`\n * @default If no argument is passed, reflow all currently active plugins.\n */\n reInit: function(plugins){\n var isJQ = plugins instanceof $;\n try{\n if(isJQ){\n plugins.each(function(){\n $(this).data('zfPlugin')._init();\n });\n }else{\n var type = typeof plugins,\n _this = this,\n fns = {\n 'object': function(plgs){\n plgs.forEach(function(p){\n p = hyphenate(p);\n $('[data-'+ p +']').foundation('_init');\n });\n },\n 'string': function(){\n plugins = hyphenate(plugins);\n $('[data-'+ plugins +']').foundation('_init');\n },\n 'undefined': function(){\n this['object'](Object.keys(_this._plugins));\n }\n };\n fns[type](plugins);\n }\n }catch(err){\n console.error(err);\n }finally{\n return plugins;\n }\n },\n\n /**\n * Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized.\n * @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object.\n * @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything.\n */\n reflow: function(elem, plugins) {\n\n // If plugins is undefined, just grab everything\n if (typeof plugins === 'undefined') {\n plugins = Object.keys(this._plugins);\n }\n // If plugins is a string, convert it to an array with one item\n else if (typeof plugins === 'string') {\n plugins = [plugins];\n }\n\n var _this = this;\n\n // Iterate through each plugin\n $.each(plugins, function(i, name) {\n // Get the current plugin\n var plugin = _this._plugins[name];\n\n // Localize the search to all elements inside elem, as well as elem itself, unless elem === document\n var $elem = $(elem).find('[data-'+name+']').addBack('[data-'+name+']').filter(function () {\n return typeof $(this).data(\"zfPlugin\") === 'undefined';\n });\n\n // For each plugin found, initialize it\n $elem.each(function() {\n var $el = $(this),\n opts = { reflow: true };\n\n if($el.attr('data-options')){\n $el.attr('data-options').split(';').forEach(function(option, _index){\n var opt = option.split(':').map(function(el){ return el.trim(); });\n if(opt[0]) opts[opt[0]] = parseValue(opt[1]);\n });\n }\n try{\n $el.data('zfPlugin', new plugin($(this), opts));\n }catch(er){\n console.error(er);\n }finally{\n return;\n }\n });\n });\n },\n getFnName: functionName,\n\n addToJquery: function($) {\n // TODO: consider not making this a jQuery function\n // TODO: need way to reflow vs. re-initialize\n /**\n * The Foundation jQuery method.\n * @param {String|Array} method - An action to perform on the current jQuery object.\n */\n var foundation = function(method) {\n var type = typeof method,\n $noJS = $('.no-js');\n\n if($noJS.length){\n $noJS.removeClass('no-js');\n }\n\n if(type === 'undefined'){//needs to initialize the Foundation object, or an individual plugin.\n MediaQuery._init();\n Foundation.reflow(this);\n }else if(type === 'string'){//an individual method to invoke on a plugin or group of plugins\n var args = Array.prototype.slice.call(arguments, 1);//collect all the arguments, if necessary\n var plugClass = this.data('zfPlugin');//determine the class of plugin\n\n if(typeof plugClass !== 'undefined' && typeof plugClass[method] !== 'undefined'){//make sure both the class and method exist\n if(this.length === 1){//if there's only one, call it directly.\n plugClass[method].apply(plugClass, args);\n }else{\n this.each(function(i, el){//otherwise loop through the jQuery collection and invoke the method on each\n plugClass[method].apply($(el).data('zfPlugin'), args);\n });\n }\n }else{//error for no class or no method\n throw new ReferenceError(\"We're sorry, '\" + method + \"' is not an available method for \" + (plugClass ? functionName(plugClass) : 'this element') + '.');\n }\n }else{//error for invalid argument type\n throw new TypeError(`We're sorry, ${type} is not a valid parameter. You must use a string representing the method you wish to invoke.`);\n }\n return this;\n };\n $.fn.foundation = foundation;\n return $;\n }\n};\n\nFoundation.util = {\n /**\n * Function for applying a debounce effect to a function call.\n * @function\n * @param {Function} func - Function to be called at end of timeout.\n * @param {Number} delay - Time in ms to delay the call of `func`.\n * @returns function\n */\n throttle: function (func, delay) {\n var timer = null;\n\n return function () {\n var context = this, args = arguments;\n\n if (timer === null) {\n timer = setTimeout(function () {\n func.apply(context, args);\n timer = null;\n }, delay);\n }\n };\n }\n};\n\nwindow.Foundation = Foundation;\n\n// Polyfill for requestAnimationFrame\n(function() {\n if (!Date.now || !window.Date.now)\n window.Date.now = Date.now = function() { return new Date().getTime(); };\n\n var vendors = ['webkit', 'moz'];\n for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {\n var vp = vendors[i];\n window.requestAnimationFrame = window[vp+'RequestAnimationFrame'];\n window.cancelAnimationFrame = (window[vp+'CancelAnimationFrame']\n || window[vp+'CancelRequestAnimationFrame']);\n }\n if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent)\n || !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n var lastTime = 0;\n window.requestAnimationFrame = function(callback) {\n var now = Date.now();\n var nextTime = Math.max(lastTime + 16, now);\n return setTimeout(function() { callback(lastTime = nextTime); },\n nextTime - now);\n };\n window.cancelAnimationFrame = clearTimeout;\n }\n /**\n * Polyfill for performance.now, required by rAF\n */\n if(!window.performance || !window.performance.now){\n window.performance = {\n start: Date.now(),\n now: function(){ return Date.now() - this.start; }\n };\n }\n})();\nif (!Function.prototype.bind) {\n Function.prototype.bind = function(oThis) {\n if (typeof this !== 'function') {\n // closest thing possible to the ECMAScript 5\n // internal IsCallable function\n throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n }\n\n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function() {},\n fBound = function() {\n return fToBind.apply(this instanceof fNOP\n ? this\n : oThis,\n aArgs.concat(Array.prototype.slice.call(arguments)));\n };\n\n if (this.prototype) {\n // native functions don't have a prototype\n fNOP.prototype = this.prototype;\n }\n fBound.prototype = new fNOP();\n\n return fBound;\n };\n}\n// Polyfill to get the name of a function in IE9\nfunction functionName(fn) {\n if (typeof Function.prototype.name === 'undefined') {\n var funcNameRegex = /function\\s([^(]{1,})\\(/;\n var results = (funcNameRegex).exec((fn).toString());\n return (results && results.length > 1) ? results[1].trim() : \"\";\n }\n else if (typeof fn.prototype === 'undefined') {\n return fn.constructor.name;\n }\n else {\n return fn.prototype.constructor.name;\n }\n}\nfunction parseValue(str){\n if ('true' === str) return true;\n else if ('false' === str) return false;\n else if (!isNaN(str * 1)) return parseFloat(str);\n return str;\n}\n// Convert PascalCase to kebab-case\n// Thank you: http://stackoverflow.com/a/8955580\nfunction hyphenate(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nexport {Foundation};\n","'use strict';\n\nvar Box = {\n ImNotTouchingYou: ImNotTouchingYou,\n OverlapArea: OverlapArea,\n GetDimensions: GetDimensions,\n GetExplicitOffsets: GetExplicitOffsets\n}\n\n/**\n * Compares the dimensions of an element to a container and determines collision events with container.\n * @function\n * @param {jQuery} element - jQuery object to test for collisions.\n * @param {jQuery} parent - jQuery object to use as bounding container.\n * @param {Boolean} lrOnly - set to true to check left and right values only.\n * @param {Boolean} tbOnly - set to true to check top and bottom values only.\n * @default if no parent object passed, detects collisions with `window`.\n * @returns {Boolean} - true if collision free, false if a collision in any direction.\n */\nfunction ImNotTouchingYou(element, parent, lrOnly, tbOnly, ignoreBottom) {\n return OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) === 0;\n}\n\nfunction OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) {\n var eleDims = GetDimensions(element),\n topOver, bottomOver, leftOver, rightOver;\n if (parent) {\n var parDims = GetDimensions(parent);\n\n bottomOver = (parDims.height + parDims.offset.top) - (eleDims.offset.top + eleDims.height);\n topOver = eleDims.offset.top - parDims.offset.top;\n leftOver = eleDims.offset.left - parDims.offset.left;\n rightOver = (parDims.width + parDims.offset.left) - (eleDims.offset.left + eleDims.width);\n }\n else {\n bottomOver = (eleDims.windowDims.height + eleDims.windowDims.offset.top) - (eleDims.offset.top + eleDims.height);\n topOver = eleDims.offset.top - eleDims.windowDims.offset.top;\n leftOver = eleDims.offset.left - eleDims.windowDims.offset.left;\n rightOver = eleDims.windowDims.width - (eleDims.offset.left + eleDims.width);\n }\n\n bottomOver = ignoreBottom ? 0 : Math.min(bottomOver, 0);\n topOver = Math.min(topOver, 0);\n leftOver = Math.min(leftOver, 0);\n rightOver = Math.min(rightOver, 0);\n\n if (lrOnly) {\n return leftOver + rightOver;\n }\n if (tbOnly) {\n return topOver + bottomOver;\n }\n\n // use sum of squares b/c we care about overlap area.\n return Math.sqrt((topOver * topOver) + (bottomOver * bottomOver) + (leftOver * leftOver) + (rightOver * rightOver));\n}\n\n/**\n * Uses native methods to return an object of dimension values.\n * @function\n * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window.\n * @returns {Object} - nested object of integer pixel values\n * TODO - if element is window, return only those values.\n */\nfunction GetDimensions(elem){\n elem = elem.length ? elem[0] : elem;\n\n if (elem === window || elem === document) {\n throw new Error(\"I'm sorry, Dave. I'm afraid I can't do that.\");\n }\n\n var rect = elem.getBoundingClientRect(),\n parRect = elem.parentNode.getBoundingClientRect(),\n winRect = document.body.getBoundingClientRect(),\n winY = window.pageYOffset,\n winX = window.pageXOffset;\n\n return {\n width: rect.width,\n height: rect.height,\n offset: {\n top: rect.top + winY,\n left: rect.left + winX\n },\n parentDims: {\n width: parRect.width,\n height: parRect.height,\n offset: {\n top: parRect.top + winY,\n left: parRect.left + winX\n }\n },\n windowDims: {\n width: winRect.width,\n height: winRect.height,\n offset: {\n top: winY,\n left: winX\n }\n }\n }\n}\n\n/**\n * Returns an object of top and left integer pixel values for dynamically rendered elements,\n * such as: Tooltip, Reveal, and Dropdown. Maintained for backwards compatibility, and where\n * you don't know alignment, but generally from\n * 6.4 forward you should use GetExplicitOffsets, as GetOffsets conflates position and alignment.\n * @function\n * @param {jQuery} element - jQuery object for the element being positioned.\n * @param {jQuery} anchor - jQuery object for the element's anchor point.\n * @param {String} position - a string relating to the desired position of the element, relative to it's anchor\n * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element.\n * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element.\n * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset.\n * TODO alter/rewrite to work with `em` values as well/instead of pixels\n */\nfunction GetExplicitOffsets(element, anchor, position, alignment, vOffset, hOffset, isOverflow) {\n var $eleDims = GetDimensions(element),\n $anchorDims = anchor ? GetDimensions(anchor) : null;\n\n var topVal, leftVal;\n\n if ($anchorDims !== null) {\n // set position related attribute\n switch (position) {\n case 'top':\n topVal = $anchorDims.offset.top - ($eleDims.height + vOffset);\n break;\n case 'bottom':\n topVal = $anchorDims.offset.top + $anchorDims.height + vOffset;\n break;\n case 'left':\n leftVal = $anchorDims.offset.left - ($eleDims.width + hOffset);\n break;\n case 'right':\n leftVal = $anchorDims.offset.left + $anchorDims.width + hOffset;\n break;\n }\n\n // set alignment related attribute\n switch (position) {\n case 'top':\n case 'bottom':\n switch (alignment) {\n case 'left':\n leftVal = $anchorDims.offset.left + hOffset;\n break;\n case 'right':\n leftVal = $anchorDims.offset.left - $eleDims.width + $anchorDims.width - hOffset;\n break;\n case 'center':\n leftVal = isOverflow ? hOffset : (($anchorDims.offset.left + ($anchorDims.width / 2)) - ($eleDims.width / 2)) + hOffset;\n break;\n }\n break;\n case 'right':\n case 'left':\n switch (alignment) {\n case 'bottom':\n topVal = $anchorDims.offset.top - vOffset + $anchorDims.height - $eleDims.height;\n break;\n case 'top':\n topVal = $anchorDims.offset.top + vOffset\n break;\n case 'center':\n topVal = ($anchorDims.offset.top + vOffset + ($anchorDims.height / 2)) - ($eleDims.height / 2)\n break;\n }\n break;\n }\n }\n\n return {top: topVal, left: leftVal};\n}\n\nexport {Box};\n","'use strict';\n\nimport $ from 'jquery';\n\n/**\n * Runs a callback function when images are fully loaded.\n * @param {Object} images - Image(s) to check if loaded.\n * @param {Func} callback - Function to execute when image is fully loaded.\n */\nfunction onImagesLoaded(images, callback){\n var self = this,\n unloaded = images.length;\n\n if (unloaded === 0) {\n callback();\n }\n\n images.each(function(){\n // Check if image is loaded\n if (this.complete && typeof this.naturalWidth !== 'undefined') {\n singleImageLoaded();\n }\n else {\n // If the above check failed, simulate loading on detached element.\n var image = new Image();\n // Still count image as loaded if it finalizes with an error.\n var events = \"load.zf.images error.zf.images\";\n $(image).one(events, function me(event){\n // Unbind the event listeners. We're using 'one' but only one of the two events will have fired.\n $(this).off(events, me);\n singleImageLoaded();\n });\n image.src = $(this).attr('src');\n }\n });\n\n function singleImageLoaded() {\n unloaded--;\n if (unloaded === 0) {\n callback();\n }\n }\n}\n\nexport { onImagesLoaded };\n","/*******************************************\n * *\n * This util was created by Marius Olbertz *\n * Please thank Marius on GitHub /owlbertz *\n * or the web http://www.mariusolbertz.de/ *\n * *\n ******************************************/\n\n'use strict';\n\nimport $ from 'jquery';\nimport { rtl as Rtl } from './foundation.core.utils';\n\nconst keyCodes = {\n 9: 'TAB',\n 13: 'ENTER',\n 27: 'ESCAPE',\n 32: 'SPACE',\n 35: 'END',\n 36: 'HOME',\n 37: 'ARROW_LEFT',\n 38: 'ARROW_UP',\n 39: 'ARROW_RIGHT',\n 40: 'ARROW_DOWN'\n}\n\nvar commands = {}\n\n// Functions pulled out to be referenceable from internals\nfunction findFocusable($element) {\n if(!$element) {return false; }\n return $element.find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]').filter(function() {\n if (!$(this).is(':visible') || $(this).attr('tabindex') < 0) { return false; } //only have visible elements and those that have a tabindex greater or equal 0\n return true;\n });\n}\n\nfunction parseKey(event) {\n var key = keyCodes[event.which || event.keyCode] || String.fromCharCode(event.which).toUpperCase();\n\n // Remove un-printable characters, e.g. for `fromCharCode` calls for CTRL only events\n key = key.replace(/\\W+/, '');\n\n if (event.shiftKey) key = `SHIFT_${key}`;\n if (event.ctrlKey) key = `CTRL_${key}`;\n if (event.altKey) key = `ALT_${key}`;\n\n // Remove trailing underscore, in case only modifiers were used (e.g. only `CTRL_ALT`)\n key = key.replace(/_$/, '');\n\n return key;\n}\n\nvar Keyboard = {\n keys: getKeyCodes(keyCodes),\n\n /**\n * Parses the (keyboard) event and returns a String that represents its key\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n * @param {Event} event - the event generated by the event handler\n * @return String key - String that represents the key pressed\n */\n parseKey: parseKey,\n\n /**\n * Handles the given (keyboard) event\n * @param {Event} event - the event generated by the event handler\n * @param {String} component - Foundation component's name, e.g. Slider or Reveal\n * @param {Objects} functions - collection of functions that are to be executed\n */\n handleKey(event, component, functions) {\n var commandList = commands[component],\n keyCode = this.parseKey(event),\n cmds,\n command,\n fn;\n\n if (!commandList) return console.warn('Component not defined!');\n\n // Ignore the event if it was already handled\n if (event.zfIsKeyHandled === true) return;\n\n // This component does not differentiate between ltr and rtl\n if (typeof commandList.ltr === 'undefined') {\n cmds = commandList; // use plain list\n } else { // merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa\n if (Rtl()) cmds = $.extend({}, commandList.ltr, commandList.rtl);\n\n else cmds = $.extend({}, commandList.rtl, commandList.ltr);\n }\n command = cmds[keyCode];\n\n fn = functions[command];\n // Execute the handler if found\n if (fn && typeof fn === 'function') {\n var returnValue = fn.apply();\n\n // Mark the event as \"handled\" to prevent future handlings\n event.zfIsKeyHandled = true;\n\n // Execute function when event was handled\n if (functions.handled || typeof functions.handled === 'function') {\n functions.handled(returnValue);\n }\n } else {\n // Execute function when event was not handled\n if (functions.unhandled || typeof functions.unhandled === 'function') {\n functions.unhandled();\n }\n }\n },\n\n /**\n * Finds all focusable elements within the given `$element`\n * @param {jQuery} $element - jQuery object to search within\n * @return {jQuery} $focusable - all focusable elements within `$element`\n */\n\n findFocusable: findFocusable,\n\n /**\n * Returns the component name name\n * @param {Object} component - Foundation component, e.g. Slider or Reveal\n * @return String componentName\n */\n\n register(componentName, cmds) {\n commands[componentName] = cmds;\n },\n\n\n // TODO9438: These references to Keyboard need to not require global. Will 'this' work in this context?\n //\n /**\n * Traps the focus in the given element.\n * @param {jQuery} $element jQuery object to trap the foucs into.\n */\n trapFocus($element) {\n var $focusable = findFocusable($element),\n $firstFocusable = $focusable.eq(0),\n $lastFocusable = $focusable.eq(-1);\n\n $element.on('keydown.zf.trapfocus', function(event) {\n if (event.target === $lastFocusable[0] && parseKey(event) === 'TAB') {\n event.preventDefault();\n $firstFocusable.focus();\n }\n else if (event.target === $firstFocusable[0] && parseKey(event) === 'SHIFT_TAB') {\n event.preventDefault();\n $lastFocusable.focus();\n }\n });\n },\n /**\n * Releases the trapped focus from the given element.\n * @param {jQuery} $element jQuery object to release the focus for.\n */\n releaseFocus($element) {\n $element.off('keydown.zf.trapfocus');\n }\n}\n\n/*\n * Constants for easier comparing.\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n */\nfunction getKeyCodes(kcs) {\n var k = {};\n for (var kc in kcs) k[kcs[kc]] = kcs[kc];\n return k;\n}\n\nexport {Keyboard};\n","'use strict';\n\nimport $ from 'jquery';\nimport { transitionend } from './foundation.core.utils';\n\n/**\n * Motion module.\n * @module foundation.motion\n */\n\nconst initClasses = ['mui-enter', 'mui-leave'];\nconst activeClasses = ['mui-enter-active', 'mui-leave-active'];\n\nconst Motion = {\n animateIn: function(element, animation, cb) {\n animate(true, element, animation, cb);\n },\n\n animateOut: function(element, animation, cb) {\n animate(false, element, animation, cb);\n }\n}\n\nfunction Move(duration, elem, fn){\n var anim, prog, start = null;\n // console.log('called');\n\n if (duration === 0) {\n fn.apply(elem);\n elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);\n return;\n }\n\n function move(ts){\n if(!start) start = ts;\n // console.log(start, ts);\n prog = ts - start;\n fn.apply(elem);\n\n if(prog < duration){ anim = window.requestAnimationFrame(move, elem); }\n else{\n window.cancelAnimationFrame(anim);\n elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);\n }\n }\n anim = window.requestAnimationFrame(move);\n}\n\n/**\n * Animates an element in or out using a CSS transition class.\n * @function\n * @private\n * @param {Boolean} isIn - Defines if the animation is in or out.\n * @param {Object} element - jQuery or HTML object to animate.\n * @param {String} animation - CSS class to use.\n * @param {Function} cb - Callback to run when animation is finished.\n */\nfunction animate(isIn, element, animation, cb) {\n element = $(element).eq(0);\n\n if (!element.length) return;\n\n var initClass = isIn ? initClasses[0] : initClasses[1];\n var activeClass = isIn ? activeClasses[0] : activeClasses[1];\n\n // Set up the animation\n reset();\n\n element\n .addClass(animation)\n .css('transition', 'none');\n\n requestAnimationFrame(() => {\n element.addClass(initClass);\n if (isIn) element.show();\n });\n\n // Start the animation\n requestAnimationFrame(() => {\n // will trigger the browser to synchronously calculate the style and layout\n // also called reflow or layout thrashing\n // see https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n element[0].offsetWidth;\n element\n .css('transition', '')\n .addClass(activeClass);\n });\n\n // Clean up the animation when it finishes\n element.one(transitionend(element), finish);\n\n // Hides the element (for out animations), resets the element, and runs a callback\n function finish() {\n if (!isIn) element.hide();\n reset();\n if (cb) cb.apply(element);\n }\n\n // Resets transitions and removes motion-specific classes\n function reset() {\n element[0].style.transitionDuration = 0;\n element.removeClass(`${initClass} ${activeClass} ${animation}`);\n }\n}\n\nexport { Move, Motion };\n\n","'use strict';\n\nimport $ from 'jquery';\n\nconst Nest = {\n Feather(menu, type = 'zf') {\n menu.attr('role', 'menubar');\n menu.find('a').attr({'role': 'menuitem'});\n\n var items = menu.find('li').attr({'role': 'none'}),\n subMenuClass = `is-${type}-submenu`,\n subItemClass = `${subMenuClass}-item`,\n hasSubClass = `is-${type}-submenu-parent`,\n applyAria = (type !== 'accordion'); // Accordions handle their own ARIA attriutes.\n\n items.each(function() {\n var $item = $(this),\n $sub = $item.children('ul');\n\n if ($sub.length) {\n $item.addClass(hasSubClass);\n if(applyAria) {\n $item.attr({\n 'aria-haspopup': true,\n 'aria-label': $item.children('a:first').text()\n });\n // Note: Drilldowns behave differently in how they hide, and so need\n // additional attributes. We should look if this possibly over-generalized\n // utility (Nest) is appropriate when we rework menus in 6.4\n if(type === 'drilldown') {\n $item.attr({'aria-expanded': false});\n }\n }\n $sub\n .addClass(`submenu ${subMenuClass}`)\n .attr({\n 'data-submenu': '',\n 'role': 'menubar'\n });\n if(type === 'drilldown') {\n $sub.attr({'aria-hidden': true});\n }\n }\n\n if ($item.parent('[data-submenu]').length) {\n $item.addClass(`is-submenu-item ${subItemClass}`);\n }\n });\n\n return;\n },\n\n Burn(menu, type) {\n var //items = menu.find('li'),\n subMenuClass = `is-${type}-submenu`,\n subItemClass = `${subMenuClass}-item`,\n hasSubClass = `is-${type}-submenu-parent`;\n\n menu\n .find('>li, > li > ul, .menu, .menu > li, [data-submenu] > li')\n .removeClass(`${subMenuClass} ${subItemClass} ${hasSubClass} is-submenu-item submenu is-active`)\n .removeAttr('data-submenu').css('display', '');\n\n }\n}\n\nexport {Nest};\n","'use strict';\n\nimport $ from 'jquery';\n\nfunction Timer(elem, options, cb) {\n var _this = this,\n duration = options.duration,//options is an object for easily adding features later.\n nameSpace = Object.keys(elem.data())[0] || 'timer',\n remain = -1,\n start,\n timer;\n\n this.isPaused = false;\n\n this.restart = function() {\n remain = -1;\n clearTimeout(timer);\n this.start();\n }\n\n this.start = function() {\n this.isPaused = false;\n // if(!elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.\n clearTimeout(timer);\n remain = remain <= 0 ? duration : remain;\n elem.data('paused', false);\n start = Date.now();\n timer = setTimeout(function(){\n if(options.infinite){\n _this.restart();//rerun the timer.\n }\n if (cb && typeof cb === 'function') { cb(); }\n }, remain);\n elem.trigger(`timerstart.zf.${nameSpace}`);\n }\n\n this.pause = function() {\n this.isPaused = true;\n //if(elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.\n clearTimeout(timer);\n elem.data('paused', true);\n var end = Date.now();\n remain = remain - (end - start);\n elem.trigger(`timerpaused.zf.${nameSpace}`);\n }\n}\n\nexport {Timer};\n","//**************************************************\n//**Work inspired by multiple jquery swipe plugins**\n//**Done by Yohai Ararat ***************************\n//**************************************************\n\nimport $ from 'jquery';\n\nvar Touch = {};\n\nvar startPosX,\n startPosY,\n startTime,\n elapsedTime,\n startEvent,\n isMoving = false,\n didMoved = false;\n\nfunction onTouchEnd(e) {\n this.removeEventListener('touchmove', onTouchMove);\n this.removeEventListener('touchend', onTouchEnd);\n\n // If the touch did not move, consider it as a \"tap\"\n if (!didMoved) {\n var tapEvent = $.Event('tap', startEvent || e);\n $(this).trigger(tapEvent);\n }\n\n startEvent = null;\n isMoving = false;\n didMoved = false;\n}\n\nfunction onTouchMove(e) {\n if ($.spotSwipe.preventDefault) { e.preventDefault(); }\n\n if(isMoving) {\n var x = e.touches[0].pageX;\n var y = e.touches[0].pageY;\n var dx = startPosX - x;\n var dy = startPosY - y;\n var dir;\n didMoved = true;\n elapsedTime = new Date().getTime() - startTime;\n if(Math.abs(dx) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n dir = dx > 0 ? 'left' : 'right';\n }\n // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n // dir = dy > 0 ? 'down' : 'up';\n // }\n if(dir) {\n e.preventDefault();\n onTouchEnd.apply(this, arguments);\n $(this)\n .trigger($.Event('swipe', Object.assign({}, e)), dir)\n .trigger($.Event(`swipe${dir}`, Object.assign({}, e)));\n }\n }\n\n}\n\nfunction onTouchStart(e) {\n\n if (e.touches.length == 1) {\n startPosX = e.touches[0].pageX;\n startPosY = e.touches[0].pageY;\n startEvent = e;\n isMoving = true;\n didMoved = false;\n startTime = new Date().getTime();\n this.addEventListener('touchmove', onTouchMove, false);\n this.addEventListener('touchend', onTouchEnd, false);\n }\n}\n\nfunction init() {\n this.addEventListener && this.addEventListener('touchstart', onTouchStart, false);\n}\n\nfunction teardown() {\n this.removeEventListener('touchstart', onTouchStart);\n}\n\nclass SpotSwipe {\n constructor($) {\n this.version = '1.0.0';\n this.enabled = 'ontouchstart' in document.documentElement;\n this.preventDefault = false;\n this.moveThreshold = 75;\n this.timeThreshold = 200;\n this.$ = $;\n this._init();\n }\n\n _init() {\n var $ = this.$;\n $.event.special.swipe = { setup: init };\n $.event.special.tap = { setup: init };\n\n $.each(['left', 'up', 'down', 'right'], function () {\n $.event.special[`swipe${this}`] = { setup: function(){\n $(this).on('swipe', $.noop);\n } };\n });\n }\n}\n\n/****************************************************\n * As far as I can tell, both setupSpotSwipe and *\n * setupTouchHandler should be idempotent, *\n * because they directly replace functions & *\n * values, and do not add event handlers directly. *\n ****************************************************/\n\nTouch.setupSpotSwipe = function($) {\n $.spotSwipe = new SpotSwipe($);\n};\n\n/****************************************************\n * Method for adding pseudo drag events to elements *\n ***************************************************/\nTouch.setupTouchHandler = function($) {\n $.fn.addTouch = function(){\n this.each(function(i,el){\n $(el).bind('touchstart touchmove touchend touchcancel', function(event) {\n //we pass the original event object because the jQuery event\n //object is normalized to w3c specs and does not provide the TouchList\n handleTouch(event);\n });\n });\n\n var handleTouch = function(event){\n var touches = event.changedTouches,\n first = touches[0],\n eventTypes = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup'\n },\n type = eventTypes[event.type],\n simulatedEvent\n ;\n\n if('MouseEvent' in window && typeof window.MouseEvent === 'function') {\n simulatedEvent = new window.MouseEvent(type, {\n 'bubbles': true,\n 'cancelable': true,\n 'screenX': first.screenX,\n 'screenY': first.screenY,\n 'clientX': first.clientX,\n 'clientY': first.clientY\n });\n } else {\n simulatedEvent = document.createEvent('MouseEvent');\n simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0/*left*/, null);\n }\n first.target.dispatchEvent(simulatedEvent);\n };\n };\n};\n\nTouch.init = function ($) {\n\n if(typeof($.spotSwipe) === 'undefined') {\n Touch.setupSpotSwipe($);\n Touch.setupTouchHandler($);\n }\n};\n\nexport {Touch};\n","'use strict';\n\nimport $ from 'jquery';\nimport { onLoad } from './foundation.core.utils';\nimport { Motion } from './foundation.util.motion';\n\nconst MutationObserver = (function () {\n var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];\n for (var i=0; i < prefixes.length; i++) {\n if (`${prefixes[i]}MutationObserver` in window) {\n return window[`${prefixes[i]}MutationObserver`];\n }\n }\n return false;\n}());\n\nconst triggers = (el, type) => {\n el.data(type).split(' ').forEach(id => {\n $(`#${id}`)[ type === 'close' ? 'trigger' : 'triggerHandler'](`${type}.zf.trigger`, [el]);\n });\n};\n\nvar Triggers = {\n Listeners: {\n Basic: {},\n Global: {}\n },\n Initializers: {}\n}\n\nTriggers.Listeners.Basic = {\n openListener: function() {\n triggers($(this), 'open');\n },\n closeListener: function() {\n let id = $(this).data('close');\n if (id) {\n triggers($(this), 'close');\n }\n else {\n $(this).trigger('close.zf.trigger');\n }\n },\n toggleListener: function() {\n let id = $(this).data('toggle');\n if (id) {\n triggers($(this), 'toggle');\n } else {\n $(this).trigger('toggle.zf.trigger');\n }\n },\n closeableListener: function(e) {\n let animation = $(this).data('closable');\n\n // Only close the first closable element. See https://git.io/zf-7833\n e.stopPropagation();\n\n if(animation !== ''){\n Motion.animateOut($(this), animation, function() {\n $(this).trigger('closed.zf');\n });\n }else{\n $(this).fadeOut().trigger('closed.zf');\n }\n },\n toggleFocusListener: function() {\n let id = $(this).data('toggle-focus');\n $(`#${id}`).triggerHandler('toggle.zf.trigger', [$(this)]);\n }\n};\n\n// Elements with [data-open] will reveal a plugin that supports it when clicked.\nTriggers.Initializers.addOpenListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener);\n $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener);\n}\n\n// Elements with [data-close] will close a plugin that supports it when clicked.\n// If used without a value on [data-close], the event will bubble, allowing it to close a parent component.\nTriggers.Initializers.addCloseListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener);\n $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener);\n}\n\n// Elements with [data-toggle] will toggle a plugin that supports it when clicked.\nTriggers.Initializers.addToggleListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener);\n $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener);\n}\n\n// Elements with [data-closable] will respond to close.zf.trigger events.\nTriggers.Initializers.addCloseableListener = ($elem) => {\n $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener);\n $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener);\n}\n\n// Elements with [data-toggle-focus] will respond to coming in and out of focus\nTriggers.Initializers.addToggleFocusListener = ($elem) => {\n $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener);\n $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);\n}\n\n\n\n// More Global/complex listeners and triggers\nTriggers.Listeners.Global = {\n resizeListener: function($nodes) {\n if(!MutationObserver){//fallback for IE 9\n $nodes.each(function(){\n $(this).triggerHandler('resizeme.zf.trigger');\n });\n }\n //trigger all listening elements and signal a resize event\n $nodes.attr('data-events', \"resize\");\n },\n scrollListener: function($nodes) {\n if(!MutationObserver){//fallback for IE 9\n $nodes.each(function(){\n $(this).triggerHandler('scrollme.zf.trigger');\n });\n }\n //trigger all listening elements and signal a scroll event\n $nodes.attr('data-events', \"scroll\");\n },\n closeMeListener: function(e, pluginId){\n let plugin = e.namespace.split('.')[0];\n let plugins = $(`[data-${plugin}]`).not(`[data-yeti-box=\"${pluginId}\"]`);\n\n plugins.each(function(){\n let _this = $(this);\n _this.triggerHandler('close.zf.trigger', [_this]);\n });\n }\n}\n\n// Global, parses whole document.\nTriggers.Initializers.addClosemeListener = function(pluginName) {\n var yetiBoxes = $('[data-yeti-box]'),\n plugNames = ['dropdown', 'tooltip', 'reveal'];\n\n if(pluginName){\n if(typeof pluginName === 'string'){\n plugNames.push(pluginName);\n }else if(typeof pluginName === 'object' && typeof pluginName[0] === 'string'){\n plugNames = plugNames.concat(pluginName);\n }else{\n console.error('Plugin names must be strings');\n }\n }\n if(yetiBoxes.length){\n let listeners = plugNames.map((name) => {\n return `closeme.zf.${name}`;\n }).join(' ');\n\n $(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);\n }\n}\n\nfunction debounceGlobalListener(debounce, trigger, listener) {\n let timer, args = Array.prototype.slice.call(arguments, 3);\n $(window).off(trigger).on(trigger, function(e) {\n if (timer) { clearTimeout(timer); }\n timer = setTimeout(function(){\n listener.apply(null, args);\n }, debounce || 10);//default time to emit scroll event\n });\n}\n\nTriggers.Initializers.addResizeListener = function(debounce){\n let $nodes = $('[data-resize]');\n if($nodes.length){\n debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);\n }\n}\n\nTriggers.Initializers.addScrollListener = function(debounce){\n let $nodes = $('[data-scroll]');\n if($nodes.length){\n debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);\n }\n}\n\nTriggers.Initializers.addMutationEventsListener = function($elem) {\n if(!MutationObserver){ return false; }\n let $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]');\n\n //element callback\n var listeningElementsMutation = function (mutationRecordsList) {\n var $target = $(mutationRecordsList[0].target);\n\n //trigger the event handler for the element depending on type\n switch (mutationRecordsList[0].type) {\n case \"attributes\":\n if ($target.attr(\"data-events\") === \"scroll\" && mutationRecordsList[0].attributeName === \"data-events\") {\n $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);\n }\n if ($target.attr(\"data-events\") === \"resize\" && mutationRecordsList[0].attributeName === \"data-events\") {\n $target.triggerHandler('resizeme.zf.trigger', [$target]);\n }\n if (mutationRecordsList[0].attributeName === \"style\") {\n $target.closest(\"[data-mutate]\").attr(\"data-events\",\"mutate\");\n $target.closest(\"[data-mutate]\").triggerHandler('mutateme.zf.trigger', [$target.closest(\"[data-mutate]\")]);\n }\n break;\n\n case \"childList\":\n $target.closest(\"[data-mutate]\").attr(\"data-events\",\"mutate\");\n $target.closest(\"[data-mutate]\").triggerHandler('mutateme.zf.trigger', [$target.closest(\"[data-mutate]\")]);\n break;\n\n default:\n return false;\n //nothing\n }\n };\n\n if ($nodes.length) {\n //for each element that needs to listen for resizing, scrolling, or mutation add a single observer\n for (var i = 0; i <= $nodes.length - 1; i++) {\n var elementObserver = new MutationObserver(listeningElementsMutation);\n elementObserver.observe($nodes[i], { attributes: true, childList: true, characterData: false, subtree: true, attributeFilter: [\"data-events\", \"style\"] });\n }\n }\n}\n\nTriggers.Initializers.addSimpleListeners = function() {\n let $document = $(document);\n\n Triggers.Initializers.addOpenListener($document);\n Triggers.Initializers.addCloseListener($document);\n Triggers.Initializers.addToggleListener($document);\n Triggers.Initializers.addCloseableListener($document);\n Triggers.Initializers.addToggleFocusListener($document);\n\n}\n\nTriggers.Initializers.addGlobalListeners = function() {\n let $document = $(document);\n Triggers.Initializers.addMutationEventsListener($document);\n Triggers.Initializers.addResizeListener();\n Triggers.Initializers.addScrollListener();\n Triggers.Initializers.addClosemeListener();\n}\n\n\nTriggers.init = function ($, Foundation) {\n onLoad($(window), function () {\n if ($.triggersInitialized !== true) {\n Triggers.Initializers.addSimpleListeners();\n Triggers.Initializers.addGlobalListeners();\n $.triggersInitialized = true;\n }\n });\n\n if(Foundation) {\n Foundation.Triggers = Triggers;\n // Legacy included to be backwards compatible for now.\n Foundation.IHearYou = Triggers.Initializers.addGlobalListeners\n }\n}\n\nexport {Triggers};\n","'use strict';\n\nimport $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\n\n// Abstract class for providing lifecycle hooks. Expect plugins to define AT LEAST\n// {function} _setup (replaces previous constructor),\n// {function} _destroy (replaces previous destroy)\nclass Plugin {\n\n constructor(element, options) {\n this._setup(element, options);\n var pluginName = getPluginName(this);\n this.uuid = GetYoDigits(6, pluginName);\n\n if(!this.$element.attr(`data-${pluginName}`)){ this.$element.attr(`data-${pluginName}`, this.uuid); }\n if(!this.$element.data('zfPlugin')){ this.$element.data('zfPlugin', this); }\n /**\n * Fires when the plugin has initialized.\n * @event Plugin#init\n */\n this.$element.trigger(`init.zf.${pluginName}`);\n }\n\n destroy() {\n this._destroy();\n var pluginName = getPluginName(this);\n this.$element.removeAttr(`data-${pluginName}`).removeData('zfPlugin')\n /**\n * Fires when the plugin has been destroyed.\n * @event Plugin#destroyed\n */\n .trigger(`destroyed.zf.${pluginName}`);\n for(var prop in this){\n this[prop] = null;//clean up script to prep for garbage collection.\n }\n }\n}\n\n// Convert PascalCase to kebab-case\n// Thank you: http://stackoverflow.com/a/8955580\nfunction hyphenate(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nfunction getPluginName(obj) {\n return hyphenate(obj.className);\n}\n\nexport {Plugin};\n","'use strict';\n\nimport $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { GetYoDigits } from './foundation.core.utils';\n\n/**\n * Abide module.\n * @module foundation.abide\n */\n\nclass Abide extends Plugin {\n /**\n * Creates a new instance of Abide.\n * @class\n * @name Abide\n * @fires Abide#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options = {}) {\n this.$element = element;\n this.options = $.extend(true, {}, Abide.defaults, this.$element.data(), options);\n this.isEnabled = true;\n this.formnovalidate = null;\n\n this.className = 'Abide'; // ie9 back compat\n this._init();\n }\n\n /**\n * Initializes the Abide plugin and calls functions to get Abide functioning on load.\n * @private\n */\n _init() {\n this.$inputs = $.merge( // Consider as input to validate:\n this.$element.find('input').not('[type=\"submit\"]'), // * all input fields expect submit\n this.$element.find('textarea, select') // * all textareas and select fields\n );\n this.$submits = this.$element.find('[type=\"submit\"]');\n const $globalErrors = this.$element.find('[data-abide-error]');\n\n // Add a11y attributes to all fields\n if (this.options.a11yAttributes) {\n this.$inputs.each((i, input) => this.addA11yAttributes($(input)));\n $globalErrors.each((i, error) => this.addGlobalErrorA11yAttributes($(error)));\n }\n\n this._events();\n }\n\n /**\n * Initializes events for Abide.\n * @private\n */\n _events() {\n this.$element.off('.abide')\n .on('reset.zf.abide', () => {\n this.resetForm();\n })\n .on('submit.zf.abide', () => {\n return this.validateForm();\n });\n\n this.$submits\n .off('click.zf.abide keydown.zf.abide')\n .on('click.zf.abide keydown.zf.abide', (e) => {\n if (!e.key || (e.key === ' ' || e.key === 'Enter')) {\n e.preventDefault();\n this.formnovalidate = e.target.getAttribute('formnovalidate') !== null;\n this.$element.submit();\n }\n });\n\n if (this.options.validateOn === 'fieldChange') {\n this.$inputs\n .off('change.zf.abide')\n .on('change.zf.abide', (e) => {\n this.validateInput($(e.target));\n });\n }\n\n if (this.options.liveValidate) {\n this.$inputs\n .off('input.zf.abide')\n .on('input.zf.abide', (e) => {\n this.validateInput($(e.target));\n });\n }\n\n if (this.options.validateOnBlur) {\n this.$inputs\n .off('blur.zf.abide')\n .on('blur.zf.abide', (e) => {\n this.validateInput($(e.target));\n });\n }\n }\n\n /**\n * Calls necessary functions to update Abide upon DOM change\n * @private\n */\n _reflow() {\n this._init();\n }\n\n /**\n * Checks whether the submitted form should be validated or not, consodering formnovalidate and isEnabled\n * @returns {Boolean}\n * @private\n */\n _validationIsDisabled() {\n if (this.isEnabled === false) { // whole validation disabled\n return true;\n } else if (typeof this.formnovalidate === 'boolean') { // triggered by $submit\n return this.formnovalidate;\n }\n // triggered by Enter in non-submit input\n return this.$submits.length ? this.$submits[0].getAttribute('formnovalidate') !== null : false;\n }\n\n /**\n * Enables the whole validation\n */\n enableValidation() {\n this.isEnabled = true;\n }\n\n /**\n * Disables the whole validation\n */\n disableValidation() {\n this.isEnabled = false;\n }\n\n /**\n * Checks whether or not a form element has the required attribute and if it's checked or not\n * @param {Object} element - jQuery object to check for required attribute\n * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty\n */\n requiredCheck($el) {\n if (!$el.attr('required')) return true;\n\n var isGood = true;\n\n switch ($el[0].type) {\n case 'checkbox':\n isGood = $el[0].checked;\n break;\n\n case 'select':\n case 'select-one':\n case 'select-multiple':\n var opt = $el.find('option:selected');\n if (!opt.length || !opt.val()) isGood = false;\n break;\n\n default:\n if (!$el.val() || !$el.val().length) isGood = false;\n }\n\n return isGood;\n }\n\n /**\n * Get:\n * - Based on $el, the first element(s) corresponding to `formErrorSelector` in this order:\n * 1. The element's direct sibling('s).\n * 2. The element's parent's children.\n * - Element(s) with the attribute `[data-form-error-for]` set with the element's id.\n *\n * This allows for multiple form errors per input, though if none are found, no form errors will be shown.\n *\n * @param {Object} $el - jQuery object to use as reference to find the form error selector.\n * @param {String[]} [failedValidators] - List of failed validators.\n * @returns {Object} jQuery object with the selector.\n */\n findFormError($el, failedValidators) {\n var id = $el.length ? $el[0].id : '';\n var $error = $el.siblings(this.options.formErrorSelector);\n\n if (!$error.length) {\n $error = $el.parent().find(this.options.formErrorSelector);\n }\n\n if (id) {\n $error = $error.add(this.$element.find(`[data-form-error-for=\"${id}\"]`));\n }\n\n if (!!failedValidators) {\n $error = $error.not('[data-form-error-on]')\n\n failedValidators.forEach((v) => {\n $error = $error.add($el.siblings(`[data-form-error-on=\"${v}\"]`));\n $error = $error.add(this.$element.find(`[data-form-error-for=\"${id}\"][data-form-error-on=\"${v}\"]`));\n });\n }\n\n return $error;\n }\n\n /**\n * Get the first element in this order:\n * 2. The <label> with the attribute `[for=\"someInputId\"]`\n * 3. The `.closest()` <label>\n *\n * @param {Object} $el - jQuery object to check for required attribute\n * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty\n */\n findLabel($el) {\n var id = $el[0].id;\n var $label = this.$element.find(`label[for=\"${id}\"]`);\n\n if (!$label.length) {\n return $el.closest('label');\n }\n\n return $label;\n }\n\n /**\n * Get the set of labels associated with a set of radio els in this order\n * 2. The <label> with the attribute `[for=\"someInputId\"]`\n * 3. The `.closest()` <label>\n *\n * @param {Object} $el - jQuery object to check for required attribute\n * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty\n */\n findRadioLabels($els) {\n var labels = $els.map((i, el) => {\n var id = el.id;\n var $label = this.$element.find(`label[for=\"${id}\"]`);\n\n if (!$label.length) {\n $label = $(el).closest('label');\n }\n return $label[0];\n });\n\n return $(labels);\n }\n\n /**\n * Get the set of labels associated with a set of checkbox els in this order\n * 2. The <label> with the attribute `[for=\"someInputId\"]`\n * 3. The `.closest()` <label>\n *\n * @param {Object} $el - jQuery object to check for required attribute\n * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty\n */\n findCheckboxLabels($els) {\n var labels = $els.map((i, el) => {\n var id = el.id;\n var $label = this.$element.find(`label[for=\"${id}\"]`);\n\n if (!$label.length) {\n $label = $(el).closest('label');\n }\n return $label[0];\n });\n\n return $(labels);\n }\n\n /**\n * Adds the CSS error class as specified by the Abide settings to the label, input, and the form\n * @param {Object} $el - jQuery object to add the class to\n * @param {String[]} [failedValidators] - List of failed validators.\n */\n addErrorClasses($el, failedValidators) {\n var $label = this.findLabel($el);\n var $formError = this.findFormError($el, failedValidators);\n\n if ($label.length) {\n $label.addClass(this.options.labelErrorClass);\n }\n\n if ($formError.length) {\n $formError.addClass(this.options.formErrorClass);\n }\n\n $el.addClass(this.options.inputErrorClass).attr({\n 'data-invalid': '',\n 'aria-invalid': true\n });\n }\n\n /**\n * Adds [for] and [role=alert] attributes to all form error targetting $el,\n * and [aria-describedby] attribute to $el toward the first form error.\n * @param {Object} $el - jQuery object\n */\n addA11yAttributes($el) {\n let $errors = this.findFormError($el);\n let $labels = $errors.filter('label');\n let $error = $errors.first();\n if (!$errors.length) return;\n\n // Set [aria-describedby] on the input toward the first form error if it is not set\n if (typeof $el.attr('aria-describedby') === 'undefined') {\n // Get the first error ID or create one\n let errorId = $error.attr('id');\n if (typeof errorId === 'undefined') {\n errorId = GetYoDigits(6, 'abide-error');\n $error.attr('id', errorId);\n }\n\n $el.attr('aria-describedby', errorId);\n }\n\n if ($labels.filter('[for]').length < $labels.length) {\n // Get the input ID or create one\n let elemId = $el.attr('id');\n if (typeof elemId === 'undefined') {\n elemId = GetYoDigits(6, 'abide-input');\n $el.attr('id', elemId);\n }\n\n // For each label targeting $el, set [for] if it is not set.\n $labels.each((i, label) => {\n const $label = $(label);\n if (typeof $label.attr('for') === 'undefined')\n $label.attr('for', elemId);\n });\n }\n\n // For each error targeting $el, set [role=alert] if it is not set.\n $errors.each((i, label) => {\n const $label = $(label);\n if (typeof $label.attr('role') === 'undefined')\n $label.attr('role', 'alert');\n }).end();\n }\n\n /**\n * Adds [aria-live] attribute to the given global form error $el.\n * @param {Object} $el - jQuery object to add the attribute to\n */\n addGlobalErrorA11yAttributes($el) {\n if (typeof $el.attr('aria-live') === 'undefined')\n $el.attr('aria-live', this.options.a11yErrorLevel);\n }\n\n /**\n * Remove CSS error classes etc from an entire radio button group\n * @param {String} groupName - A string that specifies the name of a radio button group\n *\n */\n removeRadioErrorClasses(groupName) {\n var $els = this.$element.find(`:radio[name=\"${groupName}\"]`);\n var $labels = this.findRadioLabels($els);\n var $formErrors = this.findFormError($els);\n\n if ($labels.length) {\n $labels.removeClass(this.options.labelErrorClass);\n }\n\n if ($formErrors.length) {\n $formErrors.removeClass(this.options.formErrorClass);\n }\n\n $els.removeClass(this.options.inputErrorClass).attr({\n 'data-invalid': null,\n 'aria-invalid': null\n });\n\n }\n\n /**\n * Remove CSS error classes etc from an entire checkbox group\n * @param {String} groupName - A string that specifies the name of a checkbox group\n *\n */\n removeCheckboxErrorClasses(groupName) {\n var $els = this.$element.find(`:checkbox[name=\"${groupName}\"]`);\n var $labels = this.findCheckboxLabels($els);\n var $formErrors = this.findFormError($els);\n\n if ($labels.length) {\n $labels.removeClass(this.options.labelErrorClass);\n }\n\n if ($formErrors.length) {\n $formErrors.removeClass(this.options.formErrorClass);\n }\n\n $els.removeClass(this.options.inputErrorClass).attr({\n 'data-invalid': null,\n 'aria-invalid': null\n });\n\n }\n\n /**\n * Removes CSS error class as specified by the Abide settings from the label, input, and the form\n * @param {Object} $el - jQuery object to remove the class from\n */\n removeErrorClasses($el) {\n // radios need to clear all of the els\n if ($el[0].type == 'radio') {\n return this.removeRadioErrorClasses($el.attr('name'));\n }\n // checkboxes need to clear all of the els\n else if ($el[0].type == 'checkbox') {\n return this.removeCheckboxErrorClasses($el.attr('name'));\n }\n\n var $label = this.findLabel($el);\n var $formError = this.findFormError($el);\n\n if ($label.length) {\n $label.removeClass(this.options.labelErrorClass);\n }\n\n if ($formError.length) {\n $formError.removeClass(this.options.formErrorClass);\n }\n\n $el.removeClass(this.options.inputErrorClass).attr({\n 'data-invalid': null,\n 'aria-invalid': null\n });\n }\n\n /**\n * Goes through a form to find inputs and proceeds to validate them in ways specific to their type.\n * Ignores inputs with data-abide-ignore, type=\"hidden\" or disabled attributes set\n * @fires Abide#invalid\n * @fires Abide#valid\n * @param {Object} element - jQuery object to validate, should be an HTML input\n * @returns {Boolean} goodToGo - If the input is valid or not.\n */\n validateInput($el) {\n var clearRequire = this.requiredCheck($el),\n validator = $el.attr('data-validator'),\n failedValidators = [],\n manageErrorClasses = true;\n\n // skip validation if disabled\n if (this._validationIsDisabled()) {\n return true;\n }\n\n // don't validate ignored inputs or hidden inputs or disabled inputs\n if ($el.is('[data-abide-ignore]') || $el.is('[type=\"hidden\"]') || $el.is('[disabled]')) {\n return true;\n }\n\n switch ($el[0].type) {\n case 'radio':\n this.validateRadio($el.attr('name')) || failedValidators.push('required');\n break;\n\n case 'checkbox':\n this.validateCheckbox($el.attr('name')) || failedValidators.push('required');\n // validateCheckbox() adds/removes error classes\n manageErrorClasses = false;\n break;\n\n case 'select':\n case 'select-one':\n case 'select-multiple':\n clearRequire || failedValidators.push('required');\n break;\n\n default:\n clearRequire || failedValidators.push('required');\n this.validateText($el) || failedValidators.push('pattern');\n }\n\n if (validator) {\n const required = $el.attr('required') ? true : false;\n\n validator.split(' ').forEach((v) => {\n this.options.validators[v]($el, required, $el.parent()) || failedValidators.push(v);\n });\n }\n\n if ($el.attr('data-equalto')) {\n this.options.validators.equalTo($el) || failedValidators.push('equalTo');\n }\n\n var goodToGo = failedValidators.length === 0;\n var message = (goodToGo ? 'valid' : 'invalid') + '.zf.abide';\n\n if (goodToGo) {\n // Re-validate inputs that depend on this one with equalto\n const dependentElements = this.$element.find(`[data-equalto=\"${$el.attr('id')}\"]`);\n if (dependentElements.length) {\n let _this = this;\n dependentElements.each(function() {\n if ($(this).val()) {\n _this.validateInput($(this));\n }\n });\n }\n }\n\n if (manageErrorClasses) {\n this.removeErrorClasses($el);\n\n if (!goodToGo) {\n this.addErrorClasses($el, failedValidators);\n }\n }\n\n /**\n * Fires when the input is done checking for validation. Event trigger is either `valid.zf.abide` or `invalid.zf.abide`\n * Trigger includes the DOM element of the input.\n * @event Abide#valid\n * @event Abide#invalid\n */\n $el.trigger(message, [$el]);\n\n return goodToGo;\n }\n\n /**\n * Goes through a form and if there are any invalid inputs, it will display the form error element\n * @returns {Boolean} noError - true if no errors were detected...\n * @fires Abide#formvalid\n * @fires Abide#forminvalid\n */\n validateForm() {\n var acc = [];\n var _this = this;\n var checkboxGroupName;\n\n // Remember first form submission to prevent specific checkbox validation (more than one required) until form got initially submitted\n if (!this.initialized) {\n this.initialized = true;\n }\n\n // skip validation if disabled\n if (this._validationIsDisabled()) {\n this.formnovalidate = null;\n return true;\n }\n\n this.$inputs.each(function() {\n\n // Only use one checkbox per group since validateCheckbox() iterates over all associated checkboxes\n if ($(this)[0].type === 'checkbox') {\n if ($(this).attr('name') === checkboxGroupName) return true;\n checkboxGroupName = $(this).attr('name');\n }\n\n acc.push(_this.validateInput($(this)));\n });\n\n var noError = acc.indexOf(false) === -1;\n\n this.$element.find('[data-abide-error]').each((i, elem) => {\n const $elem = $(elem);\n // Ensure a11y attributes are set\n if (this.options.a11yAttributes) this.addGlobalErrorA11yAttributes($elem);\n // Show or hide the error\n $elem.css('display', (noError ? 'none' : 'block'));\n });\n\n /**\n * Fires when the form is finished validating. Event trigger is either `formvalid.zf.abide` or `forminvalid.zf.abide`.\n * Trigger includes the element of the form.\n * @event Abide#formvalid\n * @event Abide#forminvalid\n */\n this.$element.trigger((noError ? 'formvalid' : 'forminvalid') + '.zf.abide', [this.$element]);\n\n return noError;\n }\n\n /**\n * Determines whether or a not a text input is valid based on the pattern specified in the attribute. If no matching pattern is found, returns true.\n * @param {Object} $el - jQuery object to validate, should be a text input HTML element\n * @param {String} pattern - string value of one of the RegEx patterns in Abide.options.patterns\n * @returns {Boolean} Boolean value depends on whether or not the input value matches the pattern specified\n */\n validateText($el, pattern) {\n // A pattern can be passed to this function, or it will be infered from the input's \"pattern\" attribute, or it's \"type\" attribute\n pattern = (pattern || $el.attr('data-pattern') || $el.attr('pattern') || $el.attr('type'));\n var inputText = $el.val();\n var valid = true;\n\n if (inputText.length) {\n // If the pattern attribute on the element is in Abide's list of patterns, then test that regexp\n if (this.options.patterns.hasOwnProperty(pattern)) {\n valid = this.options.patterns[pattern].test(inputText);\n }\n // If the pattern name isn't also the type attribute of the field, then test it as a regexp\n else if (pattern !== $el.attr('type')) {\n valid = new RegExp(pattern).test(inputText);\n }\n }\n\n return valid;\n }\n\n /**\n * Determines whether or a not a radio input is valid based on whether or not it is required and selected. Although the function targets a single `<input>`, it validates by checking the `required` and `checked` properties of all radio buttons in its group.\n * @param {String} groupName - A string that specifies the name of a radio button group\n * @returns {Boolean} Boolean value depends on whether or not at least one radio input has been selected (if it's required)\n */\n validateRadio(groupName) {\n // If at least one radio in the group has the `required` attribute, the group is considered required\n // Per W3C spec, all radio buttons in a group should have `required`, but we're being nice\n var $group = this.$element.find(`:radio[name=\"${groupName}\"]`);\n var valid = false, required = false;\n\n // For the group to be required, at least one radio needs to be required\n $group.each((i, e) => {\n if ($(e).attr('required')) {\n required = true;\n }\n });\n if (!required) valid=true;\n\n if (!valid) {\n // For the group to be valid, at least one radio needs to be checked\n $group.each((i, e) => {\n if ($(e).prop('checked')) {\n valid = true;\n }\n });\n }\n\n return valid;\n }\n\n /**\n * Determines whether or a not a checkbox input is valid based on whether or not it is required and checked. Although the function targets a single `<input>`, it validates by checking the `required` and `checked` properties of all checkboxes in its group.\n * @param {String} groupName - A string that specifies the name of a checkbox group\n * @returns {Boolean} Boolean value depends on whether or not at least one checkbox input has been checked (if it's required)\n */\n validateCheckbox(groupName) {\n // If at least one checkbox in the group has the `required` attribute, the group is considered required\n // Per W3C spec, all checkboxes in a group should have `required`, but we're being nice\n var $group = this.$element.find(`:checkbox[name=\"${groupName}\"]`);\n var valid = false, required = false, minRequired = 1, checked = 0;\n\n // For the group to be required, at least one checkbox needs to be required\n $group.each((i, e) => {\n if ($(e).attr('required')) {\n required = true;\n }\n });\n if (!required) valid=true;\n\n if (!valid) {\n // Count checked checkboxes within the group\n // Use data-min-required if available (default: 1)\n $group.each((i, e) => {\n if ($(e).prop('checked')) {\n checked++;\n }\n if (typeof $(e).attr('data-min-required') !== 'undefined') {\n minRequired = parseInt($(e).attr('data-min-required'));\n }\n });\n\n // For the group to be valid, the minRequired amount of checkboxes have to be checked\n if (checked >= minRequired) {\n valid = true;\n }\n }\n\n // Skip validation if more than 1 checkbox have to be checked AND if the form hasn't got submitted yet (otherwise it will already show an error during the first fill in)\n if (this.initialized !== true && minRequired > 1) {\n return true;\n }\n\n // Refresh error class for all input\n $group.each((i, e) => {\n if (!valid) {\n this.addErrorClasses($(e), ['required']);\n } else {\n this.removeErrorClasses($(e));\n }\n });\n\n return valid;\n }\n\n /**\n * Determines if a selected input passes a custom validation function. Multiple validations can be used, if passed to the element with `data-validator=\"foo bar baz\"` in a space separated listed.\n * @param {Object} $el - jQuery input element.\n * @param {String} validators - a string of function names matching functions in the Abide.options.validators object.\n * @param {Boolean} required - self explanatory?\n * @returns {Boolean} - true if validations passed.\n */\n matchValidation($el, validators, required) {\n required = required ? true : false;\n\n var clear = validators.split(' ').map((v) => {\n return this.options.validators[v]($el, required, $el.parent());\n });\n return clear.indexOf(false) === -1;\n }\n\n /**\n * Resets form inputs and styles\n * @fires Abide#formreset\n */\n resetForm() {\n var $form = this.$element,\n opts = this.options;\n\n $(`.${opts.labelErrorClass}`, $form).not('small').removeClass(opts.labelErrorClass);\n $(`.${opts.inputErrorClass}`, $form).not('small').removeClass(opts.inputErrorClass);\n $(`${opts.formErrorSelector}.${opts.formErrorClass}`).removeClass(opts.formErrorClass);\n $form.find('[data-abide-error]').css('display', 'none');\n $(':input', $form).not(':button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]').val('').attr({\n 'data-invalid': null,\n 'aria-invalid': null\n });\n $(':input:radio', $form).not('[data-abide-ignore]').prop('checked',false).attr({\n 'data-invalid': null,\n 'aria-invalid': null\n });\n $(':input:checkbox', $form).not('[data-abide-ignore]').prop('checked',false).attr({\n 'data-invalid': null,\n 'aria-invalid': null\n });\n /**\n * Fires when the form has been reset.\n * @event Abide#formreset\n */\n $form.trigger('formreset.zf.abide', [$form]);\n }\n\n /**\n * Destroys an instance of Abide.\n * Removes error styles and classes from elements, without resetting their values.\n */\n _destroy() {\n var _this = this;\n this.$element\n .off('.abide')\n .find('[data-abide-error]')\n .css('display', 'none');\n\n this.$inputs\n .off('.abide')\n .each(function() {\n _this.removeErrorClasses($(this));\n });\n\n this.$submits\n .off('.abide');\n }\n}\n\n/**\n * Default settings for plugin\n */\nAbide.defaults = {\n /**\n * The default event to validate inputs. Checkboxes and radios validate immediately.\n * Remove or change this value for manual validation.\n * @option\n * @type {?string}\n * @default 'fieldChange'\n */\n validateOn: 'fieldChange',\n\n /**\n * Class to be applied to input labels on failed validation.\n * @option\n * @type {string}\n * @default 'is-invalid-label'\n */\n labelErrorClass: 'is-invalid-label',\n\n /**\n * Class to be applied to inputs on failed validation.\n * @option\n * @type {string}\n * @default 'is-invalid-input'\n */\n inputErrorClass: 'is-invalid-input',\n\n /**\n * Class selector to use to target Form Errors for show/hide.\n * @option\n * @type {string}\n * @default '.form-error'\n */\n formErrorSelector: '.form-error',\n\n /**\n * Class added to Form Errors on failed validation.\n * @option\n * @type {string}\n * @default 'is-visible'\n */\n formErrorClass: 'is-visible',\n\n /**\n * If true, automatically insert when possible:\n * - `[aria-describedby]` on fields\n * - `[role=alert]` on form errors and `[for]` on form error labels\n * - `[aria-live]` on global errors `[data-abide-error]` (see option `a11yErrorLevel`).\n * @option\n * @type {boolean}\n * @default true\n */\n a11yAttributes: true,\n\n /**\n * [aria-live] attribute value to be applied on global errors `[data-abide-error]`.\n * Options are: 'assertive', 'polite' and 'off'/null\n * @option\n * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions\n * @type {string}\n * @default 'assertive'\n */\n a11yErrorLevel: 'assertive',\n\n /**\n * Set to true to validate text inputs on any value change.\n * @option\n * @type {boolean}\n * @default false\n */\n liveValidate: false,\n\n /**\n * Set to true to validate inputs on blur.\n * @option\n * @type {boolean}\n * @default false\n */\n validateOnBlur: false,\n\n patterns: {\n alpha : /^[a-zA-Z]+$/,\n alpha_numeric : /^[a-zA-Z0-9]+$/,\n integer : /^[-+]?\\d+$/,\n number : /^[-+]?\\d*(?:[\\.\\,]\\d+)?$/,\n\n // amex, visa, diners\n card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(?:222[1-9]|2[3-6][0-9]{2}|27[0-1][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$/,\n cvv : /^([0-9]){3,4}$/,\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address\n email : /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,\n\n // From CommonRegexJS (@talyssonoc)\n // https://github.com/talyssonoc/CommonRegexJS/blob/e2901b9f57222bc14069dc8f0598d5f412555411/lib/commonregex.js#L76\n // For more restrictive URL Regexs, see https://mathiasbynens.be/demo/url-regex.\n url: /^((?:(https?|ftps?|file|ssh|sftp):\\/\\/|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}\\/)(?:[^\\s()<>]+|\\((?:[^\\s()<>]+|(?:\\([^\\s()<>]+\\)))*\\))+(?:\\((?:[^\\s()<>]+|(?:\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\\'\".,<>?\\xab\\xbb\\u201c\\u201d\\u2018\\u2019]))$/,\n\n // abc.de\n domain : /^([a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,8}$/,\n\n datetime : /^([0-2][0-9]{3})\\-([0-1][0-9])\\-([0-3][0-9])T([0-5][0-9])\\:([0-5][0-9])\\:([0-5][0-9])(Z|([\\-\\+]([0-1][0-9])\\:00))$/,\n // YYYY-MM-DD\n date : /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,\n // HH:MM:SS\n time : /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,\n dateISO : /^\\d{4}[\\/\\-]\\d{1,2}[\\/\\-]\\d{1,2}$/,\n // MM/DD/YYYY\n month_day_year : /^(0[1-9]|1[012])[- \\/.](0[1-9]|[12][0-9]|3[01])[- \\/.]\\d{4}$/,\n // DD/MM/YYYY\n day_month_year : /^(0[1-9]|[12][0-9]|3[01])[- \\/.](0[1-9]|1[012])[- \\/.]\\d{4}$/,\n\n // #FFF or #FFFFFF\n color : /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/,\n\n // Domain || URL\n website: {\n test: (text) => {\n return Abide.defaults.patterns['domain'].test(text) || Abide.defaults.patterns['url'].test(text);\n }\n }\n },\n\n /**\n * Optional validation functions to be used. `equalTo` being the only default included function.\n * Functions should return only a boolean if the input is valid or not. Functions are given the following arguments:\n * el : The jQuery element to validate.\n * required : Boolean value of the required attribute be present or not.\n * parent : The direct parent of the input.\n * @option\n */\n validators: {\n equalTo: function (el, required, parent) {\n return $(`#${el.attr('data-equalto')}`).val() === el.val();\n }\n }\n}\n\nexport { Abide };\n","'use strict';\n\nimport $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\n\n/**\n * Accordion module.\n * @module foundation.accordion\n * @requires foundation.util.keyboard\n */\n\nclass Accordion extends Plugin {\n /**\n * Creates a new instance of an accordion.\n * @class\n * @name Accordion\n * @fires Accordion#init\n * @param {jQuery} element - jQuery object to make into an accordion.\n * @param {Object} options - a plain object with settings to override the default options.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Accordion.defaults, this.$element.data(), options);\n\n this.className = 'Accordion'; // ie9 back compat\n this._init();\n\n Keyboard.register('Accordion', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ARROW_DOWN': 'next',\n 'ARROW_UP': 'previous'\n });\n }\n\n /**\n * Initializes the accordion by animating the preset active pane(s).\n * @private\n */\n _init() {\n this._isInitializing = true;\n\n this.$element.attr('role', 'tablist');\n this.$tabs = this.$element.children('[data-accordion-item]');\n\n this.$tabs.attr({'role': 'presentation'});\n\n this.$tabs.each(function(idx, el) {\n var $el = $(el),\n $content = $el.children('[data-tab-content]'),\n id = $content[0].id || GetYoDigits(6, 'accordion'),\n linkId = (el.id) ? `${el.id}-label` : `${id}-label`;\n\n $el.find('a:first').attr({\n 'aria-controls': id,\n 'role': 'tab',\n 'id': linkId,\n 'aria-expanded': false,\n 'aria-selected': false\n });\n\n $content.attr({'role': 'tabpanel', 'aria-labelledby': linkId, 'aria-hidden': true, 'id': id});\n });\n\n var $initActive = this.$element.find('.is-active').children('[data-tab-content]');\n if ($initActive.length) {\n // Save up the initial hash to return to it later when going back in history\n this._initialAnchor = $initActive.prev('a').attr('href');\n this._openSingleTab($initActive);\n }\n\n this._checkDeepLink = () => {\n var anchor = window.location.hash;\n\n if (!anchor.length) {\n // If we are still initializing and there is no anchor, then there is nothing to do\n if (this._isInitializing) return;\n // Otherwise, move to the initial anchor\n if (this._initialAnchor) anchor = this._initialAnchor;\n }\n\n var $anchor = anchor && $(anchor);\n var $link = anchor && this.$element.find(`[href$=\"${anchor}\"]`);\n // Whether the anchor element that has been found is part of this element\n var isOwnAnchor = !!($anchor.length && $link.length);\n\n if (isOwnAnchor) {\n // If there is an anchor for the hash, open it (if not already active)\n if ($anchor && $link && $link.length) {\n if (!$link.parent('[data-accordion-item]').hasClass('is-active')) {\n this._openSingleTab($anchor);\n }\n }\n // Otherwise, close everything\n else {\n this._closeAllTabs();\n }\n\n // Roll up a little to show the titles\n if (this.options.deepLinkSmudge) {\n onLoad($(window), () => {\n var offset = this.$element.offset();\n $('html, body').animate({ scrollTop: offset.top - this.options.deepLinkSmudgeOffset }, this.options.deepLinkSmudgeDelay);\n });\n }\n\n /**\n * Fires when the plugin has deeplinked at pageload\n * @event Accordion#deeplink\n */\n this.$element.trigger('deeplink.zf.accordion', [$link, $anchor]);\n }\n }\n\n //use browser to open a tab, if it exists in this tabset\n if (this.options.deepLink) {\n this._checkDeepLink();\n }\n\n this._events();\n\n this._isInitializing = false;\n }\n\n /**\n * Adds event handlers for items within the accordion.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$tabs.each(function() {\n var $elem = $(this);\n var $tabContent = $elem.children('[data-tab-content]');\n if ($tabContent.length) {\n $elem.children('a').off('click.zf.accordion keydown.zf.accordion')\n .on('click.zf.accordion', function(e) {\n e.preventDefault();\n _this.toggle($tabContent);\n }).on('keydown.zf.accordion', function(e) {\n Keyboard.handleKey(e, 'Accordion', {\n toggle: function() {\n _this.toggle($tabContent);\n },\n next: function() {\n var $a = $elem.next().find('a').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion')\n }\n },\n previous: function() {\n var $a = $elem.prev().find('a').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion')\n }\n },\n handled: function() {\n e.preventDefault();\n }\n });\n });\n }\n });\n if (this.options.deepLink) {\n $(window).on('hashchange', this._checkDeepLink);\n }\n }\n\n /**\n * Toggles the selected content pane's open/close state.\n * @param {jQuery} $target - jQuery object of the pane to toggle (`.accordion-content`).\n * @function\n */\n toggle($target) {\n if ($target.closest('[data-accordion]').is('[disabled]')) {\n console.info('Cannot toggle an accordion that is disabled.');\n return;\n }\n if ($target.parent().hasClass('is-active')) {\n this.up($target);\n } else {\n this.down($target);\n }\n //either replace or update browser history\n if (this.options.deepLink) {\n var anchor = $target.prev('a').attr('href');\n\n if (this.options.updateHistory) {\n history.pushState({}, '', anchor);\n } else {\n history.replaceState({}, '', anchor);\n }\n }\n }\n\n /**\n * Opens the accordion tab defined by `$target`.\n * @param {jQuery} $target - Accordion pane to open (`.accordion-content`).\n * @fires Accordion#down\n * @function\n */\n down($target) {\n if ($target.closest('[data-accordion]').is('[disabled]')) {\n console.info('Cannot call down on an accordion that is disabled.');\n return;\n }\n\n if (this.options.multiExpand)\n this._openTab($target);\n else\n this._openSingleTab($target);\n }\n\n /**\n * Closes the tab defined by `$target`.\n * It may be ignored if the Accordion options don't allow it.\n *\n * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).\n * @fires Accordion#up\n * @function\n */\n up($target) {\n if (this.$element.is('[disabled]')) {\n console.info('Cannot call up on an accordion that is disabled.');\n return;\n }\n\n // Don't close the item if it is already closed\n const $targetItem = $target.parent();\n if (!$targetItem.hasClass('is-active')) return;\n\n // Don't close the item if there is no other active item (unless with `allowAllClosed`)\n const $othersItems = $targetItem.siblings();\n if (!this.options.allowAllClosed && !$othersItems.hasClass('is-active')) return;\n\n this._closeTab($target);\n }\n\n /**\n * Make the tab defined by `$target` the only opened tab, closing all others tabs.\n * @param {jQuery} $target - Accordion tab to open (`.accordion-content`).\n * @function\n * @private\n */\n _openSingleTab($target) {\n // Close all the others active tabs.\n const $activeContents = this.$element.children('.is-active').children('[data-tab-content]');\n if ($activeContents.length) {\n this._closeTab($activeContents.not($target));\n }\n\n // Then open the target.\n this._openTab($target);\n }\n\n /**\n * Opens the tab defined by `$target`.\n * @param {jQuery} $target - Accordion tab to open (`.accordion-content`).\n * @fires Accordion#down\n * @function\n * @private\n */\n _openTab($target) {\n const $targetItem = $target.parent();\n const targetContentId = $target.attr('aria-labelledby');\n\n $target.attr('aria-hidden', false);\n $targetItem.addClass('is-active');\n\n $(`#${targetContentId}`).attr({\n 'aria-expanded': true,\n 'aria-selected': true\n });\n\n $target.finish().slideDown(this.options.slideSpeed, () => {\n /**\n * Fires when the tab is done opening.\n * @event Accordion#down\n */\n this.$element.trigger('down.zf.accordion', [$target]);\n });\n }\n\n /**\n * Closes the tab defined by `$target`.\n * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).\n * @fires Accordion#up\n * @function\n * @private\n */\n _closeTab($target) {\n const $targetItem = $target.parent();\n const targetContentId = $target.attr('aria-labelledby');\n\n $target.attr('aria-hidden', true)\n $targetItem.removeClass('is-active');\n\n $(`#${targetContentId}`).attr({\n 'aria-expanded': false,\n 'aria-selected': false\n });\n\n $target.finish().slideUp(this.options.slideSpeed, () => {\n /**\n * Fires when the tab is done collapsing up.\n * @event Accordion#up\n */\n this.$element.trigger('up.zf.accordion', [$target]);\n });\n }\n\n /**\n * Closes all active tabs\n * @fires Accordion#up\n * @function\n * @private\n */\n _closeAllTabs() {\n var $activeTabs = this.$element.children('.is-active').children('[data-tab-content]');\n if ($activeTabs.length) {\n this._closeTab($activeTabs);\n }\n }\n\n /**\n * Destroys an instance of an accordion.\n * @fires Accordion#destroyed\n * @function\n */\n _destroy() {\n this.$element.find('[data-tab-content]').stop(true).slideUp(0).css('display', '');\n this.$element.find('a').off('.zf.accordion');\n if (this.options.deepLink) {\n $(window).off('hashchange', this._checkDeepLink);\n }\n\n }\n}\n\nAccordion.defaults = {\n /**\n * Amount of time to animate the opening of an accordion pane.\n * @option\n * @type {number}\n * @default 250\n */\n slideSpeed: 250,\n /**\n * Allow the accordion to have multiple open panes.\n * @option\n * @type {boolean}\n * @default false\n */\n multiExpand: false,\n /**\n * Allow the accordion to close all panes.\n * @option\n * @type {boolean}\n * @default false\n */\n allowAllClosed: false,\n /**\n * Link the location hash to the open pane.\n * Set the location hash when the opened pane changes, and open and scroll to the corresponding pane when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n /**\n * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the accordion panel is visible\n * @option\n * @type {boolean}\n * @default false\n */\n deepLinkSmudge: false,\n /**\n * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment\n * @option\n * @type {number}\n * @default 300\n */\n deepLinkSmudgeDelay: 300,\n /**\n * If `deepLinkSmudge` is enabled, the offset for scrollToTtop to prevent overlap by a sticky element at the top of the page\n * @option\n * @type {number}\n * @default 0\n */\n deepLinkSmudgeOffset: 0,\n /**\n * If `deepLink` is enabled, update the browser history with the open accordion\n * @option\n * @type {boolean}\n * @default false\n */\n updateHistory: false\n};\n\nexport { Accordion };\n","'use strict';\n\n\nimport $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * AccordionMenu module.\n * @module foundation.accordionMenu\n * @requires foundation.util.keyboard\n * @requires foundation.util.nest\n */\n\nclass AccordionMenu extends Plugin {\n /**\n * Creates a new instance of an accordion menu.\n * @class\n * @name AccordionMenu\n * @fires AccordionMenu#init\n * @param {jQuery} element - jQuery object to make into an accordion menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, AccordionMenu.defaults, this.$element.data(), options);\n this.className = 'AccordionMenu'; // ie9 back compat\n\n this._init();\n\n Keyboard.register('AccordionMenu', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ARROW_RIGHT': 'open',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'close',\n 'ESCAPE': 'closeAll'\n });\n }\n\n\n\n /**\n * Initializes the accordion menu by hiding all nested menus.\n * @private\n */\n _init() {\n Nest.Feather(this.$element, 'accordion');\n\n var _this = this;\n\n this.$element.find('[data-submenu]').not('.is-active').slideUp(0);//.find('a').css('padding-left', '1rem');\n this.$element.attr({\n 'role': 'tree',\n 'aria-multiselectable': this.options.multiOpen\n });\n\n this.$menuLinks = this.$element.find('.is-accordion-submenu-parent');\n this.$menuLinks.each(function() {\n var linkId = this.id || GetYoDigits(6, 'acc-menu-link'),\n $elem = $(this),\n $sub = $elem.children('[data-submenu]'),\n subId = $sub[0].id || GetYoDigits(6, 'acc-menu'),\n isActive = $sub.hasClass('is-active');\n\n if (_this.options.parentLink) {\n let $anchor = $elem.children('a');\n $anchor.clone().prependTo($sub).wrap('<li data-is-parent-link class=\"is-submenu-parent-item is-submenu-item is-accordion-submenu-item\"></li>');\n }\n\n if (_this.options.submenuToggle) {\n $elem.addClass('has-submenu-toggle');\n $elem.children('a').after('<button id=\"' + linkId + '\" class=\"submenu-toggle\" aria-controls=\"' + subId + '\" aria-expanded=\"' + isActive + '\" title=\"' + _this.options.submenuToggleText + '\"><span class=\"submenu-toggle-text\">' + _this.options.submenuToggleText + '</span></button>');\n } else {\n $elem.attr({\n 'aria-controls': subId,\n 'aria-expanded': isActive,\n 'id': linkId\n });\n }\n $sub.attr({\n 'aria-labelledby': linkId,\n 'aria-hidden': !isActive,\n 'role': 'group',\n 'id': subId\n });\n });\n this.$element.find('li').attr({\n 'role': 'treeitem'\n });\n var initPanes = this.$element.find('.is-active');\n if (initPanes.length) {\n initPanes.each(function() {\n _this.down($(this));\n });\n }\n this._events();\n }\n\n /**\n * Adds event handlers for items within the menu.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$element.find('li').each(function() {\n var $submenu = $(this).children('[data-submenu]');\n\n if ($submenu.length) {\n if (_this.options.submenuToggle) {\n $(this).children('.submenu-toggle').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function(e) {\n _this.toggle($submenu);\n });\n } else {\n $(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function(e) {\n e.preventDefault();\n _this.toggle($submenu);\n });\n }\n }\n }).on('keydown.zf.accordionMenu', function(e) {\n var $element = $(this),\n $elements = $element.parent('ul').children('li'),\n $prevElement,\n $nextElement,\n $target = $element.children('[data-submenu]');\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(Math.max(0, i-1)).find('a').first();\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1)).find('a').first();\n\n if ($(this).children('[data-submenu]:visible').length) { // has open sub menu\n $nextElement = $element.find('li:first-child').find('a').first();\n }\n if ($(this).is(':first-child')) { // is first element of sub menu\n $prevElement = $element.parents('li').first().find('a').first();\n } else if ($prevElement.parents('li').first().children('[data-submenu]:visible').length) { // if previous element has open sub menu\n $prevElement = $prevElement.parents('li').find('li:last-child').find('a').first();\n }\n if ($(this).is(':last-child')) { // is last element of sub menu\n $nextElement = $element.parents('li').first().next('li').find('a').first();\n }\n\n return;\n }\n });\n\n Keyboard.handleKey(e, 'AccordionMenu', {\n open: function() {\n if ($target.is(':hidden')) {\n _this.down($target);\n $target.find('li').first().find('a').first().focus();\n }\n },\n close: function() {\n if ($target.length && !$target.is(':hidden')) { // close active sub of this item\n _this.up($target);\n } else if ($element.parent('[data-submenu]').length) { // close currently open sub\n _this.up($element.parent('[data-submenu]'));\n $element.parents('li').first().find('a').first().focus();\n }\n },\n up: function() {\n $prevElement.focus();\n return true;\n },\n down: function() {\n $nextElement.focus();\n return true;\n },\n toggle: function() {\n if (_this.options.submenuToggle) {\n return false;\n }\n if ($element.children('[data-submenu]').length) {\n _this.toggle($element.children('[data-submenu]'));\n return true;\n }\n },\n closeAll: function() {\n _this.hideAll();\n },\n handled: function(preventDefault) {\n if (preventDefault) {\n e.preventDefault();\n }\n }\n });\n });//.attr('tabindex', 0);\n }\n\n /**\n * Closes all panes of the menu.\n * @function\n */\n hideAll() {\n this.up(this.$element.find('[data-submenu]'));\n }\n\n /**\n * Opens all panes of the menu.\n * @function\n */\n showAll() {\n this.down(this.$element.find('[data-submenu]'));\n }\n\n /**\n * Toggles the open/close state of a submenu.\n * @function\n * @param {jQuery} $target - the submenu to toggle\n */\n toggle($target) {\n if (!$target.is(':animated')) {\n if (!$target.is(':hidden')) {\n this.up($target);\n }\n else {\n this.down($target);\n }\n }\n }\n\n /**\n * Opens the sub-menu defined by `$target`.\n * @param {jQuery} $target - Sub-menu to open.\n * @fires AccordionMenu#down\n */\n down($target) {\n // If having multiple submenus active is disabled, close all the submenus\n // that are not parents or children of the targeted submenu.\n if (!this.options.multiOpen) {\n // The \"branch\" of the targetted submenu, from the component root to\n // the active submenus nested in it.\n const $targetBranch = $target.parentsUntil(this.$element)\n .add($target)\n .add($target.find('.is-active'));\n // All the active submenus that are not in the branch.\n const $othersActiveSubmenus = this.$element.find('.is-active').not($targetBranch);\n\n this.up($othersActiveSubmenus);\n }\n\n $target\n .addClass('is-active')\n .attr({ 'aria-hidden': false });\n\n if (this.options.submenuToggle) {\n $target.prev('.submenu-toggle').attr({'aria-expanded': true});\n }\n else {\n $target.parent('.is-accordion-submenu-parent').attr({'aria-expanded': true});\n }\n\n $target.slideDown(this.options.slideSpeed, () => {\n /**\n * Fires when the menu is done opening.\n * @event AccordionMenu#down\n */\n this.$element.trigger('down.zf.accordionMenu', [$target]);\n });\n }\n\n /**\n * Closes the sub-menu defined by `$target`. All sub-menus inside the target will be closed as well.\n * @param {jQuery} $target - Sub-menu to close.\n * @fires AccordionMenu#up\n */\n up($target) {\n const $submenus = $target.find('[data-submenu]');\n const $allmenus = $target.add($submenus);\n\n $submenus.slideUp(0);\n $allmenus\n .removeClass('is-active')\n .attr('aria-hidden', true);\n\n if (this.options.submenuToggle) {\n $allmenus.prev('.submenu-toggle').attr('aria-expanded', false);\n }\n else {\n $allmenus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false);\n }\n\n $target.slideUp(this.options.slideSpeed, () => {\n /**\n * Fires when the menu is done collapsing up.\n * @event AccordionMenu#up\n */\n this.$element.trigger('up.zf.accordionMenu', [$target]);\n });\n }\n\n /**\n * Destroys an instance of accordion menu.\n * @fires AccordionMenu#destroyed\n */\n _destroy() {\n this.$element.find('[data-submenu]').slideDown(0).css('display', '');\n this.$element.find('a').off('click.zf.accordionMenu');\n this.$element.find('[data-is-parent-link]').detach();\n\n if (this.options.submenuToggle) {\n this.$element.find('.has-submenu-toggle').removeClass('has-submenu-toggle');\n this.$element.find('.submenu-toggle').remove();\n }\n\n Nest.Burn(this.$element, 'accordion');\n }\n}\n\nAccordionMenu.defaults = {\n /**\n * Adds the parent link to the submenu.\n * @option\n * @type {boolean}\n * @default false\n */\n parentLink: false,\n /**\n * Amount of time to animate the opening of a submenu in ms.\n * @option\n * @type {number}\n * @default 250\n */\n slideSpeed: 250,\n /**\n * Adds a separate submenu toggle button. This allows the parent item to have a link.\n * @option\n * @example true\n */\n submenuToggle: false,\n /**\n * The text used for the submenu toggle if enabled. This is used for screen readers only.\n * @option\n * @example true\n */\n submenuToggleText: 'Toggle menu',\n /**\n * Allow the menu to have multiple open panes.\n * @option\n * @type {boolean}\n * @default true\n */\n multiOpen: true\n};\n\nexport { AccordionMenu };\n","'use strict';\n\nimport $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { GetYoDigits, transitionend } from './foundation.core.utils';\nimport { Box } from './foundation.util.box';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * Drilldown module.\n * @module foundation.drilldown\n * @requires foundation.util.keyboard\n * @requires foundation.util.nest\n * @requires foundation.util.box\n */\n\nclass Drilldown extends Plugin {\n /**\n * Creates a new instance of a drilldown menu.\n * @class\n * @name Drilldown\n * @param {jQuery} element - jQuery object to make into an accordion menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Drilldown.defaults, this.$element.data(), options);\n this.className = 'Drilldown'; // ie9 back compat\n\n this._init();\n\n Keyboard.register('Drilldown', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'previous',\n 'ESCAPE': 'close',\n 'TAB': 'down',\n 'SHIFT_TAB': 'up'\n });\n }\n\n /**\n * Initializes the drilldown by creating jQuery collections of elements\n * @private\n */\n _init() {\n Nest.Feather(this.$element, 'drilldown');\n\n if(this.options.autoApplyClass) {\n this.$element.addClass('drilldown');\n }\n\n this.$element.attr({\n 'role': 'tree',\n 'aria-multiselectable': false\n });\n this.$submenuAnchors = this.$element.find('li.is-drilldown-submenu-parent').children('a');\n this.$submenus = this.$submenuAnchors.parent('li').children('[data-submenu]').attr('role', 'group');\n this.$menuItems = this.$element.find('li').not('.js-drilldown-back').attr('role', 'treeitem').find('a');\n\n // Set the main menu as current by default (unless a submenu is selected)\n // Used to set the wrapper height when the drilldown is closed/reopened from any (sub)menu\n this.$currentMenu = this.$element;\n\n this.$element.attr('data-mutate', (this.$element.attr('data-drilldown') || GetYoDigits(6, 'drilldown')));\n\n this._prepareMenu();\n this._registerEvents();\n\n this._keyboardEvents();\n }\n\n /**\n * prepares drilldown menu by setting attributes to links and elements\n * sets a min height to prevent content jumping\n * wraps the element if not already wrapped\n * @private\n * @function\n */\n _prepareMenu() {\n var _this = this;\n // if(!this.options.holdOpen){\n // this._menuLinkEvents();\n // }\n this.$submenuAnchors.each(function(){\n var $link = $(this);\n var $sub = $link.parent();\n if(_this.options.parentLink){\n $link.clone().prependTo($sub.children('[data-submenu]')).wrap('<li data-is-parent-link class=\"is-submenu-parent-item is-submenu-item is-drilldown-submenu-item\" role=\"none\"></li>');\n }\n $link.data('savedHref', $link.attr('href')).removeAttr('href').attr('tabindex', 0);\n $link.children('[data-submenu]')\n .attr({\n 'aria-hidden': true,\n 'tabindex': 0,\n 'role': 'group'\n });\n _this._events($link);\n });\n this.$submenus.each(function(){\n var $menu = $(this),\n $back = $menu.find('.js-drilldown-back');\n if(!$back.length){\n switch (_this.options.backButtonPosition) {\n case \"bottom\":\n $menu.append(_this.options.backButton);\n break;\n case \"top\":\n $menu.prepend(_this.options.backButton);\n break;\n default:\n console.error(\"Unsupported backButtonPosition value '\" + _this.options.backButtonPosition + \"'\");\n }\n }\n _this._back($menu);\n });\n\n this.$submenus.addClass('invisible');\n if(!this.options.autoHeight) {\n this.$submenus.addClass('drilldown-submenu-cover-previous');\n }\n\n // create a wrapper on element if it doesn't exist.\n if(!this.$element.parent().hasClass('is-drilldown')){\n this.$wrapper = $(this.options.wrapper).addClass('is-drilldown');\n if(this.options.animateHeight) this.$wrapper.addClass('animate-height');\n this.$element.wrap(this.$wrapper);\n }\n // set wrapper\n this.$wrapper = this.$element.parent();\n this.$wrapper.css(this._getMaxDims());\n }\n\n _resize() {\n this.$wrapper.css({'max-width': 'none', 'min-height': 'none'});\n // _getMaxDims has side effects (boo) but calling it should update all other necessary heights & widths\n this.$wrapper.css(this._getMaxDims());\n }\n\n /**\n * Adds event handlers to elements in the menu.\n * @function\n * @private\n * @param {jQuery} $elem - the current menu item to add handlers to.\n */\n _events($elem) {\n var _this = this;\n\n $elem.off('click.zf.drilldown')\n .on('click.zf.drilldown', function(e){\n if($(e.target).parentsUntil('ul', 'li').hasClass('is-drilldown-submenu-parent')){\n e.preventDefault();\n }\n\n // if(e.target !== e.currentTarget.firstElementChild){\n // return false;\n // }\n _this._show($elem.parent('li'));\n\n if(_this.options.closeOnClick){\n var $body = $('body');\n $body.off('.zf.drilldown').on('click.zf.drilldown', function(e){\n if (e.target === _this.$element[0] || $.contains(_this.$element[0], e.target)) { return; }\n e.preventDefault();\n _this._hideAll();\n $body.off('.zf.drilldown');\n });\n }\n });\n }\n\n /**\n * Adds event handlers to the menu element.\n * @function\n * @private\n */\n _registerEvents() {\n if(this.options.scrollTop){\n this._bindHandler = this._scrollTop.bind(this);\n this.$element.on('open.zf.drilldown hide.zf.drilldown close.zf.drilldown closed.zf.drilldown',this._bindHandler);\n }\n this.$element.on('mutateme.zf.trigger', this._resize.bind(this));\n }\n\n /**\n * Scroll to Top of Element or data-scroll-top-element\n * @function\n * @fires Drilldown#scrollme\n */\n _scrollTop() {\n var _this = this;\n var $scrollTopElement = _this.options.scrollTopElement!=''?$(_this.options.scrollTopElement):_this.$element,\n scrollPos = parseInt($scrollTopElement.offset().top+_this.options.scrollTopOffset, 10);\n $('html, body').stop(true).animate({ scrollTop: scrollPos }, _this.options.animationDuration, _this.options.animationEasing,function(){\n /**\n * Fires after the menu has scrolled\n * @event Drilldown#scrollme\n */\n if(this===$('html')[0])_this.$element.trigger('scrollme.zf.drilldown');\n });\n }\n\n /**\n * Adds keydown event listener to `li`'s in the menu.\n * @private\n */\n _keyboardEvents() {\n var _this = this;\n\n this.$menuItems.add(this.$element.find('.js-drilldown-back > a, .is-submenu-parent-item > a')).on('keydown.zf.drilldown', function(e){\n var $element = $(this),\n $elements = $element.parent('li').parent('ul').children('li').children('a'),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(Math.max(0, i-1));\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1));\n return;\n }\n });\n\n Keyboard.handleKey(e, 'Drilldown', {\n next: function() {\n if ($element.is(_this.$submenuAnchors)) {\n _this._show($element.parent('li'));\n $element.parent('li').one(transitionend($element), function(){\n $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();\n });\n return true;\n }\n },\n previous: function() {\n _this._hide($element.parent('li').parent('ul'));\n $element.parent('li').parent('ul').one(transitionend($element), function(){\n setTimeout(function() {\n $element.parent('li').parent('ul').parent('li').children('a').first().focus();\n }, 1);\n });\n return true;\n },\n up: function() {\n $prevElement.focus();\n // Don't tap focus on first element in root ul\n return !$element.is(_this.$element.find('> li:first-child > a'));\n },\n down: function() {\n $nextElement.focus();\n // Don't tap focus on last element in root ul\n return !$element.is(_this.$element.find('> li:last-child > a'));\n },\n close: function() {\n // Don't close on element in root ul\n if (!$element.is(_this.$element.find('> li > a'))) {\n _this._hide($element.parent().parent());\n $element.parent().parent().siblings('a').focus();\n }\n },\n open: function() {\n if (_this.options.parentLink && $element.attr('href')) { // Link with href\n return false;\n } else if (!$element.is(_this.$menuItems)) { // not menu item means back button\n _this._hide($element.parent('li').parent('ul'));\n $element.parent('li').parent('ul').one(transitionend($element), function(){\n setTimeout(function() {\n $element.parent('li').parent('ul').parent('li').children('a').first().focus();\n }, 1);\n });\n return true;\n } else if ($element.is(_this.$submenuAnchors)) { // Sub menu item\n _this._show($element.parent('li'));\n $element.parent('li').one(transitionend($element), function(){\n $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();\n });\n return true;\n }\n },\n handled: function(preventDefault) {\n if (preventDefault) {\n e.preventDefault();\n }\n }\n });\n }); // end keyboardAccess\n }\n\n /**\n * Closes all open elements, and returns to root menu.\n * @function\n * @fires Drilldown#close\n * @fires Drilldown#closed\n */\n _hideAll() {\n var $elem = this.$element.find('.is-drilldown-submenu.is-active')\n $elem.addClass('is-closing');\n\n if (this.options.autoHeight) {\n const calcHeight = $elem.parent().closest('ul').data('calcHeight');\n this.$wrapper.css({ height: calcHeight });\n }\n\n /**\n * Fires when the menu is closing.\n * @event Drilldown#close\n */\n this.$element.trigger('close.zf.drilldown');\n\n $elem.one(transitionend($elem), () => {\n $elem.removeClass('is-active is-closing');\n\n /**\n * Fires when the menu is fully closed.\n * @event Drilldown#closed\n */\n this.$element.trigger('closed.zf.drilldown');\n });\n }\n\n /**\n * Adds event listener for each `back` button, and closes open menus.\n * @function\n * @fires Drilldown#back\n * @param {jQuery} $elem - the current sub-menu to add `back` event.\n */\n _back($elem) {\n var _this = this;\n $elem.off('click.zf.drilldown');\n $elem.children('.js-drilldown-back')\n .on('click.zf.drilldown', function(e){\n // console.log('mouseup on back');\n _this._hide($elem);\n\n // If there is a parent submenu, call show\n let parentSubMenu = $elem.parent('li').parent('ul').parent('li');\n if (parentSubMenu.length) {\n _this._show(parentSubMenu);\n }\n });\n }\n\n /**\n * Adds event listener to menu items w/o submenus to close open menus on click.\n * @function\n * @private\n */\n _menuLinkEvents() {\n var _this = this;\n this.$menuItems.not('.is-drilldown-submenu-parent')\n .off('click.zf.drilldown')\n .on('click.zf.drilldown', function(e){\n setTimeout(function(){\n _this._hideAll();\n }, 0);\n });\n }\n\n /**\n * Sets the CSS classes for submenu to show it.\n * @function\n * @private\n * @param {jQuery} $elem - the target submenu (`ul` tag)\n * @param {boolean} trigger - trigger drilldown event\n */\n _setShowSubMenuClasses($elem, trigger) {\n $elem.addClass('is-active').removeClass('invisible').attr('aria-hidden', false);\n $elem.parent('li').attr('aria-expanded', true);\n if (trigger === true) {\n this.$element.trigger('open.zf.drilldown', [$elem]);\n }\n }\n\n /**\n * Sets the CSS classes for submenu to hide it.\n * @function\n * @private\n * @param {jQuery} $elem - the target submenu (`ul` tag)\n * @param {boolean} trigger - trigger drilldown event\n */\n _setHideSubMenuClasses($elem, trigger) {\n $elem.removeClass('is-active').addClass('invisible').attr('aria-hidden', true);\n $elem.parent('li').attr('aria-expanded', false);\n if (trigger === true) {\n $elem.trigger('hide.zf.drilldown', [$elem]);\n }\n }\n\n /**\n * Opens a specific drilldown (sub)menu no matter which (sub)menu in it is currently visible.\n * Compared to _show() this lets you jump into any submenu without clicking through every submenu on the way to it.\n * @function\n * @fires Drilldown#open\n * @param {jQuery} $elem - the target (sub)menu (`ul` tag)\n * @param {boolean} autoFocus - if true the first link in the target (sub)menu gets auto focused\n */\n _showMenu($elem, autoFocus) {\n\n var _this = this;\n\n // Reset drilldown\n var $expandedSubmenus = this.$element.find('li[aria-expanded=\"true\"] > ul[data-submenu]');\n $expandedSubmenus.each(function(index) {\n _this._setHideSubMenuClasses($(this));\n });\n\n // Save the menu as the currently displayed one.\n this.$currentMenu = $elem;\n\n // If target menu is root, focus first link & exit\n if ($elem.is('[data-drilldown]')) {\n if (autoFocus === true) $elem.find('li[role=\"treeitem\"] > a').first().focus();\n if (this.options.autoHeight) this.$wrapper.css('height', $elem.data('calcHeight'));\n return;\n }\n\n // Find all submenus on way to root incl. the element itself\n var $submenus = $elem.children().first().parentsUntil('[data-drilldown]', '[data-submenu]');\n\n // Open target menu and all submenus on its way to root\n $submenus.each(function(index) {\n\n // Update height of first child (target menu) if autoHeight option true\n if (index === 0 && _this.options.autoHeight) {\n _this.$wrapper.css('height', $(this).data('calcHeight'));\n }\n\n var isLastChild = index == $submenus.length - 1;\n\n // Add transitionsend listener to last child (root due to reverse order) to open target menu's first link\n // Last child makes sure the event gets always triggered even if going through several menus\n if (isLastChild === true) {\n $(this).one(transitionend($(this)), () => {\n if (autoFocus === true) {\n $elem.find('li[role=\"treeitem\"] > a').first().focus();\n }\n });\n }\n\n _this._setShowSubMenuClasses($(this), isLastChild);\n });\n }\n\n /**\n * Opens a submenu.\n * @function\n * @fires Drilldown#open\n * @param {jQuery} $elem - the current element with a submenu to open, i.e. the `li` tag.\n */\n _show($elem) {\n const $submenu = $elem.children('[data-submenu]');\n\n $elem.attr('aria-expanded', true);\n\n this.$currentMenu = $submenu;\n $submenu.addClass('is-active').removeClass('invisible').attr('aria-hidden', false);\n if (this.options.autoHeight) {\n this.$wrapper.css({ height: $submenu.data('calcHeight') });\n }\n\n /**\n * Fires when the submenu has opened.\n * @event Drilldown#open\n */\n this.$element.trigger('open.zf.drilldown', [$elem]);\n }\n\n /**\n * Hides a submenu\n * @function\n * @fires Drilldown#hide\n * @param {jQuery} $elem - the current sub-menu to hide, i.e. the `ul` tag.\n */\n _hide($elem) {\n if(this.options.autoHeight) this.$wrapper.css({height:$elem.parent().closest('ul').data('calcHeight')});\n var _this = this;\n $elem.parent('li').attr('aria-expanded', false);\n $elem.attr('aria-hidden', true);\n $elem.addClass('is-closing')\n .one(transitionend($elem), function(){\n $elem.removeClass('is-active is-closing');\n $elem.blur().addClass('invisible');\n });\n /**\n * Fires when the submenu has closed.\n * @event Drilldown#hide\n */\n $elem.trigger('hide.zf.drilldown', [$elem]);\n }\n\n /**\n * Iterates through the nested menus to calculate the min-height, and max-width for the menu.\n * Prevents content jumping.\n * @function\n * @private\n */\n _getMaxDims() {\n var maxHeight = 0, result = {}, _this = this;\n\n // Recalculate menu heights and total max height\n this.$submenus.add(this.$element).each(function(){\n var numOfElems = $(this).children('li').length;\n var height = Box.GetDimensions(this).height;\n\n maxHeight = height > maxHeight ? height : maxHeight;\n\n if(_this.options.autoHeight) {\n $(this).data('calcHeight',height);\n }\n });\n\n if (this.options.autoHeight)\n result['height'] = this.$currentMenu.data('calcHeight');\n else\n result['min-height'] = `${maxHeight}px`;\n\n result['max-width'] = `${this.$element[0].getBoundingClientRect().width}px`;\n\n return result;\n }\n\n /**\n * Destroys the Drilldown Menu\n * @function\n */\n _destroy() {\n if(this.options.scrollTop) this.$element.off('.zf.drilldown',this._bindHandler);\n this._hideAll();\n\t this.$element.off('mutateme.zf.trigger');\n Nest.Burn(this.$element, 'drilldown');\n this.$element.unwrap()\n .find('.js-drilldown-back, .is-submenu-parent-item').remove()\n .end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu')\n .end().find('[data-submenu]').removeAttr('aria-hidden tabindex role');\n this.$submenuAnchors.each(function() {\n $(this).off('.zf.drilldown');\n });\n\n this.$element.find('[data-is-parent-link]').detach();\n this.$submenus.removeClass('drilldown-submenu-cover-previous invisible');\n\n this.$element.find('a').each(function(){\n var $link = $(this);\n $link.removeAttr('tabindex');\n if($link.data('savedHref')){\n $link.attr('href', $link.data('savedHref')).removeData('savedHref');\n }else{ return; }\n });\n };\n}\n\nDrilldown.defaults = {\n /**\n * Drilldowns depend on styles in order to function properly; in the default build of Foundation these are\n * on the `drilldown` class. This option auto-applies this class to the drilldown upon initialization.\n * @option\n * @type {boolean}\n * @default true\n */\n autoApplyClass: true,\n /**\n * Markup used for JS generated back button. Prepended or appended (see backButtonPosition) to submenu lists and deleted on `destroy` method, 'js-drilldown-back' class required. Remove the backslash (`\\`) if copy and pasting.\n * @option\n * @type {string}\n * @default '<li class=\"js-drilldown-back\"><a tabindex=\"0\">Back</a></li>'\n */\n backButton: '<li class=\"js-drilldown-back\"><a tabindex=\"0\">Back</a></li>',\n /**\n * Position the back button either at the top or bottom of drilldown submenus. Can be `'left'` or `'bottom'`.\n * @option\n * @type {string}\n * @default top\n */\n backButtonPosition: 'top',\n /**\n * Markup used to wrap drilldown menu. Use a class name for independent styling; the JS applied class: `is-drilldown` is required. Remove the backslash (`\\`) if copy and pasting.\n * @option\n * @type {string}\n * @default '<div></div>'\n */\n wrapper: '<div></div>',\n /**\n * Adds the parent link to the submenu.\n * @option\n * @type {boolean}\n * @default false\n */\n parentLink: false,\n /**\n * Allow the menu to return to root list on body click.\n * @option\n * @type {boolean}\n * @default false\n */\n closeOnClick: false,\n /**\n * Allow the menu to auto adjust height.\n * @option\n * @type {boolean}\n * @default false\n */\n autoHeight: false,\n /**\n * Animate the auto adjust height.\n * @option\n * @type {boolean}\n * @default false\n */\n animateHeight: false,\n /**\n * Scroll to the top of the menu after opening a submenu or navigating back using the menu back button\n * @option\n * @type {boolean}\n * @default false\n */\n scrollTop: false,\n /**\n * String jquery selector (for example 'body') of element to take offset().top from, if empty string the drilldown menu offset().top is taken\n * @option\n * @type {string}\n * @default ''\n */\n scrollTopElement: '',\n /**\n * ScrollTop offset\n * @option\n * @type {number}\n * @default 0\n */\n scrollTopOffset: 0,\n /**\n * Scroll animation duration\n * @option\n * @type {number}\n * @default 500\n */\n animationDuration: 500,\n /**\n * Scroll animation easing. Can be `'swing'` or `'linear'`.\n * @option\n * @type {string}\n * @see {@link https://api.jquery.com/animate|JQuery animate}\n * @default 'swing'\n */\n animationEasing: 'swing'\n // holdOpen: false\n};\n\nexport {Drilldown};\n","'use strict';\n\nimport { Box } from './foundation.util.box';\nimport { Plugin } from './foundation.core.plugin';\nimport { rtl as Rtl } from './foundation.core.utils';\n\nconst POSITIONS = ['left', 'right', 'top', 'bottom'];\nconst VERTICAL_ALIGNMENTS = ['top', 'bottom', 'center'];\nconst HORIZONTAL_ALIGNMENTS = ['left', 'right', 'center'];\n\nconst ALIGNMENTS = {\n 'left': VERTICAL_ALIGNMENTS,\n 'right': VERTICAL_ALIGNMENTS,\n 'top': HORIZONTAL_ALIGNMENTS,\n 'bottom': HORIZONTAL_ALIGNMENTS\n}\n\nfunction nextItem(item, array) {\n var currentIdx = array.indexOf(item);\n if(currentIdx === array.length - 1) {\n return array[0];\n } else {\n return array[currentIdx + 1];\n }\n}\n\n\nclass Positionable extends Plugin {\n /**\n * Abstract class encapsulating the tether-like explicit positioning logic\n * including repositioning based on overlap.\n * Expects classes to define defaults for vOffset, hOffset, position,\n * alignment, allowOverlap, and allowBottomOverlap. They can do this by\n * extending the defaults, or (for now recommended due to the way docs are\n * generated) by explicitly declaring them.\n *\n **/\n\n _init() {\n this.triedPositions = {};\n this.position = this.options.position === 'auto' ? this._getDefaultPosition() : this.options.position;\n this.alignment = this.options.alignment === 'auto' ? this._getDefaultAlignment() : this.options.alignment;\n this.originalPosition = this.position;\n this.originalAlignment = this.alignment;\n }\n\n _getDefaultPosition () {\n return 'bottom';\n }\n\n _getDefaultAlignment() {\n switch(this.position) {\n case 'bottom':\n case 'top':\n return Rtl() ? 'right' : 'left';\n case 'left':\n case 'right':\n return 'bottom';\n }\n }\n\n /**\n * Adjusts the positionable possible positions by iterating through alignments\n * and positions.\n * @function\n * @private\n */\n _reposition() {\n if(this._alignmentsExhausted(this.position)) {\n this.position = nextItem(this.position, POSITIONS);\n this.alignment = ALIGNMENTS[this.position][0];\n } else {\n this._realign();\n }\n }\n\n /**\n * Adjusts the dropdown pane possible positions by iterating through alignments\n * on the current position.\n * @function\n * @private\n */\n _realign() {\n this._addTriedPosition(this.position, this.alignment)\n this.alignment = nextItem(this.alignment, ALIGNMENTS[this.position])\n }\n\n _addTriedPosition(position, alignment) {\n this.triedPositions[position] = this.triedPositions[position] || []\n this.triedPositions[position].push(alignment);\n }\n\n _positionsExhausted() {\n var isExhausted = true;\n for(var i = 0; i < POSITIONS.length; i++) {\n isExhausted = isExhausted && this._alignmentsExhausted(POSITIONS[i]);\n }\n return isExhausted;\n }\n\n _alignmentsExhausted(position) {\n return this.triedPositions[position] && this.triedPositions[position].length == ALIGNMENTS[position].length;\n }\n\n\n // When we're trying to center, we don't want to apply offset that's going to\n // take us just off center, so wrap around to return 0 for the appropriate\n // offset in those alignments. TODO: Figure out if we want to make this\n // configurable behavior... it feels more intuitive, especially for tooltips, but\n // it's possible someone might actually want to start from center and then nudge\n // slightly off.\n _getVOffset() {\n return this.options.vOffset;\n }\n\n _getHOffset() {\n return this.options.hOffset;\n }\n\n _setPosition($anchor, $element, $parent) {\n if($anchor.attr('aria-expanded') === 'false'){ return false; }\n\n if (!this.options.allowOverlap) {\n // restore original position & alignment before checking overlap\n this.position = this.originalPosition;\n this.alignment = this.originalAlignment;\n }\n\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n\n if(!this.options.allowOverlap) {\n var minOverlap = 100000000;\n // default coordinates to how we start, in case we can't figure out better\n var minCoordinates = {position: this.position, alignment: this.alignment};\n while(!this._positionsExhausted()) {\n let overlap = Box.OverlapArea($element, $parent, false, false, this.options.allowBottomOverlap);\n if(overlap === 0) {\n return;\n }\n\n if(overlap < minOverlap) {\n minOverlap = overlap;\n minCoordinates = {position: this.position, alignment: this.alignment};\n }\n\n this._reposition();\n\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n }\n // If we get through the entire loop, there was no non-overlapping\n // position available. Pick the version with least overlap.\n this.position = minCoordinates.position;\n this.alignment = minCoordinates.alignment;\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n }\n }\n\n}\n\nPositionable.defaults = {\n /**\n * Position of positionable relative to anchor. Can be left, right, bottom, top, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n position: 'auto',\n /**\n * Alignment of positionable relative to anchor. Can be left, right, bottom, top, center, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow overlap of container/window. If false, dropdown positionable first\n * try to position as defined by data-position and data-alignment, but\n * reposition if it would cause an overflow.\n * @option\n * @type {boolean}\n * @default false\n */\n allowOverlap: false,\n /**\n * Allow overlap of only the bottom of the container. This is the most common\n * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n * screen but not otherwise influence or break out of the container.\n * @option\n * @type {boolean}\n * @default true\n */\n allowBottomOverlap: true,\n /**\n * Number of pixels the positionable should be separated vertically from anchor\n * @option\n * @type {number}\n * @default 0\n */\n vOffset: 0,\n /**\n * Number of pixels the positionable should be separated horizontally from anchor\n * @option\n * @type {number}\n * @default 0\n */\n hOffset: 0,\n}\n\nexport {Positionable};\n","'use strict';\n\nimport $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { GetYoDigits, ignoreMousedisappear } from './foundation.core.utils';\nimport { Positionable } from './foundation.positionable';\n\nimport { Triggers } from './foundation.util.triggers';\nimport { Touch } from './foundation.util.touch'\n\n/**\n * Dropdown module.\n * @module foundation.dropdown\n * @requires foundation.util.keyboard\n * @requires foundation.util.box\n * @requires foundation.util.touch\n * @requires foundation.util.triggers\n */\nclass Dropdown extends Positionable {\n /**\n * Creates a new instance of a dropdown.\n * @class\n * @name Dropdown\n * @param {jQuery} element - jQuery object to make into a dropdown.\n * Object should be of the dropdown panel, rather than its anchor.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Dropdown.defaults, this.$element.data(), options);\n this.className = 'Dropdown'; // ie9 back compat\n\n // Touch and Triggers init are idempotent, just need to make sure they are initialized\n Touch.init($);\n Triggers.init($);\n\n this._init();\n\n Keyboard.register('Dropdown', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ESCAPE': 'close'\n });\n }\n\n /**\n * Initializes the plugin by setting/checking options and attributes, adding helper variables, and saving the anchor.\n * @function\n * @private\n */\n _init() {\n var $id = this.$element.attr('id');\n\n this.$anchors = $(`[data-toggle=\"${$id}\"]`).length ? $(`[data-toggle=\"${$id}\"]`) : $(`[data-open=\"${$id}\"]`);\n this.$anchors.attr({\n 'aria-controls': $id,\n 'data-is-focus': false,\n 'data-yeti-box': $id,\n 'aria-haspopup': true,\n 'aria-expanded': false\n });\n\n this._setCurrentAnchor(this.$anchors.first());\n\n if(this.options.parentClass){\n this.$parent = this.$element.parents('.' + this.options.parentClass);\n }else{\n this.$parent = null;\n }\n\n // Set [aria-labelledby] on the Dropdown if it is not set\n if (typeof this.$element.attr('aria-labelledby') === 'undefined') {\n // Get the anchor ID or create one\n if (typeof this.$currentAnchor.attr('id') === 'undefined') {\n this.$currentAnchor.attr('id', GetYoDigits(6, 'dd-anchor'));\n }\n\n this.$element.attr('aria-labelledby', this.$currentAnchor.attr('id'));\n }\n\n this.$element.attr({\n 'aria-hidden': 'true',\n 'data-yeti-box': $id,\n 'data-resize': $id,\n });\n\n super._init();\n this._events();\n }\n\n _getDefaultPosition() {\n // handle legacy classnames\n var position = this.$element[0].className.match(/(top|left|right|bottom)/g);\n if(position) {\n return position[0];\n } else {\n return 'bottom'\n }\n }\n\n _getDefaultAlignment() {\n // handle legacy float approach\n var horizontalPosition = /float-(\\S+)/.exec(this.$currentAnchor.attr('class'));\n if(horizontalPosition) {\n return horizontalPosition[1];\n }\n\n return super._getDefaultAlignment();\n }\n\n\n\n /**\n * Sets the position and orientation of the dropdown pane, checks for collisions if allow-overlap is not true.\n * Recursively calls itself if a collision is detected, with a new position class.\n * @function\n * @private\n */\n _setPosition() {\n this.$element.removeClass(`has-position-${this.position} has-alignment-${this.alignment}`);\n super._setPosition(this.$currentAnchor, this.$element, this.$parent);\n this.$element.addClass(`has-position-${this.position} has-alignment-${this.alignment}`);\n }\n\n /**\n * Make it a current anchor.\n * Current anchor as the reference for the position of Dropdown panes.\n * @param {HTML} el - DOM element of the anchor.\n * @function\n * @private\n */\n _setCurrentAnchor(el) {\n this.$currentAnchor = $(el);\n }\n\n /**\n * Adds event listeners to the element utilizing the triggers utility library.\n * @function\n * @private\n */\n _events() {\n var _this = this,\n hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined');\n\n this.$element.on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': this.close.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'resizeme.zf.trigger': this._setPosition.bind(this)\n });\n\n this.$anchors.off('click.zf.trigger')\n .on('click.zf.trigger', function(e) {\n _this._setCurrentAnchor(this);\n\n if (\n // if forceFollow false, always prevent default action\n (_this.options.forceFollow === false) ||\n // if forceFollow true and hover option true, only prevent default action on 1st click\n // on 2nd click (dropown opened) the default action (e.g. follow a href) gets executed\n (hasTouch && _this.options.hover && _this.$element.hasClass('is-open') === false)\n ) {\n e.preventDefault();\n }\n });\n\n if(this.options.hover){\n this.$anchors.off('mouseenter.zf.dropdown mouseleave.zf.dropdown')\n .on('mouseenter.zf.dropdown', function(){\n _this._setCurrentAnchor(this);\n\n var bodyData = $('body').data();\n if(typeof(bodyData.whatinput) === 'undefined' || bodyData.whatinput === 'mouse') {\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.open();\n _this.$anchors.data('hover', true);\n }, _this.options.hoverDelay);\n }\n }).on('mouseleave.zf.dropdown', ignoreMousedisappear(function(){\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.close();\n _this.$anchors.data('hover', false);\n }, _this.options.hoverDelay);\n }));\n if(this.options.hoverPane){\n this.$element.off('mouseenter.zf.dropdown mouseleave.zf.dropdown')\n .on('mouseenter.zf.dropdown', function(){\n clearTimeout(_this.timeout);\n }).on('mouseleave.zf.dropdown', ignoreMousedisappear(function(){\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.close();\n _this.$anchors.data('hover', false);\n }, _this.options.hoverDelay);\n }));\n }\n }\n this.$anchors.add(this.$element).on('keydown.zf.dropdown', function(e) {\n\n var $target = $(this),\n visibleFocusableElements = Keyboard.findFocusable(_this.$element);\n\n Keyboard.handleKey(e, 'Dropdown', {\n open: function() {\n if ($target.is(_this.$anchors) && !$target.is('input, textarea')) {\n _this.open();\n _this.$element.attr('tabindex', -1).focus();\n e.preventDefault();\n }\n },\n close: function() {\n _this.close();\n _this.$anchors.focus();\n }\n });\n });\n }\n\n /**\n * Adds an event handler to the body to close any dropdowns on a click.\n * @function\n * @private\n */\n _addBodyHandler() {\n var $body = $(document.body).not(this.$element),\n _this = this;\n $body.off('click.zf.dropdown tap.zf.dropdown')\n .on('click.zf.dropdown tap.zf.dropdown', function (e) {\n if(_this.$anchors.is(e.target) || _this.$anchors.find(e.target).length) {\n return;\n }\n if(_this.$element.is(e.target) || _this.$element.find(e.target).length) {\n return;\n }\n _this.close();\n $body.off('click.zf.dropdown tap.zf.dropdown');\n });\n }\n\n /**\n * Opens the dropdown pane, and fires a bubbling event to close other dropdowns.\n * @function\n * @fires Dropdown#closeme\n * @fires Dropdown#show\n */\n open() {\n // var _this = this;\n /**\n * Fires to close other open dropdowns, typically when dropdown is opening\n * @event Dropdown#closeme\n */\n this.$element.trigger('closeme.zf.dropdown', this.$element.attr('id'));\n this.$anchors.addClass('hover')\n .attr({'aria-expanded': true});\n // this.$element/*.show()*/;\n\n this.$element.addClass('is-opening');\n this._setPosition();\n this.$element.removeClass('is-opening').addClass('is-open')\n .attr({'aria-hidden': false});\n\n if(this.options.autoFocus){\n var $focusable = Keyboard.findFocusable(this.$element);\n if($focusable.length){\n $focusable.eq(0).focus();\n }\n }\n\n if(this.options.closeOnClick){ this._addBodyHandler(); }\n\n if (this.options.trapFocus) {\n Keyboard.trapFocus(this.$element);\n }\n\n /**\n * Fires once the dropdown is visible.\n * @event Dropdown#show\n */\n this.$element.trigger('show.zf.dropdown', [this.$element]);\n }\n\n /**\n * Closes the open dropdown pane.\n * @function\n * @fires Dropdown#hide\n */\n close() {\n if(!this.$element.hasClass('is-open')){\n return false;\n }\n this.$element.removeClass('is-open')\n .attr({'aria-hidden': true});\n\n this.$anchors.removeClass('hover')\n .attr('aria-expanded', false);\n\n /**\n * Fires once the dropdown is no longer visible.\n * @event Dropdown#hide\n */\n this.$element.trigger('hide.zf.dropdown', [this.$element]);\n\n if (this.options.trapFocus) {\n Keyboard.releaseFocus(this.$element);\n }\n }\n\n /**\n * Toggles the dropdown pane's visibility.\n * @function\n */\n toggle() {\n if(this.$element.hasClass('is-open')){\n if(this.$anchors.data('hover')) return;\n this.close();\n }else{\n this.open();\n }\n }\n\n /**\n * Destroys the dropdown.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.trigger').hide();\n this.$anchors.off('.zf.dropdown');\n $(document.body).off('click.zf.dropdown tap.zf.dropdown');\n\n }\n}\n\nDropdown.defaults = {\n /**\n * Class that designates bounding container of Dropdown (default: window)\n * @option\n * @type {?string}\n * @default null\n */\n parentClass: null,\n /**\n * Amount of time to delay opening a submenu on hover event.\n * @option\n * @type {number}\n * @default 250\n */\n hoverDelay: 250,\n /**\n * Allow submenus to open on hover events\n * @option\n * @type {boolean}\n * @default false\n */\n hover: false,\n /**\n * Don't close dropdown when hovering over dropdown pane\n * @option\n * @type {boolean}\n * @default false\n */\n hoverPane: false,\n /**\n * Number of pixels between the dropdown pane and the triggering element on open.\n * @option\n * @type {number}\n * @default 0\n */\n vOffset: 0,\n /**\n * Number of pixels between the dropdown pane and the triggering element on open.\n * @option\n * @type {number}\n * @default 0\n */\n hOffset: 0,\n /**\n * Position of dropdown. Can be left, right, bottom, top, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n position: 'auto',\n /**\n * Alignment of dropdown relative to anchor. Can be left, right, bottom, top, center, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow overlap of container/window. If false, dropdown will first try to position as defined by data-position and data-alignment, but reposition if it would cause an overflow.\n * @option\n * @type {boolean}\n * @default false\n */\n allowOverlap: false,\n /**\n * Allow overlap of only the bottom of the container. This is the most common\n * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n * screen but not otherwise influence or break out of the container.\n * @option\n * @type {boolean}\n * @default true\n */\n allowBottomOverlap: true,\n /**\n * Allow the plugin to trap focus to the dropdown pane if opened with keyboard commands.\n * @option\n * @type {boolean}\n * @default false\n */\n trapFocus: false,\n /**\n * Allow the plugin to set focus to the first focusable element within the pane, regardless of method of opening.\n * @option\n * @type {boolean}\n * @default false\n */\n autoFocus: false,\n /**\n * Allows a click on the body to close the dropdown.\n * @option\n * @type {boolean}\n * @default false\n */\n closeOnClick: false,\n /**\n * If true the default action of the toggle (e.g. follow a link with href) gets executed on click. If hover option is also true the default action gets prevented on first click for mobile / touch devices and executed on second click.\n * @option\n * @type {boolean}\n * @default true\n */\n forceFollow: true\n};\n\nexport {Dropdown};\n","'use strict';\n\nimport $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { rtl as Rtl, ignoreMousedisappear } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { Box } from './foundation.util.box';\nimport { Touch } from './foundation.util.touch'\n\n\n/**\n * DropdownMenu module.\n * @module foundation.dropdownMenu\n * @requires foundation.util.keyboard\n * @requires foundation.util.box\n * @requires foundation.util.nest\n * @requires foundation.util.touch\n */\n\nclass DropdownMenu extends Plugin {\n /**\n * Creates a new instance of DropdownMenu.\n * @class\n * @name DropdownMenu\n * @fires DropdownMenu#init\n * @param {jQuery} element - jQuery object to make into a dropdown menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, DropdownMenu.defaults, this.$element.data(), options);\n this.className = 'DropdownMenu'; // ie9 back compat\n\n Touch.init($); // Touch init is idempotent, we just need to make sure it's initialied.\n\n this._init();\n\n Keyboard.register('DropdownMenu', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'previous',\n 'ESCAPE': 'close'\n });\n }\n\n /**\n * Initializes the plugin, and calls _prepareMenu\n * @private\n * @function\n */\n _init() {\n Nest.Feather(this.$element, 'dropdown');\n\n var subs = this.$element.find('li.is-dropdown-submenu-parent');\n this.$element.children('.is-dropdown-submenu-parent').children('.is-dropdown-submenu').addClass('first-sub');\n\n this.$menuItems = this.$element.find('li[role=\"none\"]');\n this.$tabs = this.$element.children('li[role=\"none\"]');\n this.$tabs.find('ul.is-dropdown-submenu').addClass(this.options.verticalClass);\n\n if (this.options.alignment === 'auto') {\n if (this.$element.hasClass(this.options.rightClass) || Rtl() || this.$element.parents('.top-bar-right').is('*')) {\n this.options.alignment = 'right';\n subs.addClass('opens-left');\n } else {\n this.options.alignment = 'left';\n subs.addClass('opens-right');\n }\n } else {\n if (this.options.alignment === 'right') {\n subs.addClass('opens-left');\n } else {\n subs.addClass('opens-right');\n }\n }\n this.changed = false;\n this._events();\n };\n\n _isVertical() {\n return this.$tabs.css('display') === 'block' || this.$element.css('flex-direction') === 'column';\n }\n\n _isRtl() {\n return this.$element.hasClass('align-right') || (Rtl() && !this.$element.hasClass('align-left'));\n }\n\n /**\n * Adds event listeners to elements within the menu\n * @private\n * @function\n */\n _events() {\n var _this = this,\n hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined'),\n parClass = 'is-dropdown-submenu-parent';\n\n // used for onClick and in the keyboard handlers\n var handleClickFn = function(e) {\n var $elem = $(e.target).parentsUntil('ul', `.${parClass}`),\n hasSub = $elem.hasClass(parClass),\n hasClicked = $elem.attr('data-is-click') === 'true',\n $sub = $elem.children('.is-dropdown-submenu');\n\n if (hasSub) {\n if (hasClicked) {\n if (!_this.options.closeOnClick\n || (!_this.options.clickOpen && !hasTouch)\n || (_this.options.forceFollow && hasTouch)) {\n return;\n }\n e.stopImmediatePropagation();\n e.preventDefault();\n _this._hide($elem);\n }\n else {\n e.stopImmediatePropagation();\n e.preventDefault();\n _this._show($sub);\n $elem.add($elem.parentsUntil(_this.$element, `.${parClass}`)).attr('data-is-click', true);\n }\n }\n };\n\n if (this.options.clickOpen || hasTouch) {\n this.$menuItems.on('click.zf.dropdownMenu touchstart.zf.dropdownMenu', handleClickFn);\n }\n\n // Handle Leaf element Clicks\n if(_this.options.closeOnClickInside){\n this.$menuItems.on('click.zf.dropdownMenu', function(e) {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n if(!hasSub){\n _this._hide();\n }\n });\n }\n\n if (!this.options.disableHover) {\n this.$menuItems.on('mouseenter.zf.dropdownMenu', function (e) {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n\n if (hasSub) {\n clearTimeout($elem.data('_delay'));\n $elem.data('_delay', setTimeout(function () {\n _this._show($elem.children('.is-dropdown-submenu'));\n }, _this.options.hoverDelay));\n }\n }).on('mouseleave.zf.dropdownMenu', ignoreMousedisappear(function (e) {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n if (hasSub && _this.options.autoclose) {\n if ($elem.attr('data-is-click') === 'true' && _this.options.clickOpen) { return false; }\n\n clearTimeout($elem.data('_delay'));\n $elem.data('_delay', setTimeout(function () {\n _this._hide($elem);\n }, _this.options.closingTime));\n }\n }));\n }\n this.$menuItems.on('keydown.zf.dropdownMenu', function(e) {\n var $element = $(e.target).parentsUntil('ul', '[role=\"none\"]'),\n isTab = _this.$tabs.index($element) > -1,\n $elements = isTab ? _this.$tabs : $element.siblings('li').add($element),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(i-1);\n $nextElement = $elements.eq(i+1);\n return;\n }\n });\n\n var nextSibling = function() {\n $nextElement.children('a:first').focus();\n e.preventDefault();\n }, prevSibling = function() {\n $prevElement.children('a:first').focus();\n e.preventDefault();\n }, openSub = function() {\n var $sub = $element.children('ul.is-dropdown-submenu');\n if ($sub.length) {\n _this._show($sub);\n $element.find('li > a:first').focus();\n e.preventDefault();\n } else { return; }\n }, closeSub = function() {\n //if ($element.is(':first-child')) {\n var close = $element.parent('ul').parent('li');\n close.children('a:first').focus();\n _this._hide(close);\n e.preventDefault();\n //}\n };\n var functions = {\n open: openSub,\n close: function() {\n _this._hide(_this.$element);\n _this.$menuItems.eq(0).children('a').focus(); // focus to first element\n e.preventDefault();\n }\n };\n\n if (isTab) {\n if (_this._isVertical()) { // vertical menu\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n down: nextSibling,\n up: prevSibling,\n next: closeSub,\n previous: openSub\n });\n } else { // left aligned\n $.extend(functions, {\n down: nextSibling,\n up: prevSibling,\n next: openSub,\n previous: closeSub\n });\n }\n } else { // horizontal menu\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n next: prevSibling,\n previous: nextSibling,\n down: openSub,\n up: closeSub\n });\n } else { // left aligned\n $.extend(functions, {\n next: nextSibling,\n previous: prevSibling,\n down: openSub,\n up: closeSub\n });\n }\n }\n } else { // not tabs -> one sub\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n next: closeSub,\n previous: openSub,\n down: nextSibling,\n up: prevSibling\n });\n } else { // left aligned\n $.extend(functions, {\n next: openSub,\n previous: closeSub,\n down: nextSibling,\n up: prevSibling\n });\n }\n }\n Keyboard.handleKey(e, 'DropdownMenu', functions);\n\n });\n }\n\n /**\n * Adds an event handler to the body to close any dropdowns on a click.\n * @function\n * @private\n */\n _addBodyHandler() {\n const $body = $(document.body);\n this._removeBodyHandler();\n $body.on('click.zf.dropdownMenu tap.zf.dropdownMenu', (e) => {\n var isItself = !!$(e.target).closest(this.$element).length;\n if (isItself) return;\n\n this._hide();\n this._removeBodyHandler();\n });\n }\n\n /**\n * Remove the body event handler. See `_addBodyHandler`.\n * @function\n * @private\n */\n _removeBodyHandler() {\n $(document.body).off('click.zf.dropdownMenu tap.zf.dropdownMenu');\n }\n\n /**\n * Opens a dropdown pane, and checks for collisions first.\n * @param {jQuery} $sub - ul element that is a submenu to show\n * @function\n * @private\n * @fires DropdownMenu#show\n */\n _show($sub) {\n var idx = this.$tabs.index(this.$tabs.filter(function(i, el) {\n return $(el).find($sub).length > 0;\n }));\n var $sibs = $sub.parent('li.is-dropdown-submenu-parent').siblings('li.is-dropdown-submenu-parent');\n this._hide($sibs, idx);\n $sub.css('visibility', 'hidden').addClass('js-dropdown-active')\n .parent('li.is-dropdown-submenu-parent').addClass('is-active');\n var clear = Box.ImNotTouchingYou($sub, null, true);\n if (!clear) {\n var oldClass = this.options.alignment === 'left' ? '-right' : '-left',\n $parentLi = $sub.parent('.is-dropdown-submenu-parent');\n $parentLi.removeClass(`opens${oldClass}`).addClass(`opens-${this.options.alignment}`);\n clear = Box.ImNotTouchingYou($sub, null, true);\n if (!clear) {\n $parentLi.removeClass(`opens-${this.options.alignment}`).addClass('opens-inner');\n }\n this.changed = true;\n }\n $sub.css('visibility', '');\n if (this.options.closeOnClick) { this._addBodyHandler(); }\n /**\n * Fires when the new dropdown pane is visible.\n * @event DropdownMenu#show\n */\n this.$element.trigger('show.zf.dropdownMenu', [$sub]);\n }\n\n /**\n * Hides a single, currently open dropdown pane, if passed a parameter, otherwise, hides everything.\n * @function\n * @param {jQuery} $elem - element with a submenu to hide\n * @param {Number} idx - index of the $tabs collection to hide\n * @fires DropdownMenu#hide\n * @private\n */\n _hide($elem, idx) {\n var $toClose;\n if ($elem && $elem.length) {\n $toClose = $elem;\n } else if (typeof idx !== 'undefined') {\n $toClose = this.$tabs.not(function(i, el) {\n return i === idx;\n });\n }\n else {\n $toClose = this.$element;\n }\n var somethingToClose = $toClose.hasClass('is-active') || $toClose.find('.is-active').length > 0;\n\n if (somethingToClose) {\n var $activeItem = $toClose.find('li.is-active');\n $activeItem.add($toClose).attr({\n 'data-is-click': false\n }).removeClass('is-active');\n\n $toClose.find('ul.js-dropdown-active').removeClass('js-dropdown-active');\n\n if (this.changed || $toClose.find('opens-inner').length) {\n var oldClass = this.options.alignment === 'left' ? 'right' : 'left';\n $toClose.find('li.is-dropdown-submenu-parent').add($toClose)\n .removeClass(`opens-inner opens-${this.options.alignment}`)\n .addClass(`opens-${oldClass}`);\n this.changed = false;\n }\n\n clearTimeout($activeItem.data('_delay'));\n this._removeBodyHandler();\n\n /**\n * Fires when the open menus are closed.\n * @event DropdownMenu#hide\n */\n this.$element.trigger('hide.zf.dropdownMenu', [$toClose]);\n }\n }\n\n /**\n * Destroys the plugin.\n * @function\n */\n _destroy() {\n this.$menuItems.off('.zf.dropdownMenu').removeAttr('data-is-click')\n .removeClass('is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner');\n $(document.body).off('.zf.dropdownMenu');\n Nest.Burn(this.$element, 'dropdown');\n }\n}\n\n/**\n * Default settings for plugin\n */\nDropdownMenu.defaults = {\n /**\n * Disallows hover events from opening submenus\n * @option\n * @type {boolean}\n * @default false\n */\n disableHover: false,\n /**\n * Allow a submenu to automatically close on a mouseleave event, if not clicked open.\n * @option\n * @type {boolean}\n * @default true\n */\n autoclose: true,\n /**\n * Amount of time to delay opening a submenu on hover event.\n * @option\n * @type {number}\n * @default 50\n */\n hoverDelay: 50,\n /**\n * Allow a submenu to open/remain open on parent click event. Allows cursor to move away from menu.\n * @option\n * @type {boolean}\n * @default false\n */\n clickOpen: false,\n /**\n * Amount of time to delay closing a submenu on a mouseleave event.\n * @option\n * @type {number}\n * @default 500\n */\n\n closingTime: 500,\n /**\n * Position of the menu relative to what direction the submenus should open. Handled by JS. Can be `'auto'`, `'left'` or `'right'`.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow clicks on the body to close any open submenus.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n /**\n * Allow clicks on leaf anchor links to close any open submenus.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClickInside: true,\n /**\n * Class applied to vertical oriented menus, Foundation default is `vertical`. Update this if using your own class.\n * @option\n * @type {string}\n * @default 'vertical'\n */\n verticalClass: 'vertical',\n /**\n * Class applied to right-side oriented menus, Foundation default is `align-right`. Update this if using your own class.\n * @option\n * @type {string}\n * @default 'align-right'\n */\n rightClass: 'align-right',\n /**\n * Boolean to force overide the clicking of links to perform default action, on second touch event for mobile.\n * @option\n * @type {boolean}\n * @default true\n */\n forceFollow: true\n};\n\nexport {DropdownMenu};\n","'use strict';\n\nimport $ from 'jquery';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { onImagesLoaded } from './foundation.util.imageLoader';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * Equalizer module.\n * @module foundation.equalizer\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.imageLoader if equalizer contains images\n */\n\nclass Equalizer extends Plugin {\n /**\n * Creates a new instance of Equalizer.\n * @class\n * @name Equalizer\n * @fires Equalizer#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options){\n this.$element = element;\n this.options = $.extend({}, Equalizer.defaults, this.$element.data(), options);\n this.className = 'Equalizer'; // ie9 back compat\n\n this._init();\n }\n\n /**\n * Initializes the Equalizer plugin and calls functions to get equalizer functioning on load.\n * @private\n */\n _init() {\n var eqId = this.$element.attr('data-equalizer') || '';\n var $watched = this.$element.find(`[data-equalizer-watch=\"${eqId}\"]`);\n\n MediaQuery._init();\n\n this.$watched = $watched.length ? $watched : this.$element.find('[data-equalizer-watch]');\n this.$element.attr('data-resize', (eqId || GetYoDigits(6, 'eq')));\n this.$element.attr('data-mutate', (eqId || GetYoDigits(6, 'eq')));\n\n this.hasNested = this.$element.find('[data-equalizer]').length > 0;\n this.isNested = this.$element.parentsUntil(document.body, '[data-equalizer]').length > 0;\n this.isOn = false;\n this._bindHandler = {\n onResizeMeBound: this._onResizeMe.bind(this),\n onPostEqualizedBound: this._onPostEqualized.bind(this)\n };\n\n var imgs = this.$element.find('img');\n var tooSmall;\n if(this.options.equalizeOn){\n tooSmall = this._checkMQ();\n $(window).on('changed.zf.mediaquery', this._checkMQ.bind(this));\n }else{\n this._events();\n }\n if((typeof tooSmall !== 'undefined' && tooSmall === false) || typeof tooSmall === 'undefined'){\n if(imgs.length){\n onImagesLoaded(imgs, this._reflow.bind(this));\n }else{\n this._reflow();\n }\n }\n }\n\n /**\n * Removes event listeners if the breakpoint is too small.\n * @private\n */\n _pauseEvents() {\n this.isOn = false;\n this.$element.off({\n '.zf.equalizer': this._bindHandler.onPostEqualizedBound,\n 'resizeme.zf.trigger': this._bindHandler.onResizeMeBound,\n\t 'mutateme.zf.trigger': this._bindHandler.onResizeMeBound\n });\n }\n\n /**\n * function to handle $elements resizeme.zf.trigger, with bound this on _bindHandler.onResizeMeBound\n * @private\n */\n _onResizeMe(e) {\n this._reflow();\n }\n\n /**\n * function to handle $elements postequalized.zf.equalizer, with bound this on _bindHandler.onPostEqualizedBound\n * @private\n */\n _onPostEqualized(e) {\n if(e.target !== this.$element[0]){ this._reflow(); }\n }\n\n /**\n * Initializes events for Equalizer.\n * @private\n */\n _events() {\n var _this = this;\n this._pauseEvents();\n if(this.hasNested){\n this.$element.on('postequalized.zf.equalizer', this._bindHandler.onPostEqualizedBound);\n }else{\n this.$element.on('resizeme.zf.trigger', this._bindHandler.onResizeMeBound);\n\t this.$element.on('mutateme.zf.trigger', this._bindHandler.onResizeMeBound);\n }\n this.isOn = true;\n }\n\n /**\n * Checks the current breakpoint to the minimum required size.\n * @private\n */\n _checkMQ() {\n var tooSmall = !MediaQuery.is(this.options.equalizeOn);\n if(tooSmall){\n if(this.isOn){\n this._pauseEvents();\n this.$watched.css('height', 'auto');\n }\n }else{\n if(!this.isOn){\n this._events();\n }\n }\n return tooSmall;\n }\n\n /**\n * A noop version for the plugin\n * @private\n */\n _killswitch() {\n return;\n }\n\n /**\n * Calls necessary functions to update Equalizer upon DOM change\n * @private\n */\n _reflow() {\n if(!this.options.equalizeOnStack){\n if(this._isStacked()){\n this.$watched.css('height', 'auto');\n return false;\n }\n }\n if (this.options.equalizeByRow) {\n this.getHeightsByRow(this.applyHeightByRow.bind(this));\n }else{\n this.getHeights(this.applyHeight.bind(this));\n }\n }\n\n /**\n * Manually determines if the first 2 elements are *NOT* stacked.\n * @private\n */\n _isStacked() {\n if (!this.$watched[0] || !this.$watched[1]) {\n return true;\n }\n return this.$watched[0].getBoundingClientRect().top !== this.$watched[1].getBoundingClientRect().top;\n }\n\n /**\n * Finds the outer heights of children contained within an Equalizer parent and returns them in an array\n * @param {Function} cb - A non-optional callback to return the heights array to.\n * @returns {Array} heights - An array of heights of children within Equalizer container\n */\n getHeights(cb) {\n var heights = [];\n for(var i = 0, len = this.$watched.length; i < len; i++){\n this.$watched[i].style.height = 'auto';\n heights.push(this.$watched[i].offsetHeight);\n }\n cb(heights);\n }\n\n /**\n * Finds the outer heights of children contained within an Equalizer parent and returns them in an array\n * @param {Function} cb - A non-optional callback to return the heights array to.\n * @returns {Array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child\n */\n getHeightsByRow(cb) {\n var lastElTopOffset = (this.$watched.length ? this.$watched.first().offset().top : 0),\n groups = [],\n group = 0;\n //group by Row\n groups[group] = [];\n for(var i = 0, len = this.$watched.length; i < len; i++){\n this.$watched[i].style.height = 'auto';\n //maybe could use this.$watched[i].offsetTop\n var elOffsetTop = $(this.$watched[i]).offset().top;\n if (elOffsetTop!=lastElTopOffset) {\n group++;\n groups[group] = [];\n lastElTopOffset=elOffsetTop;\n }\n groups[group].push([this.$watched[i],this.$watched[i].offsetHeight]);\n }\n\n for (var j = 0, ln = groups.length; j < ln; j++) {\n var heights = $(groups[j]).map(function(){ return this[1]; }).get();\n var max = Math.max.apply(null, heights);\n groups[j].push(max);\n }\n cb(groups);\n }\n\n /**\n * Changes the CSS height property of each child in an Equalizer parent to match the tallest\n * @param {array} heights - An array of heights of children within Equalizer container\n * @fires Equalizer#preequalized\n * @fires Equalizer#postequalized\n */\n applyHeight(heights) {\n var max = Math.max.apply(null, heights);\n /**\n * Fires before the heights are applied\n * @event Equalizer#preequalized\n */\n this.$element.trigger('preequalized.zf.equalizer');\n\n this.$watched.css('height', max);\n\n /**\n * Fires when the heights have been applied\n * @event Equalizer#postequalized\n */\n this.$element.trigger('postequalized.zf.equalizer');\n }\n\n /**\n * Changes the CSS height property of each child in an Equalizer parent to match the tallest by row\n * @param {array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child\n * @fires Equalizer#preequalized\n * @fires Equalizer#preequalizedrow\n * @fires Equalizer#postequalizedrow\n * @fires Equalizer#postequalized\n */\n applyHeightByRow(groups) {\n /**\n * Fires before the heights are applied\n */\n this.$element.trigger('preequalized.zf.equalizer');\n for (var i = 0, len = groups.length; i < len ; i++) {\n var groupsILength = groups[i].length,\n max = groups[i][groupsILength - 1];\n if (groupsILength<=2) {\n $(groups[i][0][0]).css({'height':'auto'});\n continue;\n }\n /**\n * Fires before the heights per row are applied\n * @event Equalizer#preequalizedrow\n */\n this.$element.trigger('preequalizedrow.zf.equalizer');\n for (var j = 0, lenJ = (groupsILength-1); j < lenJ ; j++) {\n $(groups[i][j][0]).css({'height':max});\n }\n /**\n * Fires when the heights per row have been applied\n * @event Equalizer#postequalizedrow\n */\n this.$element.trigger('postequalizedrow.zf.equalizer');\n }\n /**\n * Fires when the heights have been applied\n */\n this.$element.trigger('postequalized.zf.equalizer');\n }\n\n /**\n * Destroys an instance of Equalizer.\n * @function\n */\n _destroy() {\n this._pauseEvents();\n this.$watched.css('height', 'auto');\n }\n}\n\n/**\n * Default settings for plugin\n */\nEqualizer.defaults = {\n /**\n * Enable height equalization when stacked on smaller screens.\n * @option\n * @type {boolean}\n * @default false\n */\n equalizeOnStack: false,\n /**\n * Enable height equalization row by row.\n * @option\n * @type {boolean}\n * @default false\n */\n equalizeByRow: false,\n /**\n * String representing the minimum breakpoint size the plugin should equalize heights on.\n * @option\n * @type {string}\n * @default ''\n */\n equalizeOn: ''\n};\n\nexport {Equalizer};\n","'use strict';\n\nimport $ from 'jquery';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Plugin } from './foundation.core.plugin';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Interchange module.\n * @module foundation.interchange\n * @requires foundation.util.mediaQuery\n */\n\nclass Interchange extends Plugin {\n /**\n * Creates a new instance of Interchange.\n * @class\n * @name Interchange\n * @fires Interchange#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Interchange.defaults, this.$element.data(), options);\n this.rules = [];\n this.currentPath = '';\n this.className = 'Interchange'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n \n this._init();\n this._events();\n }\n\n /**\n * Initializes the Interchange plugin and calls functions to get interchange functioning on load.\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n\n var id = this.$element[0].id || GetYoDigits(6, 'interchange');\n this.$element.attr({\n 'data-resize': id,\n 'id': id\n });\n\n this._parseOptions();\n this._addBreakpoints();\n this._generateRules();\n this._reflow();\n }\n\n /**\n * Initializes events for Interchange.\n * @function\n * @private\n */\n _events() {\n this.$element.off('resizeme.zf.trigger').on('resizeme.zf.trigger', () => this._reflow());\n }\n\n /**\n * Calls necessary functions to update Interchange upon DOM change\n * @function\n * @private\n */\n _reflow() {\n var match;\n\n // Iterate through each rule, but only save the last match\n for (var i in this.rules) {\n if(this.rules.hasOwnProperty(i)) {\n var rule = this.rules[i];\n if (window.matchMedia(rule.query).matches) {\n match = rule;\n }\n }\n }\n\n if (match) {\n this.replace(match.path);\n }\n }\n\n /**\n * Check options valifity and set defaults for:\n * - `data-interchange-type`: if set, enforce the type of replacement (auto, src, background or html)\n * @function\n * @private\n */\n _parseOptions() {\n var types = ['auto', 'src', 'background', 'html'];\n if (typeof this.options.type === 'undefined')\n this.options.type = 'auto';\n else if (types.indexOf(this.options.type) === -1) {\n console.log(`Warning: invalid value \"${this.options.type}\" for Interchange option \"type\"`);\n this.options.type = 'auto';\n }\n }\n\n /**\n * Gets the Foundation breakpoints and adds them to the Interchange.SPECIAL_QUERIES object.\n * @function\n * @private\n */\n _addBreakpoints() {\n for (var i in MediaQuery.queries) {\n if (MediaQuery.queries.hasOwnProperty(i)) {\n var query = MediaQuery.queries[i];\n Interchange.SPECIAL_QUERIES[query.name] = query.value;\n }\n }\n }\n\n /**\n * Checks the Interchange element for the provided media query + content pairings\n * @function\n * @private\n * @param {Object} element - jQuery object that is an Interchange instance\n * @returns {Array} scenarios - Array of objects that have 'mq' and 'path' keys with corresponding keys\n */\n _generateRules(element) {\n var rulesList = [];\n var rules;\n\n if (this.options.rules) {\n rules = this.options.rules;\n }\n else {\n rules = this.$element.data('interchange');\n }\n\n rules = typeof rules === 'string' ? rules.match(/\\[.*?, .*?\\]/g) : rules;\n\n for (var i in rules) {\n if(rules.hasOwnProperty(i)) {\n var rule = rules[i].slice(1, -1).split(', ');\n var path = rule.slice(0, -1).join('');\n var query = rule[rule.length - 1];\n\n if (Interchange.SPECIAL_QUERIES[query]) {\n query = Interchange.SPECIAL_QUERIES[query];\n }\n\n rulesList.push({\n path: path,\n query: query\n });\n }\n }\n\n this.rules = rulesList;\n }\n\n /**\n * Update the `src` property of an image, or change the HTML of a container, to the specified path.\n * @function\n * @param {String} path - Path to the image or HTML partial.\n * @fires Interchange#replaced\n */\n replace(path) {\n if (this.currentPath === path) return;\n\n var trigger = 'replaced.zf.interchange';\n\n var type = this.options.type;\n if (type === 'auto') {\n if (this.$element[0].nodeName === 'IMG')\n type = 'src';\n else if (path.match(/\\.(gif|jpe?g|png|svg|tiff)([?#].*)?/i))\n type = 'background';\n else\n type = 'html';\n }\n\n // Replacing images\n if (type === 'src') {\n this.$element.attr('src', path)\n .on('load', () => { this.currentPath = path; })\n .trigger(trigger);\n }\n // Replacing background images\n else if (type === 'background') {\n path = path.replace(/\\(/g, '%28').replace(/\\)/g, '%29');\n this.$element\n .css({ 'background-image': 'url(' + path + ')' })\n .trigger(trigger);\n }\n // Replacing HTML\n else if (type === 'html') {\n $.get(path, (response) => {\n this.$element\n .html(response)\n .trigger(trigger);\n $(response).foundation();\n this.currentPath = path;\n });\n }\n\n /**\n * Fires when content in an Interchange element is done being loaded.\n * @event Interchange#replaced\n */\n // this.$element.trigger('replaced.zf.interchange');\n }\n\n /**\n * Destroys an instance of interchange.\n * @function\n */\n _destroy() {\n this.$element.off('resizeme.zf.trigger')\n }\n}\n\n/**\n * Default settings for plugin\n */\nInterchange.defaults = {\n /**\n * Rules to be applied to Interchange elements. Set with the `data-interchange` array notation.\n * @option\n * @type {?array}\n * @default null\n */\n rules: null,\n\n /**\n * Type of the responsive ressource to replace. It can take the following options:\n * - `auto` (default): choose the type according to the element tag or the ressource extension,\n * - `src`: replace the `[src]` attribute, recommended for images `<img>`.\n * - `background`: replace the `background-image` CSS property.\n * - `html`: replace the element content.\n * @option\n * @type {string}\n * @default 'auto'\n */\n type: 'auto'\n};\n\nInterchange.SPECIAL_QUERIES = {\n 'landscape': 'screen and (orientation: landscape)',\n 'portrait': 'screen and (orientation: portrait)',\n 'retina': 'only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx)'\n};\n\nexport {Interchange};\n","import $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * SmoothScroll module.\n * @module foundation.smoothScroll\n */\nclass SmoothScroll extends Plugin {\n /**\n * Creates a new instance of SmoothScroll.\n * @class\n * @name SmoothScroll\n * @fires SmoothScroll#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, SmoothScroll.defaults, this.$element.data(), options);\n this.className = 'SmoothScroll'; // ie9 back compat\n\n this._init();\n }\n\n /**\n * Initialize the SmoothScroll plugin\n * @private\n */\n _init() {\n const id = this.$element[0].id || GetYoDigits(6, 'smooth-scroll');\n this.$element.attr({ id });\n\n this._events();\n }\n\n /**\n * Initializes events for SmoothScroll.\n * @private\n */\n _events() {\n this._linkClickListener = this._handleLinkClick.bind(this);\n this.$element.on('click.zf.smoothScroll', this._linkClickListener);\n this.$element.on('click.zf.smoothScroll', 'a[href^=\"#\"]', this._linkClickListener);\n }\n\n /**\n * Handle the given event to smoothly scroll to the anchor pointed by the event target.\n * @param {*} e - event\n * @function\n * @private\n */\n _handleLinkClick(e) {\n // Follow the link if it does not point to an anchor.\n if (!$(e.currentTarget).is('a[href^=\"#\"]')) return;\n\n const arrival = e.currentTarget.getAttribute('href');\n\n this._inTransition = true;\n\n SmoothScroll.scrollToLoc(arrival, this.options, () => {\n this._inTransition = false;\n });\n\n e.preventDefault();\n };\n\n /**\n * Function to scroll to a given location on the page.\n * @param {String} loc - A properly formatted jQuery id selector. Example: '#foo'\n * @param {Object} options - The options to use.\n * @param {Function} callback - The callback function.\n * @static\n * @function\n */\n static scrollToLoc(loc, options = SmoothScroll.defaults, callback) {\n const $loc = $(loc);\n\n // Do nothing if target does not exist to prevent errors\n if (!$loc.length) return false;\n\n var scrollPos = Math.round($loc.offset().top - options.threshold / 2 - options.offset);\n\n $('html, body').stop(true).animate(\n { scrollTop: scrollPos },\n options.animationDuration,\n options.animationEasing,\n () => {\n if (typeof callback === 'function'){\n callback();\n }\n }\n );\n }\n\n /**\n * Destroys the SmoothScroll instance.\n * @function\n */\n _destroy() {\n this.$element.off('click.zf.smoothScroll', this._linkClickListener)\n this.$element.off('click.zf.smoothScroll', 'a[href^=\"#\"]', this._linkClickListener);\n }\n}\n\n/**\n * Default settings for plugin.\n */\nSmoothScroll.defaults = {\n /**\n * Amount of time, in ms, the animated scrolling should take between locations.\n * @option\n * @type {number}\n * @default 500\n */\n animationDuration: 500,\n /**\n * Animation style to use when scrolling between locations. Can be `'swing'` or `'linear'`.\n * @option\n * @type {string}\n * @default 'linear'\n * @see {@link https://api.jquery.com/animate|Jquery animate}\n */\n animationEasing: 'linear',\n /**\n * Number of pixels to use as a marker for location changes.\n * @option\n * @type {number}\n * @default 50\n */\n threshold: 50,\n /**\n * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar.\n * @option\n * @type {number}\n * @default 0\n */\n offset: 0\n}\n\nexport {SmoothScroll}\n","'use strict';\n\n\nimport $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { SmoothScroll } from './foundation.smoothScroll';\n\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Magellan module.\n * @module foundation.magellan\n * @requires foundation.smoothScroll\n * @requires foundation.util.triggers\n */\n\nclass Magellan extends Plugin {\n /**\n * Creates a new instance of Magellan.\n * @class\n * @name Magellan\n * @fires Magellan#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Magellan.defaults, this.$element.data(), options);\n this.className = 'Magellan'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n this.calcPoints();\n }\n\n /**\n * Initializes the Magellan plugin and calls functions to get equalizer functioning on load.\n * @private\n */\n _init() {\n var id = this.$element[0].id || GetYoDigits(6, 'magellan');\n var _this = this;\n this.$targets = $('[data-magellan-target]');\n this.$links = this.$element.find('a');\n this.$element.attr({\n 'data-resize': id,\n 'data-scroll': id,\n 'id': id\n });\n this.$active = $();\n this.scrollPos = parseInt(window.pageYOffset, 10);\n\n this._events();\n }\n\n /**\n * Calculates an array of pixel values that are the demarcation lines between locations on the page.\n * Can be invoked if new elements are added or the size of a location changes.\n * @function\n */\n calcPoints() {\n var _this = this,\n body = document.body,\n html = document.documentElement;\n\n this.points = [];\n this.winHeight = Math.round(Math.max(window.innerHeight, html.clientHeight));\n this.docHeight = Math.round(Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight));\n\n this.$targets.each(function(){\n var $tar = $(this),\n pt = Math.round($tar.offset().top - _this.options.threshold);\n $tar.targetPoint = pt;\n _this.points.push(pt);\n });\n }\n\n /**\n * Initializes events for Magellan.\n * @private\n */\n _events() {\n var _this = this;\n\n $(window).one('load', function(){\n if(_this.options.deepLinking){\n if(location.hash){\n _this.scrollToLoc(location.hash);\n }\n }\n _this.calcPoints();\n _this._updateActive();\n });\n\n _this.onLoadListener = onLoad($(window), function () {\n _this.$element\n .on({\n 'resizeme.zf.trigger': _this.reflow.bind(_this),\n 'scrollme.zf.trigger': _this._updateActive.bind(_this)\n })\n .on('click.zf.magellan', 'a[href^=\"#\"]', function (e) {\n e.preventDefault();\n var arrival = this.getAttribute('href');\n _this.scrollToLoc(arrival);\n });\n });\n\n this._deepLinkScroll = function(e) {\n if(_this.options.deepLinking) {\n _this.scrollToLoc(window.location.hash);\n }\n };\n\n $(window).on('hashchange', this._deepLinkScroll);\n }\n\n /**\n * Function to scroll to a given location on the page.\n * @param {String} loc - a properly formatted jQuery id selector. Example: '#foo'\n * @function\n */\n scrollToLoc(loc) {\n this._inTransition = true;\n var _this = this;\n\n var options = {\n animationEasing: this.options.animationEasing,\n animationDuration: this.options.animationDuration,\n threshold: this.options.threshold,\n offset: this.options.offset\n };\n\n SmoothScroll.scrollToLoc(loc, options, function() {\n _this._inTransition = false;\n })\n }\n\n /**\n * Calls necessary functions to update Magellan upon DOM change\n * @function\n */\n reflow() {\n this.calcPoints();\n this._updateActive();\n }\n\n /**\n * Updates the visibility of an active location link, and updates the url hash for the page, if deepLinking enabled.\n * @private\n * @function\n * @fires Magellan#update\n */\n _updateActive(/*evt, elem, scrollPos*/) {\n if(this._inTransition) return;\n\n const newScrollPos = parseInt(window.pageYOffset, 10);\n const isScrollingUp = this.scrollPos > newScrollPos;\n this.scrollPos = newScrollPos;\n\n let activeIdx;\n // Before the first point: no link\n if(newScrollPos < this.points[0]){ /* do nothing */ }\n // At the bottom of the page: last link\n else if(newScrollPos + this.winHeight === this.docHeight){ activeIdx = this.points.length - 1; }\n // Otherwhise, use the last visible link\n else{\n const visibleLinks = this.points.filter((p, i) => {\n return (p - this.options.offset - (isScrollingUp ? this.options.threshold : 0)) <= newScrollPos;\n });\n activeIdx = visibleLinks.length ? visibleLinks.length - 1 : 0;\n }\n\n // Get the new active link\n const $oldActive = this.$active;\n let activeHash = '';\n if(typeof activeIdx !== 'undefined'){\n this.$active = this.$links.filter('[href=\"#' + this.$targets.eq(activeIdx).data('magellan-target') + '\"]');\n if (this.$active.length) activeHash = this.$active[0].getAttribute('href');\n }else{\n this.$active = $();\n }\n const isNewActive = !(!this.$active.length && !$oldActive.length) && !this.$active.is($oldActive);\n const isNewHash = activeHash !== window.location.hash;\n\n // Update the active link element\n if(isNewActive) {\n $oldActive.removeClass(this.options.activeClass);\n this.$active.addClass(this.options.activeClass);\n }\n\n // Update the hash (it may have changed with the same active link)\n if(this.options.deepLinking && isNewHash){\n if(window.history.pushState){\n // Set or remove the hash (see: https://stackoverflow.com/a/5298684/4317384\n const url = activeHash ? activeHash : window.location.pathname + window.location.search;\n if(this.options.updateHistory){\n window.history.pushState({}, '', url);\n }else{\n window.history.replaceState({}, '', url);\n }\n }else{\n window.location.hash = activeHash;\n }\n }\n\n if (isNewActive) {\n /**\n * Fires when magellan is finished updating to the new active element.\n * @event Magellan#update\n */\n \tthis.$element.trigger('update.zf.magellan', [this.$active]);\n\t }\n }\n\n /**\n * Destroys an instance of Magellan and resets the url of the window.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.trigger .zf.magellan')\n .find(`.${this.options.activeClass}`).removeClass(this.options.activeClass);\n\n if(this.options.deepLinking){\n var hash = this.$active[0].getAttribute('href');\n window.location.hash.replace(hash, '');\n }\n\n $(window).off('hashchange', this._deepLinkScroll)\n if (this.onLoadListener) $(window).off(this.onLoadListener);\n }\n}\n\n/**\n * Default settings for plugin\n */\nMagellan.defaults = {\n /**\n * Amount of time, in ms, the animated scrolling should take between locations.\n * @option\n * @type {number}\n * @default 500\n */\n animationDuration: 500,\n /**\n * Animation style to use when scrolling between locations. Can be `'swing'` or `'linear'`.\n * @option\n * @type {string}\n * @default 'linear'\n * @see {@link https://api.jquery.com/animate|Jquery animate}\n */\n animationEasing: 'linear',\n /**\n * Number of pixels to use as a marker for location changes.\n * @option\n * @type {number}\n * @default 50\n */\n threshold: 50,\n /**\n * Class applied to the active locations link on the magellan container.\n * @option\n * @type {string}\n * @default 'is-active'\n */\n activeClass: 'is-active',\n /**\n * Allows the script to manipulate the url of the current page, and if supported, alter the history.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLinking: false,\n /**\n * Update the browser history with the active link, if deep linking is enabled.\n * @option\n * @type {boolean}\n * @default false\n */\n updateHistory: false,\n /**\n * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar.\n * @option\n * @type {number}\n * @default 0\n */\n offset: 0\n}\n\nexport {Magellan};\n","'use strict';\n\nimport $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, transitionend, RegExpEscape } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { MediaQuery } from './foundation.util.mediaQuery';\n\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * OffCanvas module.\n * @module foundation.offCanvas\n * @requires foundation.util.keyboard\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.triggers\n */\n\nclass OffCanvas extends Plugin {\n /**\n * Creates a new instance of an off-canvas wrapper.\n * @class\n * @name OffCanvas\n * @fires OffCanvas#init\n * @param {Object} element - jQuery object to initialize.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.className = 'OffCanvas'; // ie9 back compat\n this.$element = element;\n this.options = $.extend({}, OffCanvas.defaults, this.$element.data(), options);\n this.contentClasses = { base: [], reveal: [] };\n this.$lastTrigger = $();\n this.$triggers = $();\n this.position = 'left';\n this.$content = $();\n this.nested = !!(this.options.nested);\n this.$sticky = $();\n this.isInCanvas = false;\n\n // Defines the CSS transition/position classes of the off-canvas content container.\n $(['push', 'overlap']).each((index, val) => {\n this.contentClasses.base.push('has-transition-'+val);\n });\n $(['left', 'right', 'top', 'bottom']).each((index, val) => {\n this.contentClasses.base.push('has-position-'+val);\n this.contentClasses.reveal.push('has-reveal-'+val);\n });\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n MediaQuery._init();\n\n this._init();\n this._events();\n\n Keyboard.register('OffCanvas', {\n 'ESCAPE': 'close'\n });\n\n }\n\n /**\n * Initializes the off-canvas wrapper by adding the exit overlay (if needed).\n * @function\n * @private\n */\n _init() {\n var id = this.$element.attr('id');\n\n this.$element.attr('aria-hidden', 'true');\n\n // Find off-canvas content, either by ID (if specified), by siblings or by closest selector (fallback)\n if (this.options.contentId) {\n this.$content = $('#'+this.options.contentId);\n } else if (this.$element.siblings('[data-off-canvas-content]').length) {\n this.$content = this.$element.siblings('[data-off-canvas-content]').first();\n } else {\n this.$content = this.$element.closest('[data-off-canvas-content]').first();\n }\n\n if (!this.options.contentId) {\n // Assume that the off-canvas element is nested if it isn't a sibling of the content\n this.nested = this.$element.siblings('[data-off-canvas-content]').length === 0;\n\n } else if (this.options.contentId && this.options.nested === null) {\n // Warning if using content ID without setting the nested option\n // Once the element is nested it is required to work properly in this case\n console.warn('Remember to use the nested option if using the content ID option!');\n }\n\n if (this.nested === true) {\n // Force transition overlap if nested\n this.options.transition = 'overlap';\n // Remove appropriate classes if already assigned in markup\n this.$element.removeClass('is-transition-push');\n }\n\n this.$element.addClass(`is-transition-${this.options.transition} is-closed`);\n\n // Find triggers that affect this element and add aria-expanded to them\n this.$triggers = $(document)\n .find('[data-open=\"'+id+'\"], [data-close=\"'+id+'\"], [data-toggle=\"'+id+'\"]')\n .attr('aria-expanded', 'false')\n .attr('aria-controls', id);\n\n // Get position by checking for related CSS class\n this.position = this.$element.is('.position-left, .position-top, .position-right, .position-bottom') ? this.$element.attr('class').match(/position\\-(left|top|right|bottom)/)[1] : this.position;\n\n // Add an overlay over the content if necessary\n if (this.options.contentOverlay === true) {\n var overlay = document.createElement('div');\n var overlayPosition = $(this.$element).css(\"position\") === 'fixed' ? 'is-overlay-fixed' : 'is-overlay-absolute';\n overlay.setAttribute('class', 'js-off-canvas-overlay ' + overlayPosition);\n this.$overlay = $(overlay);\n if(overlayPosition === 'is-overlay-fixed') {\n $(this.$overlay).insertAfter(this.$element);\n } else {\n this.$content.append(this.$overlay);\n }\n }\n\n // Get the revealOn option from the class.\n var revealOnRegExp = new RegExp(RegExpEscape(this.options.revealClass) + '([^\\\\s]+)', 'g');\n var revealOnClass = revealOnRegExp.exec(this.$element[0].className);\n if (revealOnClass) {\n this.options.isRevealed = true;\n this.options.revealOn = this.options.revealOn || revealOnClass[1];\n }\n\n // Ensure the `reveal-on-*` class is set.\n if (this.options.isRevealed === true && this.options.revealOn) {\n this.$element.first().addClass(`${this.options.revealClass}${this.options.revealOn}`);\n this._setMQChecker();\n }\n\n if (this.options.transitionTime) {\n this.$element.css('transition-duration', this.options.transitionTime);\n }\n\n // Find fixed elements that should stay fixed while off-canvas is opened\n this.$sticky = this.$content.find('[data-off-canvas-sticky]');\n if (this.$sticky.length > 0 && this.options.transition === 'push') {\n // If there's at least one match force contentScroll:false because the absolute top value doesn't get recalculated on scroll\n // Limit to push transition since there's no transform scope for overlap\n this.options.contentScroll = false;\n }\n\n let inCanvasFor = this.$element.attr('class').match(/\\bin-canvas-for-(\\w+)/);\n if (inCanvasFor && inCanvasFor.length === 2) {\n // Set `inCanvasOn` option if found in-canvas-for-[BREAKPONT] CSS class\n this.options.inCanvasOn = inCanvasFor[1];\n } else if (this.options.inCanvasOn) {\n // Ensure the CSS class is set\n this.$element.addClass(`in-canvas-for-${this.options.inCanvasOn}`);\n }\n\n if (this.options.inCanvasOn) {\n this._checkInCanvas();\n }\n\n // Initally remove all transition/position CSS classes from off-canvas content container.\n this._removeContentClasses();\n }\n\n /**\n * Adds event handlers to the off-canvas wrapper and the exit overlay.\n * @function\n * @private\n */\n _events() {\n this.$element.off('.zf.trigger .zf.offCanvas').on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': this.close.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'keydown.zf.offCanvas': this._handleKeyboard.bind(this)\n });\n\n if (this.options.closeOnClick === true) {\n var $target = this.options.contentOverlay ? this.$overlay : this.$content;\n $target.on({'click.zf.offCanvas': this.close.bind(this)});\n }\n\n if (this.options.inCanvasOn) {\n $(window).on('changed.zf.mediaquery', () => {\n this._checkInCanvas();\n });\n }\n\n }\n\n /**\n * Applies event listener for elements that will reveal at certain breakpoints.\n * @private\n */\n _setMQChecker() {\n var _this = this;\n\n this.onLoadListener = onLoad($(window), function () {\n if (MediaQuery.atLeast(_this.options.revealOn)) {\n _this.reveal(true);\n }\n });\n\n $(window).on('changed.zf.mediaquery', function () {\n if (MediaQuery.atLeast(_this.options.revealOn)) {\n _this.reveal(true);\n } else {\n _this.reveal(false);\n }\n });\n }\n\n /**\n * Checks if InCanvas on current breakpoint and adjust off-canvas accordingly\n * @private\n */\n _checkInCanvas() {\n this.isInCanvas = MediaQuery.atLeast(this.options.inCanvasOn);\n if (this.isInCanvas === true) {\n this.close();\n }\n }\n\n /**\n * Removes the CSS transition/position classes of the off-canvas content container.\n * Removing the classes is important when another off-canvas gets opened that uses the same content container.\n * @param {Boolean} hasReveal - true if related off-canvas element is revealed.\n * @private\n */\n _removeContentClasses(hasReveal) {\n if (typeof hasReveal !== 'boolean') {\n this.$content.removeClass(this.contentClasses.base.join(' '));\n } else if (hasReveal === false) {\n this.$content.removeClass(`has-reveal-${this.position}`);\n }\n }\n\n /**\n * Adds the CSS transition/position classes of the off-canvas content container, based on the opening off-canvas element.\n * Beforehand any transition/position class gets removed.\n * @param {Boolean} hasReveal - true if related off-canvas element is revealed.\n * @private\n */\n _addContentClasses(hasReveal) {\n this._removeContentClasses(hasReveal);\n if (typeof hasReveal !== 'boolean') {\n this.$content.addClass(`has-transition-${this.options.transition} has-position-${this.position}`);\n } else if (hasReveal === true) {\n this.$content.addClass(`has-reveal-${this.position}`);\n }\n }\n\n /**\n * Preserves the fixed behavior of sticky elements on opening an off-canvas with push transition.\n * Since the off-canvas container has got a transform scope in such a case, it is done by calculating position absolute values.\n * @private\n */\n _fixStickyElements() {\n this.$sticky.each((_, el) => {\n const $el = $(el);\n\n // If sticky element is currently fixed, adjust its top value to match absolute position due to transform scope\n // Limit to push transition because postion:fixed works without problems for overlap (no transform scope)\n if ($el.css('position') === 'fixed') {\n\n // Save current inline styling to restore it if undoing the absolute fixing\n let topVal = parseInt($el.css('top'), 10);\n $el.data('offCanvasSticky', { top: topVal });\n\n let absoluteTopVal = $(document).scrollTop() + topVal;\n $el.css({ top: `${absoluteTopVal}px`, width: '100%', transition: 'none' });\n }\n });\n }\n\n /**\n * Restores the original fixed styling of sticky elements after having closed an off-canvas that got pseudo fixed beforehand.\n * This reverts the changes of _fixStickyElements()\n * @private\n */\n _unfixStickyElements() {\n this.$sticky.each((_, el) => {\n const $el = $(el);\n let stickyData = $el.data('offCanvasSticky');\n\n // If sticky element has got data object with prior values (meaning it was originally fixed) restore these values once off-canvas is closed\n if (typeof stickyData === 'object') {\n $el.css({ top: `${stickyData.top}px`, width: '', transition: '' })\n $el.data('offCanvasSticky', '');\n }\n });\n }\n\n /**\n * Handles the revealing/hiding the off-canvas at breakpoints, not the same as open.\n * @param {Boolean} isRevealed - true if element should be revealed.\n * @function\n */\n reveal(isRevealed) {\n if (isRevealed) {\n this.close();\n this.isRevealed = true;\n this.$element.attr('aria-hidden', 'false');\n this.$element.off('open.zf.trigger toggle.zf.trigger');\n this.$element.removeClass('is-closed');\n } else {\n this.isRevealed = false;\n this.$element.attr('aria-hidden', 'true');\n this.$element.off('open.zf.trigger toggle.zf.trigger').on({\n 'open.zf.trigger': this.open.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this)\n });\n this.$element.addClass('is-closed');\n }\n this._addContentClasses(isRevealed);\n }\n\n /**\n * Stops scrolling of the body when OffCanvas is open on mobile Safari and other troublesome browsers.\n * @function\n * @private\n */\n _stopScrolling(event) {\n return false;\n }\n\n /**\n * Tag the element given as context whether it can be scrolled up and down.\n * Used to allow or prevent it to scroll. See `_stopScrollPropagation`.\n *\n * Taken and adapted from http://stackoverflow.com/questions/16889447/prevent-full-page-scrolling-ios\n * Only really works for y, not sure how to extend to x or if we need to.\n *\n * @function\n * @private\n */\n _recordScrollable(event) {\n let elem = this; // called from event handler context with this as elem\n\n // If the element is scrollable (content overflows), then...\n if (elem.scrollHeight !== elem.clientHeight) {\n // If we're at the top, scroll down one pixel to allow scrolling up\n if (elem.scrollTop === 0) {\n elem.scrollTop = 1;\n }\n // If we're at the bottom, scroll up one pixel to allow scrolling down\n if (elem.scrollTop === elem.scrollHeight - elem.clientHeight) {\n elem.scrollTop = elem.scrollHeight - elem.clientHeight - 1;\n }\n }\n elem.allowUp = elem.scrollTop > 0;\n elem.allowDown = elem.scrollTop < (elem.scrollHeight - elem.clientHeight);\n elem.lastY = event.originalEvent.pageY;\n }\n\n /**\n * Prevent the given event propagation if the element given as context can scroll.\n * Used to preserve the element scrolling on mobile (`touchmove`) when the document\n * scrolling is prevented. See https://git.io/zf-9707.\n * @function\n * @private\n */\n _stopScrollPropagation(event) {\n let elem = this; // called from event handler context with this as elem\n let parent; // off-canvas elem if called from inner scrollbox\n let up = event.pageY < elem.lastY;\n let down = !up;\n elem.lastY = event.pageY;\n\n if((up && elem.allowUp) || (down && elem.allowDown)) {\n // It is not recommended to stop event propagation (the user cannot watch it),\n // but in this case this is the only solution we have.\n event.stopPropagation();\n\n // If elem is inner scrollbox we are scrolling the outer off-canvas down/up once the box end has been reached\n // This lets the user continue to touch move the off-canvas without the need to place the finger outside the scrollbox\n if (elem.hasAttribute('data-off-canvas-scrollbox')) {\n parent = elem.closest('[data-off-canvas], [data-off-canvas-scrollbox-outer]');\n if (elem.scrollTop <= 1 && parent.scrollTop > 0) {\n parent.scrollTop--;\n } else if (elem.scrollTop >= elem.scrollHeight - elem.clientHeight - 1 && parent.scrollTop < parent.scrollHeight - parent.clientHeight) {\n parent.scrollTop++;\n }\n }\n\n } else {\n event.preventDefault();\n }\n }\n\n /**\n * Opens the off-canvas menu.\n * @function\n * @param {Object} event - Event object passed from listener.\n * @param {jQuery} trigger - element that triggered the off-canvas to open.\n * @fires OffCanvas#opened\n * @todo also trigger 'open' event?\n */\n open(event, trigger) {\n if (this.$element.hasClass('is-open') || this.isRevealed || this.isInCanvas) { return; }\n var _this = this;\n\n if (trigger) {\n this.$lastTrigger = trigger;\n }\n\n if (this.options.forceTo === 'top') {\n window.scrollTo(0, 0);\n } else if (this.options.forceTo === 'bottom') {\n window.scrollTo(0,document.body.scrollHeight);\n }\n\n if (this.options.transitionTime && this.options.transition !== 'overlap') {\n this.$element.siblings('[data-off-canvas-content]').css('transition-duration', this.options.transitionTime);\n } else {\n this.$element.siblings('[data-off-canvas-content]').css('transition-duration', '');\n }\n\n this.$element.addClass('is-open').removeClass('is-closed');\n\n this.$triggers.attr('aria-expanded', 'true');\n this.$element.attr('aria-hidden', 'false');\n\n this.$content.addClass('is-open-' + this.position);\n\n // If `contentScroll` is set to false, add class and disable scrolling on touch devices.\n if (this.options.contentScroll === false) {\n $('body').addClass('is-off-canvas-open').on('touchmove', this._stopScrolling);\n this.$element.on('touchstart', this._recordScrollable);\n this.$element.on('touchmove', this._stopScrollPropagation);\n this.$element.on('touchstart', '[data-off-canvas-scrollbox]', this._recordScrollable);\n this.$element.on('touchmove', '[data-off-canvas-scrollbox]', this._stopScrollPropagation);\n }\n\n if (this.options.contentOverlay === true) {\n this.$overlay.addClass('is-visible');\n }\n\n if (this.options.closeOnClick === true && this.options.contentOverlay === true) {\n this.$overlay.addClass('is-closable');\n }\n\n if (this.options.autoFocus === true) {\n this.$element.one(transitionend(this.$element), function() {\n if (!_this.$element.hasClass('is-open')) {\n return; // exit if prematurely closed\n }\n var canvasFocus = _this.$element.find('[data-autofocus]');\n if (canvasFocus.length) {\n canvasFocus.eq(0).focus();\n } else {\n _this.$element.find('a, button').eq(0).focus();\n }\n });\n }\n\n if (this.options.trapFocus === true) {\n this.$content.attr('tabindex', '-1');\n Keyboard.trapFocus(this.$element);\n }\n\n if (this.options.transition === 'push') {\n this._fixStickyElements();\n }\n\n this._addContentClasses();\n\n /**\n * Fires when the off-canvas menu opens.\n * @event OffCanvas#opened\n */\n this.$element.trigger('opened.zf.offCanvas');\n\n /**\n * Fires when the off-canvas menu open transition is done.\n * @event OffCanvas#openedEnd\n */\n this.$element.one(transitionend(this.$element), () => {\n this.$element.trigger('openedEnd.zf.offCanvas');\n });\n }\n\n /**\n * Closes the off-canvas menu.\n * @function\n * @param {Function} cb - optional cb to fire after closure.\n * @fires OffCanvas#close\n * @fires OffCanvas#closed\n */\n close(cb) {\n if (!this.$element.hasClass('is-open') || this.isRevealed) { return; }\n\n /**\n * Fires when the off-canvas menu closes.\n * @event OffCanvas#close\n */\n this.$element.trigger('close.zf.offCanvas');\n\n var _this = this;\n\n this.$element.removeClass('is-open');\n\n this.$element.attr('aria-hidden', 'true');\n\n this.$content.removeClass('is-open-left is-open-top is-open-right is-open-bottom');\n\n if (this.options.contentOverlay === true) {\n this.$overlay.removeClass('is-visible');\n }\n\n if (this.options.closeOnClick === true && this.options.contentOverlay === true) {\n this.$overlay.removeClass('is-closable');\n }\n\n this.$triggers.attr('aria-expanded', 'false');\n\n\n // Listen to transitionEnd: add class, re-enable scrolling and release focus when done.\n this.$element.one(transitionend(this.$element), (e) => {\n\n this.$element.addClass('is-closed');\n this._removeContentClasses();\n\n if (this.options.transition === 'push') {\n this._unfixStickyElements();\n }\n\n // If `contentScroll` is set to false, remove class and re-enable scrolling on touch devices.\n if (this.options.contentScroll === false) {\n $('body').removeClass('is-off-canvas-open').off('touchmove', this._stopScrolling);\n this.$element.off('touchstart', this._recordScrollable);\n this.$element.off('touchmove', this._stopScrollPropagation);\n this.$element.off('touchstart', '[data-off-canvas-scrollbox]', this._recordScrollable);\n this.$element.off('touchmove', '[data-off-canvas-scrollbox]', this._stopScrollPropagation);\n }\n\n if (this.options.trapFocus === true) {\n this.$content.removeAttr('tabindex');\n Keyboard.releaseFocus(this.$element);\n }\n\n /**\n * Fires when the off-canvas menu close transition is done.\n * @event OffCanvas#closed\n */\n this.$element.trigger('closed.zf.offCanvas');\n });\n }\n\n /**\n * Toggles the off-canvas menu open or closed.\n * @function\n * @param {Object} event - Event object passed from listener.\n * @param {jQuery} trigger - element that triggered the off-canvas to open.\n */\n toggle(event, trigger) {\n if (this.$element.hasClass('is-open')) {\n this.close(event, trigger);\n }\n else {\n this.open(event, trigger);\n }\n }\n\n /**\n * Handles keyboard input when detected. When the escape key is pressed, the off-canvas menu closes, and focus is restored to the element that opened the menu.\n * @function\n * @private\n */\n _handleKeyboard(e) {\n Keyboard.handleKey(e, 'OffCanvas', {\n close: () => {\n this.close();\n this.$lastTrigger.focus();\n return true;\n },\n handled: () => {\n e.preventDefault();\n }\n });\n }\n\n /**\n * Destroys the OffCanvas plugin.\n * @function\n */\n _destroy() {\n this.close();\n this.$element.off('.zf.trigger .zf.offCanvas');\n this.$overlay.off('.zf.offCanvas');\n if (this.onLoadListener) $(window).off(this.onLoadListener);\n }\n}\n\nOffCanvas.defaults = {\n /**\n * Allow the user to click outside of the menu to close it.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n\n /**\n * Adds an overlay on top of `[data-off-canvas-content]`.\n * @option\n * @type {boolean}\n * @default true\n */\n contentOverlay: true,\n\n /**\n * Target an off-canvas content container by ID that may be placed anywhere. If null the closest content container will be taken.\n * @option\n * @type {?string}\n * @default null\n */\n contentId: null,\n\n /**\n * Define the off-canvas element is nested in an off-canvas content. This is required when using the contentId option for a nested element.\n * @option\n * @type {boolean}\n * @default null\n */\n nested: null,\n\n /**\n * Enable/disable scrolling of the main content when an off canvas panel is open.\n * @option\n * @type {boolean}\n * @default true\n */\n contentScroll: true,\n\n /**\n * Amount of time the open and close transition requires, including the appropriate milliseconds (`ms`) or seconds (`s`) unit (e.g. `500ms`, `.75s`) If none selected, pulls from body style.\n * @option\n * @type {string}\n * @default null\n */\n transitionTime: null,\n\n /**\n * Type of transition for the OffCanvas menu. Options are 'push', 'detached' or 'slide'.\n * @option\n * @type {string}\n * @default push\n */\n transition: 'push',\n\n /**\n * Force the page to scroll to top or bottom on open.\n * @option\n * @type {?string}\n * @default null\n */\n forceTo: null,\n\n /**\n * Allow the OffCanvas to remain open for certain breakpoints.\n * @option\n * @type {boolean}\n * @default false\n */\n isRevealed: false,\n\n /**\n * Breakpoint at which to reveal. JS will use a RegExp to target standard classes, if changing classnames, pass your class with the `revealClass` option.\n * @option\n * @type {?string}\n * @default null\n */\n revealOn: null,\n\n /**\n * Breakpoint at which the off-canvas gets moved into canvas content and acts as regular page element.\n * @option\n * @type {?string}\n * @default null\n */\n inCanvasOn: null,\n\n /**\n * Force focus to the offcanvas on open. If true, will focus the opening trigger on close.\n * @option\n * @type {boolean}\n * @default true\n */\n autoFocus: true,\n\n /**\n * Class used to force an OffCanvas to remain open. Foundation defaults for this are `reveal-for-large` & `reveal-for-medium`.\n * @option\n * @type {string}\n * @default reveal-for-\n * @todo improve the regex testing for this.\n */\n revealClass: 'reveal-for-',\n\n /**\n * Triggers optional focus trapping when opening an OffCanvas. Sets tabindex of [data-off-canvas-content] to -1 for accessibility purposes.\n * @option\n * @type {boolean}\n * @default false\n */\n trapFocus: false\n}\n\nexport {OffCanvas};\n","'use strict';\n\nimport $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Motion } from './foundation.util.motion';\nimport { Timer } from './foundation.util.timer';\nimport { onImagesLoaded } from './foundation.util.imageLoader';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\nimport { Touch } from './foundation.util.touch'\n\n\n/**\n * Orbit module.\n * @module foundation.orbit\n * @requires foundation.util.keyboard\n * @requires foundation.util.motion\n * @requires foundation.util.timer\n * @requires foundation.util.imageLoader\n * @requires foundation.util.touch\n */\n\nclass Orbit extends Plugin {\n /**\n * Creates a new instance of an orbit carousel.\n * @class\n * @name Orbit\n * @param {jQuery} element - jQuery object to make into an Orbit Carousel.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options){\n this.$element = element;\n this.options = $.extend({}, Orbit.defaults, this.$element.data(), options);\n this.className = 'Orbit'; // ie9 back compat\n\n Touch.init($); // Touch init is idempotent, we just need to make sure it's initialied.\n\n this._init();\n\n Keyboard.register('Orbit', {\n 'ltr': {\n 'ARROW_RIGHT': 'next',\n 'ARROW_LEFT': 'previous'\n },\n 'rtl': {\n 'ARROW_LEFT': 'next',\n 'ARROW_RIGHT': 'previous'\n }\n });\n }\n\n /**\n * Initializes the plugin by creating jQuery collections, setting attributes, and starting the animation.\n * @function\n * @private\n */\n _init() {\n // @TODO: consider discussion on PR #9278 about DOM pollution by changeSlide\n this._reset();\n\n this.$wrapper = this.$element.find(`.${this.options.containerClass}`);\n this.$slides = this.$element.find(`.${this.options.slideClass}`);\n\n var $images = this.$element.find('img'),\n initActive = this.$slides.filter('.is-active'),\n id = this.$element[0].id || GetYoDigits(6, 'orbit');\n\n this.$element.attr({\n 'data-resize': id,\n 'id': id\n });\n\n if (!initActive.length) {\n this.$slides.eq(0).addClass('is-active');\n }\n\n if (!this.options.useMUI) {\n this.$slides.addClass('no-motionui');\n }\n\n if ($images.length) {\n onImagesLoaded($images, this._prepareForOrbit.bind(this));\n } else {\n this._prepareForOrbit();//hehe\n }\n\n if (this.options.bullets) {\n this._loadBullets();\n }\n\n this._events();\n\n if (this.options.autoPlay && this.$slides.length > 1) {\n this.geoSync();\n }\n\n if (this.options.accessible) { // allow wrapper to be focusable to enable arrow navigation\n this.$wrapper.attr('tabindex', 0);\n }\n }\n\n /**\n * Creates a jQuery collection of bullets, if they are being used.\n * @function\n * @private\n */\n _loadBullets() {\n this.$bullets = this.$element.find(`.${this.options.boxOfBullets}`).find('button');\n }\n\n /**\n * Sets a `timer` object on the orbit, and starts the counter for the next slide.\n * @function\n */\n geoSync() {\n var _this = this;\n this.timer = new Timer(\n this.$element,\n {\n duration: this.options.timerDelay,\n infinite: false\n },\n function() {\n _this.changeSlide(true);\n });\n this.timer.start();\n }\n\n /**\n * Sets wrapper and slide heights for the orbit.\n * @function\n * @private\n */\n _prepareForOrbit() {\n var _this = this;\n this._setWrapperHeight();\n }\n\n /**\n * Calulates the height of each slide in the collection, and uses the tallest one for the wrapper height.\n * @function\n * @private\n * @param {Function} cb - a callback function to fire when complete.\n */\n _setWrapperHeight(cb) {//rewrite this to `for` loop\n var max = 0, temp, counter = 0, _this = this;\n\n this.$slides.each(function() {\n temp = this.getBoundingClientRect().height;\n $(this).attr('data-slide', counter);\n\n // hide all slides but the active one\n if (!/mui/g.test($(this)[0].className) && _this.$slides.filter('.is-active')[0] !== _this.$slides.eq(counter)[0]) {\n $(this).css({'display': 'none'});\n }\n max = temp > max ? temp : max;\n counter++;\n });\n\n if (counter === this.$slides.length) {\n this.$wrapper.css({'height': max}); //only change the wrapper height property once.\n if(cb) {cb(max);} //fire callback with max height dimension.\n }\n }\n\n /**\n * Sets the max-height of each slide.\n * @function\n * @private\n */\n _setSlideHeight(height) {\n this.$slides.each(function() {\n $(this).css('max-height', height);\n });\n }\n\n /**\n * Adds event listeners to basically everything within the element.\n * @function\n * @private\n */\n _events() {\n var _this = this;\n\n //***************************************\n //**Now using custom event - thanks to:**\n //** Yohai Ararat of Toronto **\n //***************************************\n //\n this.$element.off('.resizeme.zf.trigger').on({\n 'resizeme.zf.trigger': this._prepareForOrbit.bind(this)\n })\n if (this.$slides.length > 1) {\n\n if (this.options.swipe) {\n this.$slides.off('swipeleft.zf.orbit swiperight.zf.orbit')\n .on('swipeleft.zf.orbit', function(e){\n e.preventDefault();\n _this.changeSlide(true);\n }).on('swiperight.zf.orbit', function(e){\n e.preventDefault();\n _this.changeSlide(false);\n });\n }\n //***************************************\n\n if (this.options.autoPlay) {\n this.$slides.on('click.zf.orbit', function() {\n _this.$element.data('clickedOn', _this.$element.data('clickedOn') ? false : true);\n _this.timer[_this.$element.data('clickedOn') ? 'pause' : 'start']();\n });\n\n if (this.options.pauseOnHover) {\n this.$element.on('mouseenter.zf.orbit', function() {\n _this.timer.pause();\n }).on('mouseleave.zf.orbit', function() {\n if (!_this.$element.data('clickedOn')) {\n _this.timer.start();\n }\n });\n }\n }\n\n if (this.options.navButtons) {\n var $controls = this.$element.find(`.${this.options.nextClass}, .${this.options.prevClass}`);\n $controls.attr('tabindex', 0)\n //also need to handle enter/return and spacebar key presses\n .on('click.zf.orbit touchend.zf.orbit', function(e){\n\t e.preventDefault();\n _this.changeSlide($(this).hasClass(_this.options.nextClass));\n });\n }\n\n if (this.options.bullets) {\n this.$bullets.on('click.zf.orbit touchend.zf.orbit', function() {\n if (/is-active/g.test(this.className)) { return false; }//if this is active, kick out of function.\n var idx = $(this).data('slide'),\n ltr = idx > _this.$slides.filter('.is-active').data('slide'),\n $slide = _this.$slides.eq(idx);\n\n _this.changeSlide(ltr, $slide, idx);\n });\n }\n\n if (this.options.accessible) {\n this.$wrapper.add(this.$bullets).on('keydown.zf.orbit', function(e) {\n // handle keyboard event with keyboard util\n Keyboard.handleKey(e, 'Orbit', {\n next: function() {\n _this.changeSlide(true);\n },\n previous: function() {\n _this.changeSlide(false);\n },\n handled: function() { // if bullet is focused, make sure focus moves\n if ($(e.target).is(_this.$bullets)) {\n _this.$bullets.filter('.is-active').focus();\n }\n }\n });\n });\n }\n }\n }\n\n /**\n * Resets Orbit so it can be reinitialized\n */\n _reset() {\n // Don't do anything if there are no slides (first run)\n if (typeof this.$slides == 'undefined') {\n return;\n }\n\n if (this.$slides.length > 1) {\n // Remove old events\n this.$element.off('.zf.orbit').find('*').off('.zf.orbit')\n\n // Restart timer if autoPlay is enabled\n if (this.options.autoPlay) {\n this.timer.restart();\n }\n\n // Reset all sliddes\n this.$slides.each(function(el) {\n $(el).removeClass('is-active is-active is-in')\n .removeAttr('aria-live')\n .hide();\n });\n\n // Show the first slide\n this.$slides.first().addClass('is-active').show();\n\n // Triggers when the slide has finished animating\n this.$element.trigger('slidechange.zf.orbit', [this.$slides.first()]);\n\n // Select first bullet if bullets are present\n if (this.options.bullets) {\n this._updateBullets(0);\n }\n }\n }\n\n /**\n * Changes the current slide to a new one.\n * @function\n * @param {Boolean} isLTR - if true the slide moves from right to left, if false the slide moves from left to right.\n * @param {jQuery} chosenSlide - the jQuery element of the slide to show next, if one is selected.\n * @param {Number} idx - the index of the new slide in its collection, if one chosen.\n * @fires Orbit#slidechange\n */\n changeSlide(isLTR, chosenSlide, idx) {\n if (!this.$slides) {return; } // Don't freak out if we're in the middle of cleanup\n var $curSlide = this.$slides.filter('.is-active').eq(0);\n\n if (/mui/g.test($curSlide[0].className)) { return false; } //if the slide is currently animating, kick out of the function\n\n var $firstSlide = this.$slides.first(),\n $lastSlide = this.$slides.last(),\n dirIn = isLTR ? 'Right' : 'Left',\n dirOut = isLTR ? 'Left' : 'Right',\n _this = this,\n $newSlide;\n\n if (!chosenSlide) { //most of the time, this will be auto played or clicked from the navButtons.\n $newSlide = isLTR ? //if wrapping enabled, check to see if there is a `next` or `prev` sibling, if not, select the first or last slide to fill in. if wrapping not enabled, attempt to select `next` or `prev`, if there's nothing there, the function will kick out on next step. CRAZY NESTED TERNARIES!!!!!\n (this.options.infiniteWrap ? $curSlide.next(`.${this.options.slideClass}`).length ? $curSlide.next(`.${this.options.slideClass}`) : $firstSlide : $curSlide.next(`.${this.options.slideClass}`))//pick next slide if moving left to right\n :\n (this.options.infiniteWrap ? $curSlide.prev(`.${this.options.slideClass}`).length ? $curSlide.prev(`.${this.options.slideClass}`) : $lastSlide : $curSlide.prev(`.${this.options.slideClass}`));//pick prev slide if moving right to left\n } else {\n $newSlide = chosenSlide;\n }\n\n if ($newSlide.length) {\n /**\n * Triggers before the next slide starts animating in and only if a next slide has been found.\n * @event Orbit#beforeslidechange\n */\n this.$element.trigger('beforeslidechange.zf.orbit', [$curSlide, $newSlide]);\n\n if (this.options.bullets) {\n idx = idx || this.$slides.index($newSlide); //grab index to update bullets\n this._updateBullets(idx);\n }\n\n if (this.options.useMUI && !this.$element.is(':hidden')) {\n Motion.animateIn(\n $newSlide.addClass('is-active'),\n this.options[`animInFrom${dirIn}`],\n function(){\n $newSlide.css({'display': 'block'}).attr('aria-live', 'polite');\n });\n\n Motion.animateOut(\n $curSlide.removeClass('is-active'),\n this.options[`animOutTo${dirOut}`],\n function(){\n $curSlide.removeAttr('aria-live');\n if(_this.options.autoPlay && !_this.timer.isPaused){\n _this.timer.restart();\n }\n //do stuff?\n });\n } else {\n $curSlide.removeClass('is-active is-in').removeAttr('aria-live').hide();\n $newSlide.addClass('is-active is-in').attr('aria-live', 'polite').show();\n if (this.options.autoPlay && !this.timer.isPaused) {\n this.timer.restart();\n }\n }\n /**\n * Triggers when the slide has finished animating in.\n * @event Orbit#slidechange\n */\n this.$element.trigger('slidechange.zf.orbit', [$newSlide]);\n }\n }\n\n /**\n * Updates the active state of the bullets, if displayed.\n * Move the descriptor of the current slide `[data-slide-active-label]` to the newly active bullet.\n * If no `[data-slide-active-label]` is set, will move the exceeding `span` element.\n *\n * @function\n * @private\n * @param {Number} idx - the index of the current slide.\n */\n _updateBullets(idx) {\n var $oldBullet = this.$bullets.filter('.is-active');\n var $othersBullets = this.$bullets.not('.is-active');\n var $newBullet = this.$bullets.eq(idx);\n\n $oldBullet.removeClass('is-active').blur();\n $newBullet.addClass('is-active');\n\n // Find the descriptor for the current slide to move it to the new slide button\n var activeStateDescriptor = $oldBullet.children('[data-slide-active-label]').last();\n\n // If not explicitely given, search for the last \"exceeding\" span element (compared to others bullets).\n if (!activeStateDescriptor.length) {\n var spans = $oldBullet.children('span');\n var spanCountInOthersBullets = $othersBullets.toArray().map(b => $(b).children('span').length);\n\n // If there is an exceeding span element, use it as current slide descriptor\n if (spanCountInOthersBullets.every(count => count < spans.length)) {\n activeStateDescriptor = spans.last();\n activeStateDescriptor.attr('data-slide-active-label', '');\n }\n }\n\n // Move the current slide descriptor to the new slide button\n if (activeStateDescriptor.length) {\n activeStateDescriptor.detach();\n $newBullet.append(activeStateDescriptor);\n }\n }\n\n /**\n * Destroys the carousel and hides the element.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.orbit').find('*').off('.zf.orbit').end().hide();\n }\n}\n\nOrbit.defaults = {\n /**\n * Tells the JS to look for and loadBullets.\n * @option\n * @type {boolean}\n * @default true\n */\n bullets: true,\n /**\n * Tells the JS to apply event listeners to nav buttons\n * @option\n * @type {boolean}\n * @default true\n */\n navButtons: true,\n /**\n * motion-ui animation class to apply\n * @option\n * @type {string}\n * @default 'slide-in-right'\n */\n animInFromRight: 'slide-in-right',\n /**\n * motion-ui animation class to apply\n * @option\n * @type {string}\n * @default 'slide-out-right'\n */\n animOutToRight: 'slide-out-right',\n /**\n * motion-ui animation class to apply\n * @option\n * @type {string}\n * @default 'slide-in-left'\n *\n */\n animInFromLeft: 'slide-in-left',\n /**\n * motion-ui animation class to apply\n * @option\n * @type {string}\n * @default 'slide-out-left'\n */\n animOutToLeft: 'slide-out-left',\n /**\n * Allows Orbit to automatically animate on page load.\n * @option\n * @type {boolean}\n * @default true\n */\n autoPlay: true,\n /**\n * Amount of time, in ms, between slide transitions\n * @option\n * @type {number}\n * @default 5000\n */\n timerDelay: 5000,\n /**\n * Allows Orbit to infinitely loop through the slides\n * @option\n * @type {boolean}\n * @default true\n */\n infiniteWrap: true,\n /**\n * Allows the Orbit slides to bind to swipe events for mobile, requires an additional util library\n * @option\n * @type {boolean}\n * @default true\n */\n swipe: true,\n /**\n * Allows the timing function to pause animation on hover.\n * @option\n * @type {boolean}\n * @default true\n */\n pauseOnHover: true,\n /**\n * Allows Orbit to bind keyboard events to the slider, to animate frames with arrow keys\n * @option\n * @type {boolean}\n * @default true\n */\n accessible: true,\n /**\n * Class applied to the container of Orbit\n * @option\n * @type {string}\n * @default 'orbit-container'\n */\n containerClass: 'orbit-container',\n /**\n * Class applied to individual slides.\n * @option\n * @type {string}\n * @default 'orbit-slide'\n */\n slideClass: 'orbit-slide',\n /**\n * Class applied to the bullet container. You're welcome.\n * @option\n * @type {string}\n * @default 'orbit-bullets'\n */\n boxOfBullets: 'orbit-bullets',\n /**\n * Class applied to the `next` navigation button.\n * @option\n * @type {string}\n * @default 'orbit-next'\n */\n nextClass: 'orbit-next',\n /**\n * Class applied to the `previous` navigation button.\n * @option\n * @type {string}\n * @default 'orbit-previous'\n */\n prevClass: 'orbit-previous',\n /**\n * Boolean to flag the js to use motion ui classes or not. Default to true for backwards compatibility.\n * @option\n * @type {boolean}\n * @default true\n */\n useMUI: true\n};\n\nexport {Orbit};\n","'use strict';\n\nimport $ from 'jquery';\n\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\nimport { DropdownMenu } from './foundation.dropdownMenu';\nimport { Drilldown } from './foundation.drilldown';\nimport { AccordionMenu } from './foundation.accordionMenu';\n\nlet MenuPlugins = {\n dropdown: {\n cssClass: 'dropdown',\n plugin: DropdownMenu\n },\n drilldown: {\n cssClass: 'drilldown',\n plugin: Drilldown\n },\n accordion: {\n cssClass: 'accordion-menu',\n plugin: AccordionMenu\n }\n};\n\n // import \"foundation.util.triggers.js\";\n\n\n/**\n * ResponsiveMenu module.\n * @module foundation.responsiveMenu\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n */\n\nclass ResponsiveMenu extends Plugin {\n /**\n * Creates a new instance of a responsive menu.\n * @class\n * @name ResponsiveMenu\n * @fires ResponsiveMenu#init\n * @param {jQuery} element - jQuery object to make into a dropdown menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = $(element);\n this.rules = this.$element.data('responsive-menu');\n this.currentMq = null;\n this.currentPlugin = null;\n this.className = 'ResponsiveMenu'; // ie9 back compat\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Menu by parsing the classes from the 'data-ResponsiveMenu' attribute on the element.\n * @function\n * @private\n */\n _init() {\n\n MediaQuery._init();\n // The first time an Interchange plugin is initialized, this.rules is converted from a string of \"classes\" to an object of rules\n if (typeof this.rules === 'string') {\n let rulesTree = {};\n\n // Parse rules from \"classes\" pulled from data attribute\n let rules = this.rules.split(' ');\n\n // Iterate through every rule found\n for (let i = 0; i < rules.length; i++) {\n let rule = rules[i].split('-');\n let ruleSize = rule.length > 1 ? rule[0] : 'small';\n let rulePlugin = rule.length > 1 ? rule[1] : rule[0];\n\n if (MenuPlugins[rulePlugin] !== null) {\n rulesTree[ruleSize] = MenuPlugins[rulePlugin];\n }\n }\n\n this.rules = rulesTree;\n }\n\n if (!$.isEmptyObject(this.rules)) {\n this._checkMediaQueries();\n }\n // Add data-mutate since children may need it.\n this.$element.attr('data-mutate', (this.$element.attr('data-mutate') || GetYoDigits(6, 'responsive-menu')));\n }\n\n /**\n * Initializes events for the Menu.\n * @function\n * @private\n */\n _events() {\n var _this = this;\n\n $(window).on('changed.zf.mediaquery', function() {\n _this._checkMediaQueries();\n });\n // $(window).on('resize.zf.ResponsiveMenu', function() {\n // _this._checkMediaQueries();\n // });\n }\n\n /**\n * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.\n * @function\n * @private\n */\n _checkMediaQueries() {\n var matchedMq, _this = this;\n // Iterate through each rule and find the last matching rule\n $.each(this.rules, function(key) {\n if (MediaQuery.atLeast(key)) {\n matchedMq = key;\n }\n });\n\n // No match? No dice\n if (!matchedMq) return;\n\n // Plugin already initialized? We good\n if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return;\n\n // Remove existing plugin-specific CSS classes\n $.each(MenuPlugins, function(key, value) {\n _this.$element.removeClass(value.cssClass);\n });\n\n // Add the CSS class for the new plugin\n this.$element.addClass(this.rules[matchedMq].cssClass);\n\n // Create an instance of the new plugin\n if (this.currentPlugin) this.currentPlugin.destroy();\n this.currentPlugin = new this.rules[matchedMq].plugin(this.$element, {});\n }\n\n /**\n * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.\n * @function\n */\n _destroy() {\n this.currentPlugin.destroy();\n $(window).off('.zf.ResponsiveMenu');\n }\n}\n\nResponsiveMenu.defaults = {};\n\nexport {ResponsiveMenu};\n","'use strict';\n\nimport $ from 'jquery';\n\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Motion } from './foundation.util.motion';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * ResponsiveToggle module.\n * @module foundation.responsiveToggle\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.motion\n */\n\nclass ResponsiveToggle extends Plugin {\n /**\n * Creates a new instance of Tab Bar.\n * @class\n * @name ResponsiveToggle\n * @fires ResponsiveToggle#init\n * @param {jQuery} element - jQuery object to attach tab bar functionality to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = $(element);\n this.options = $.extend({}, ResponsiveToggle.defaults, this.$element.data(), options);\n this.className = 'ResponsiveToggle'; // ie9 back compat\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the tab bar by finding the target element, toggling element, and running update().\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n var targetID = this.$element.data('responsive-toggle');\n if (!targetID) {\n console.error('Your tab bar needs an ID of a Menu as the value of data-tab-bar.');\n }\n\n this.$targetMenu = $(`#${targetID}`);\n this.$toggler = this.$element.find('[data-toggle]').filter(function() {\n var target = $(this).data('toggle');\n return (target === targetID || target === \"\");\n });\n this.options = $.extend({}, this.options, this.$targetMenu.data());\n\n // If they were set, parse the animation classes\n if(this.options.animate) {\n let input = this.options.animate.split(' ');\n\n this.animationIn = input[0];\n this.animationOut = input[1] || null;\n }\n\n this._update();\n }\n\n /**\n * Adds necessary event handlers for the tab bar to work.\n * @function\n * @private\n */\n _events() {\n var _this = this;\n\n this._updateMqHandler = this._update.bind(this);\n\n $(window).on('changed.zf.mediaquery', this._updateMqHandler);\n\n this.$toggler.on('click.zf.responsiveToggle', this.toggleMenu.bind(this));\n }\n\n /**\n * Checks the current media query to determine if the tab bar should be visible or hidden.\n * @function\n * @private\n */\n _update() {\n // Mobile\n if (!MediaQuery.atLeast(this.options.hideFor)) {\n this.$element.show();\n this.$targetMenu.hide();\n }\n\n // Desktop\n else {\n this.$element.hide();\n this.$targetMenu.show();\n }\n }\n\n /**\n * Toggles the element attached to the tab bar. The toggle only happens if the screen is small enough to allow it.\n * @function\n * @fires ResponsiveToggle#toggled\n */\n toggleMenu() {\n if (!MediaQuery.atLeast(this.options.hideFor)) {\n /**\n * Fires when the element attached to the tab bar toggles.\n * @event ResponsiveToggle#toggled\n */\n if(this.options.animate) {\n if (this.$targetMenu.is(':hidden')) {\n Motion.animateIn(this.$targetMenu, this.animationIn, () => {\n this.$element.trigger('toggled.zf.responsiveToggle');\n this.$targetMenu.find('[data-mutate]').triggerHandler('mutateme.zf.trigger');\n });\n }\n else {\n Motion.animateOut(this.$targetMenu, this.animationOut, () => {\n this.$element.trigger('toggled.zf.responsiveToggle');\n });\n }\n }\n else {\n this.$targetMenu.toggle(0);\n this.$targetMenu.find('[data-mutate]').trigger('mutateme.zf.trigger');\n this.$element.trigger('toggled.zf.responsiveToggle');\n }\n }\n };\n\n _destroy() {\n this.$element.off('.zf.responsiveToggle');\n this.$toggler.off('.zf.responsiveToggle');\n\n $(window).off('changed.zf.mediaquery', this._updateMqHandler);\n }\n}\n\nResponsiveToggle.defaults = {\n /**\n * The breakpoint after which the menu is always shown, and the tab bar is hidden.\n * @option\n * @type {string}\n * @default 'medium'\n */\n hideFor: 'medium',\n\n /**\n * To decide if the toggle should be animated or not.\n * @option\n * @type {boolean}\n * @default false\n */\n animate: false\n};\n\nexport { ResponsiveToggle };\n","'use strict';\n\nimport $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Motion } from './foundation.util.motion';\nimport { Triggers } from './foundation.util.triggers';\nimport { Touch } from './foundation.util.touch'\n\n/**\n * Reveal module.\n * @module foundation.reveal\n * @requires foundation.util.keyboard\n * @requires foundation.util.touch\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.motion if using animations\n */\n\nclass Reveal extends Plugin {\n /**\n * Creates a new instance of Reveal.\n * @class\n * @name Reveal\n * @param {jQuery} element - jQuery object to use for the modal.\n * @param {Object} options - optional parameters.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Reveal.defaults, this.$element.data(), options);\n this.className = 'Reveal'; // ie9 back compat\n this._init();\n\n // Touch and Triggers init are idempotent, just need to make sure they are initialized\n Touch.init($);\n Triggers.init($);\n\n Keyboard.register('Reveal', {\n 'ESCAPE': 'close',\n });\n }\n\n /**\n * Initializes the modal by adding the overlay and close buttons, (if selected).\n * @private\n */\n _init() {\n MediaQuery._init();\n this.id = this.$element.attr('id');\n this.isActive = false;\n this.cached = {mq: MediaQuery.current};\n\n this.$anchor = $(`[data-open=\"${this.id}\"]`).length ? $(`[data-open=\"${this.id}\"]`) : $(`[data-toggle=\"${this.id}\"]`);\n this.$anchor.attr({\n 'aria-controls': this.id,\n 'aria-haspopup': true,\n 'tabindex': 0\n });\n\n if (this.options.fullScreen || this.$element.hasClass('full')) {\n this.options.fullScreen = true;\n this.options.overlay = false;\n }\n if (this.options.overlay && !this.$overlay) {\n this.$overlay = this._makeOverlay(this.id);\n }\n\n this.$element.attr({\n 'role': 'dialog',\n 'aria-hidden': true,\n 'data-yeti-box': this.id,\n 'data-resize': this.id\n });\n\n if(this.$overlay) {\n this.$element.detach().appendTo(this.$overlay);\n } else {\n this.$element.detach().appendTo($(this.options.appendTo));\n this.$element.addClass('without-overlay');\n }\n this._events();\n if (this.options.deepLink && window.location.hash === ( `#${this.id}`)) {\n this.onLoadListener = onLoad($(window), () => this.open());\n }\n }\n\n /**\n * Creates an overlay div to display behind the modal.\n * @private\n */\n _makeOverlay() {\n var additionalOverlayClasses = '';\n\n if (this.options.additionalOverlayClasses) {\n additionalOverlayClasses = ' ' + this.options.additionalOverlayClasses;\n }\n\n return $('<div></div>')\n .addClass('reveal-overlay' + additionalOverlayClasses)\n .appendTo(this.options.appendTo);\n }\n\n /**\n * Updates position of modal\n * TODO: Figure out if we actually need to cache these values or if it doesn't matter\n * @private\n */\n _updatePosition() {\n var width = this.$element.outerWidth();\n var outerWidth = $(window).width();\n var height = this.$element.outerHeight();\n var outerHeight = $(window).height();\n var left, top = null;\n if (this.options.hOffset === 'auto') {\n left = parseInt((outerWidth - width) / 2, 10);\n } else {\n left = parseInt(this.options.hOffset, 10);\n }\n if (this.options.vOffset === 'auto') {\n if (height > outerHeight) {\n top = parseInt(Math.min(100, outerHeight / 10), 10);\n } else {\n top = parseInt((outerHeight - height) / 4, 10);\n }\n } else if (this.options.vOffset !== null) {\n top = parseInt(this.options.vOffset, 10);\n }\n\n if (top !== null) {\n this.$element.css({top: top + 'px'});\n }\n\n // only worry about left if we don't have an overlay or we have a horizontal offset,\n // otherwise we're perfectly in the middle\n if (!this.$overlay || (this.options.hOffset !== 'auto')) {\n this.$element.css({left: left + 'px'});\n this.$element.css({margin: '0px'});\n }\n\n }\n\n /**\n * Adds event handlers for the modal.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$element.on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': (event, $element) => {\n if ((event.target === _this.$element[0]) ||\n ($(event.target).parents('[data-closable]')[0] === $element)) { // only close reveal when it's explicitly called\n return this.close.apply(this);\n }\n },\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'resizeme.zf.trigger': function() {\n _this._updatePosition();\n }\n });\n\n if (this.options.closeOnClick && this.options.overlay) {\n this.$overlay.off('.zf.reveal').on('click.zf.dropdown tap.zf.dropdown', function(e) {\n if (e.target === _this.$element[0] ||\n $.contains(_this.$element[0], e.target) ||\n !$.contains(document, e.target)) {\n return;\n }\n _this.close();\n });\n }\n if (this.options.deepLink) {\n $(window).on(`hashchange.zf.reveal:${this.id}`, this._handleState.bind(this));\n }\n }\n\n /**\n * Handles modal methods on back/forward button clicks or any other event that triggers hashchange.\n * @private\n */\n _handleState(e) {\n if(window.location.hash === ( '#' + this.id) && !this.isActive){ this.open(); }\n else{ this.close(); }\n }\n\n /**\n * Disables the scroll when Reveal is shown to prevent the background from shifting\n * @param {number} scrollTop - Scroll to visually apply, window current scroll by default\n */\n _disableScroll(scrollTop) {\n scrollTop = scrollTop || $(window).scrollTop();\n if ($(document).height() > $(window).height()) {\n $(\"html\")\n .css(\"top\", -scrollTop);\n }\n }\n\n /**\n * Reenables the scroll when Reveal closes\n * @param {number} scrollTop - Scroll to restore, html \"top\" property by default (as set by `_disableScroll`)\n */\n _enableScroll(scrollTop) {\n scrollTop = scrollTop || parseInt($(\"html\").css(\"top\"));\n if ($(document).height() > $(window).height()) {\n $(\"html\")\n .css(\"top\", \"\");\n $(window).scrollTop(-scrollTop);\n }\n }\n\n\n /**\n * Opens the modal controlled by `this.$anchor`, and closes all others by default.\n * @function\n * @fires Reveal#closeme\n * @fires Reveal#open\n */\n open() {\n // either update or replace browser history\n const hash = `#${this.id}`;\n if (this.options.deepLink && window.location.hash !== hash) {\n\n if (window.history.pushState) {\n if (this.options.updateHistory) {\n window.history.pushState({}, '', hash);\n } else {\n window.history.replaceState({}, '', hash);\n }\n } else {\n window.location.hash = hash;\n }\n }\n\n // Remember anchor that opened it to set focus back later, have general anchors as fallback\n this.$activeAnchor = $(document.activeElement).is(this.$anchor) ? $(document.activeElement) : this.$anchor;\n\n this.isActive = true;\n\n // Make elements invisible, but remove display: none so we can get size and positioning\n this.$element\n .css({ 'visibility': 'hidden' })\n .show()\n .scrollTop(0);\n if (this.options.overlay) {\n this.$overlay.css({'visibility': 'hidden'}).show();\n }\n\n this._updatePosition();\n\n this.$element\n .hide()\n .css({ 'visibility': '' });\n\n if(this.$overlay) {\n this.$overlay.css({'visibility': ''}).hide();\n if(this.$element.hasClass('fast')) {\n this.$overlay.addClass('fast');\n } else if (this.$element.hasClass('slow')) {\n this.$overlay.addClass('slow');\n }\n }\n\n\n if (!this.options.multipleOpened) {\n /**\n * Fires immediately before the modal opens.\n * Closes any other modals that are currently open\n * @event Reveal#closeme\n */\n this.$element.trigger('closeme.zf.reveal', this.id);\n }\n\n if ($('.reveal:visible').length === 0) {\n this._disableScroll();\n }\n\n var _this = this;\n\n // Motion UI method of reveal\n if (this.options.animationIn) {\n function afterAnimation(){\n _this.$element\n .attr({\n 'aria-hidden': false,\n 'tabindex': -1\n })\n .focus();\n _this._addGlobalClasses();\n Keyboard.trapFocus(_this.$element);\n }\n if (this.options.overlay) {\n Motion.animateIn(this.$overlay, 'fade-in');\n }\n Motion.animateIn(this.$element, this.options.animationIn, () => {\n if(this.$element) { // protect against object having been removed\n this.focusableElements = Keyboard.findFocusable(this.$element);\n afterAnimation();\n }\n });\n }\n // jQuery method of reveal\n else {\n if (this.options.overlay) {\n this.$overlay.show(0);\n }\n this.$element.show(this.options.showDelay);\n }\n\n // handle accessibility\n this.$element\n .attr({\n 'aria-hidden': false,\n 'tabindex': -1\n })\n .focus();\n Keyboard.trapFocus(this.$element);\n\n this._addGlobalClasses();\n\n this._addGlobalListeners();\n\n /**\n * Fires when the modal has successfully opened.\n * @event Reveal#open\n */\n this.$element.trigger('open.zf.reveal');\n }\n\n /**\n * Adds classes and listeners on document required by open modals.\n *\n * The following classes are added and updated:\n * - `.is-reveal-open` - Prevents the scroll on document\n * - `.zf-has-scroll` - Displays a disabled scrollbar on document if required like if the\n * scroll was not disabled. This prevent a \"shift\" of the page content due\n * the scrollbar disappearing when the modal opens.\n *\n * @private\n */\n _addGlobalClasses() {\n const updateScrollbarClass = () => {\n $('html').toggleClass('zf-has-scroll', !!($(document).height() > $(window).height()));\n };\n\n this.$element.on('resizeme.zf.trigger.revealScrollbarListener', () => updateScrollbarClass());\n updateScrollbarClass();\n $('html').addClass('is-reveal-open');\n }\n\n /**\n * Removes classes and listeners on document that were required by open modals.\n * @private\n */\n _removeGlobalClasses() {\n this.$element.off('resizeme.zf.trigger.revealScrollbarListener');\n $('html').removeClass('is-reveal-open');\n $('html').removeClass('zf-has-scroll');\n }\n\n /**\n * Adds extra event handlers for the body and window if necessary.\n * @private\n */\n _addGlobalListeners() {\n var _this = this;\n if(!this.$element) { return; } // If we're in the middle of cleanup, don't freak out\n this.focusableElements = Keyboard.findFocusable(this.$element);\n\n if (!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen) {\n $('body').on('click.zf.dropdown tap.zf.dropdown', function(e) {\n if (e.target === _this.$element[0] ||\n $.contains(_this.$element[0], e.target) ||\n !$.contains(document, e.target)) { return; }\n _this.close();\n });\n }\n\n if (this.options.closeOnEsc) {\n $(window).on('keydown.zf.reveal', function(e) {\n Keyboard.handleKey(e, 'Reveal', {\n close: function() {\n if (_this.options.closeOnEsc) {\n _this.close();\n }\n }\n });\n });\n }\n }\n\n /**\n * Closes the modal.\n * @function\n * @fires Reveal#closed\n */\n close() {\n if (!this.isActive || !this.$element.is(':visible')) {\n return false;\n }\n var _this = this;\n\n // Motion UI method of hiding\n if (this.options.animationOut) {\n if (this.options.overlay) {\n Motion.animateOut(this.$overlay, 'fade-out');\n }\n\n Motion.animateOut(this.$element, this.options.animationOut, finishUp);\n }\n // jQuery method of hiding\n else {\n this.$element.hide(this.options.hideDelay);\n\n if (this.options.overlay) {\n this.$overlay.hide(0, finishUp);\n }\n else {\n finishUp();\n }\n }\n\n // Conditionals to remove extra event listeners added on open\n if (this.options.closeOnEsc) {\n $(window).off('keydown.zf.reveal');\n }\n\n if (!this.options.overlay && this.options.closeOnClick) {\n $('body').off('click.zf.dropdown tap.zf.dropdown');\n }\n\n this.$element.off('keydown.zf.reveal');\n\n function finishUp() {\n\n // Get the current top before the modal is closed and restore the scroll after.\n // TODO: use component properties instead of HTML properties\n // See https://github.com/foundation/foundation-sites/pull/10786\n var scrollTop = parseInt($(\"html\").css(\"top\"));\n\n if ($('.reveal:visible').length === 0) {\n _this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal\n }\n\n Keyboard.releaseFocus(_this.$element);\n\n _this.$element.attr('aria-hidden', true);\n\n if ($('.reveal:visible').length === 0) {\n _this._enableScroll(scrollTop);\n }\n\n /**\n * Fires when the modal is done closing.\n * @event Reveal#closed\n */\n _this.$element.trigger('closed.zf.reveal');\n }\n\n /**\n * Resets the modal content\n * This prevents a running video to keep going in the background\n */\n if (this.options.resetOnClose) {\n this.$element.html(this.$element.html());\n }\n\n this.isActive = false;\n // If deepLink and we did not switched to an other modal...\n if (_this.options.deepLink && window.location.hash === `#${this.id}`) {\n // Remove the history hash\n if (window.history.replaceState) {\n const urlWithoutHash = window.location.pathname + window.location.search;\n if (this.options.updateHistory) {\n window.history.pushState({}, '', urlWithoutHash); // remove the hash\n } else {\n window.history.replaceState('', document.title, urlWithoutHash);\n }\n } else {\n window.location.hash = '';\n }\n }\n\n this.$activeAnchor.focus();\n }\n\n /**\n * Toggles the open/closed state of a modal.\n * @function\n */\n toggle() {\n if (this.isActive) {\n this.close();\n } else {\n this.open();\n }\n };\n\n /**\n * Destroys an instance of a modal.\n * @function\n */\n _destroy() {\n if (this.options.overlay) {\n this.$element.appendTo($(this.options.appendTo)); // move $element outside of $overlay to prevent error unregisterPlugin()\n this.$overlay.hide().off().remove();\n }\n this.$element.hide().off();\n this.$anchor.off('.zf');\n $(window).off(`.zf.reveal:${this.id}`)\n if (this.onLoadListener) $(window).off(this.onLoadListener);\n\n if ($('.reveal:visible').length === 0) {\n this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal\n }\n };\n}\n\nReveal.defaults = {\n /**\n * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.\n * @option\n * @type {string}\n * @default ''\n */\n animationIn: '',\n /**\n * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.\n * @option\n * @type {string}\n * @default ''\n */\n animationOut: '',\n /**\n * Time, in ms, to delay the opening of a modal after a click if no animation used.\n * @option\n * @type {number}\n * @default 0\n */\n showDelay: 0,\n /**\n * Time, in ms, to delay the closing of a modal after a click if no animation used.\n * @option\n * @type {number}\n * @default 0\n */\n hideDelay: 0,\n /**\n * Allows a click on the body/overlay to close the modal.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n /**\n * Allows the modal to close if the user presses the `ESCAPE` key.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnEsc: true,\n /**\n * If true, allows multiple modals to be displayed at once.\n * @option\n * @type {boolean}\n * @default false\n */\n multipleOpened: false,\n /**\n * Distance, in pixels, the modal should push down from the top of the screen.\n * @option\n * @type {number|string}\n * @default auto\n */\n vOffset: 'auto',\n /**\n * Distance, in pixels, the modal should push in from the side of the screen.\n * @option\n * @type {number|string}\n * @default auto\n */\n hOffset: 'auto',\n /**\n * Allows the modal to be fullscreen, completely blocking out the rest of the view. JS checks for this as well.\n * @option\n * @type {boolean}\n * @default false\n */\n fullScreen: false,\n /**\n * Allows the modal to generate an overlay div, which will cover the view when modal opens.\n * @option\n * @type {boolean}\n * @default true\n */\n overlay: true,\n /**\n * Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api, otherwise, videos will continue to play in the background.\n * @option\n * @type {boolean}\n * @default false\n */\n resetOnClose: false,\n /**\n * Link the location hash to the modal.\n * Set the location hash when the modal is opened/closed, and open/close the modal when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n /**\n * If `deepLink` is enabled, update the browser history with the open modal\n * @option\n * @default false\n */\n updateHistory: false,\n /**\n * Allows the modal to append to custom div.\n * @option\n * @type {string}\n * @default \"body\"\n */\n appendTo: \"body\",\n /**\n * Allows adding additional class names to the reveal overlay.\n * @option\n * @type {string}\n * @default ''\n */\n additionalOverlayClasses: ''\n};\n\nexport {Reveal};\n","'use strict';\n\nimport $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Move } from './foundation.util.motion';\nimport { GetYoDigits, rtl as Rtl } from './foundation.core.utils';\n\nimport { Plugin } from './foundation.core.plugin';\n\nimport { Touch } from './foundation.util.touch';\n\nimport { Triggers } from './foundation.util.triggers';\n/**\n * Slider module.\n * @module foundation.slider\n * @requires foundation.util.motion\n * @requires foundation.util.triggers\n * @requires foundation.util.keyboard\n * @requires foundation.util.touch\n */\n\nclass Slider extends Plugin {\n /**\n * Creates a new instance of a slider control.\n * @class\n * @name Slider\n * @param {jQuery} element - jQuery object to make into a slider control.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Slider.defaults, this.$element.data(), options);\n this.className = 'Slider'; // ie9 back compat\n\n // Touch and Triggers inits are idempotent, we just need to make sure it's initialied.\n Touch.init($);\n Triggers.init($);\n\n this._init();\n\n Keyboard.register('Slider', {\n 'ltr': {\n 'ARROW_RIGHT': 'increase',\n 'ARROW_UP': 'increase',\n 'ARROW_DOWN': 'decrease',\n 'ARROW_LEFT': 'decrease',\n 'SHIFT_ARROW_RIGHT': 'increase_fast',\n 'SHIFT_ARROW_UP': 'increase_fast',\n 'SHIFT_ARROW_DOWN': 'decrease_fast',\n 'SHIFT_ARROW_LEFT': 'decrease_fast',\n 'HOME': 'min',\n 'END': 'max'\n },\n 'rtl': {\n 'ARROW_LEFT': 'increase',\n 'ARROW_RIGHT': 'decrease',\n 'SHIFT_ARROW_LEFT': 'increase_fast',\n 'SHIFT_ARROW_RIGHT': 'decrease_fast'\n }\n });\n }\n\n /**\n * Initilizes the plugin by reading/setting attributes, creating collections and setting the initial position of the handle(s).\n * @function\n * @private\n */\n _init() {\n this.inputs = this.$element.find('input');\n this.handles = this.$element.find('[data-slider-handle]');\n\n this.$handle = this.handles.eq(0);\n this.$input = this.inputs.length ? this.inputs.eq(0) : $(`#${this.$handle.attr('aria-controls')}`);\n this.$fill = this.$element.find('[data-slider-fill]').css(this.options.vertical ? 'height' : 'width', 0);\n\n var _this = this;\n if (this.options.disabled || this.$element.hasClass(this.options.disabledClass)) {\n this.options.disabled = true;\n this.$element.addClass(this.options.disabledClass);\n }\n if (!this.inputs.length) {\n this.inputs = $().add(this.$input);\n this.options.binding = true;\n }\n\n this._setInitAttr(0);\n\n if (this.handles[1]) {\n this.options.doubleSided = true;\n this.$handle2 = this.handles.eq(1);\n this.$input2 = this.inputs.length > 1 ? this.inputs.eq(1) : $(`#${this.$handle2.attr('aria-controls')}`);\n\n if (!this.inputs[1]) {\n this.inputs = this.inputs.add(this.$input2);\n }\n\n // this.$handle.triggerHandler('click.zf.slider');\n this._setInitAttr(1);\n }\n\n // Set handle positions\n this.setHandles();\n\n this._events();\n }\n\n setHandles() {\n if(this.handles[1]) {\n this._setHandlePos(this.$handle, this.inputs.eq(0).val(), () => {\n this._setHandlePos(this.$handle2, this.inputs.eq(1).val());\n });\n } else {\n this._setHandlePos(this.$handle, this.inputs.eq(0).val());\n }\n }\n\n _reflow() {\n this.setHandles();\n }\n /**\n * @function\n * @private\n * @param {Number} value - floating point (the value) to be transformed using to a relative position on the slider (the inverse of _value)\n */\n _pctOfBar(value) {\n var pctOfBar = percent(value - this.options.start, this.options.end - this.options.start)\n\n switch(this.options.positionValueFunction) {\n case \"pow\":\n pctOfBar = this._logTransform(pctOfBar);\n break;\n case \"log\":\n pctOfBar = this._powTransform(pctOfBar);\n break;\n }\n\n return pctOfBar.toFixed(2)\n }\n\n /**\n * @function\n * @private\n * @param {Number} pctOfBar - floating point, the relative position of the slider (typically between 0-1) to be transformed to a value\n */\n _value(pctOfBar) {\n switch(this.options.positionValueFunction) {\n case \"pow\":\n pctOfBar = this._powTransform(pctOfBar);\n break;\n case \"log\":\n pctOfBar = this._logTransform(pctOfBar);\n break;\n }\n\n var value\n if (this.options.vertical) {\n // linear interpolation which is working with negative values for start\n // https://math.stackexchange.com/a/1019084\n value = parseFloat(this.options.end) + pctOfBar * (this.options.start - this.options.end)\n } else {\n value = (this.options.end - this.options.start) * pctOfBar + parseFloat(this.options.start);\n }\n\n return value\n }\n\n /**\n * @function\n * @private\n * @param {Number} value - floating point (typically between 0-1) to be transformed using the log function\n */\n _logTransform(value) {\n return baseLog(this.options.nonLinearBase, ((value*(this.options.nonLinearBase-1))+1))\n }\n\n /**\n * @function\n * @private\n * @param {Number} value - floating point (typically between 0-1) to be transformed using the power function\n */\n _powTransform(value) {\n return (Math.pow(this.options.nonLinearBase, value) - 1) / (this.options.nonLinearBase - 1)\n }\n\n /**\n * Sets the position of the selected handle and fill bar.\n * @function\n * @private\n * @param {jQuery} $hndl - the selected handle to move.\n * @param {Number} location - floating point between the start and end values of the slider bar.\n * @param {Function} cb - callback function to fire on completion.\n * @fires Slider#moved\n * @fires Slider#changed\n */\n _setHandlePos($hndl, location, cb) {\n // don't move if the slider has been disabled since its initialization\n if (this.$element.hasClass(this.options.disabledClass)) {\n return;\n }\n //might need to alter that slightly for bars that will have odd number selections.\n location = parseFloat(location);//on input change events, convert string to number...grumble.\n\n // prevent slider from running out of bounds, if value exceeds the limits set through options, override the value to min/max\n if (location < this.options.start) { location = this.options.start; }\n else if (location > this.options.end) { location = this.options.end; }\n\n var isDbl = this.options.doubleSided;\n\n if (isDbl) { //this block is to prevent 2 handles from crossing eachother. Could/should be improved.\n if (this.handles.index($hndl) === 0) {\n var h2Val = parseFloat(this.$handle2.attr('aria-valuenow'));\n location = location >= h2Val ? h2Val - this.options.step : location;\n } else {\n var h1Val = parseFloat(this.$handle.attr('aria-valuenow'));\n location = location <= h1Val ? h1Val + this.options.step : location;\n }\n }\n\n var _this = this,\n vert = this.options.vertical,\n hOrW = vert ? 'height' : 'width',\n lOrT = vert ? 'top' : 'left',\n handleDim = $hndl[0].getBoundingClientRect()[hOrW],\n elemDim = this.$element[0].getBoundingClientRect()[hOrW],\n //percentage of bar min/max value based on click or drag point\n pctOfBar = this._pctOfBar(location),\n //number of actual pixels to shift the handle, based on the percentage obtained above\n pxToMove = (elemDim - handleDim) * pctOfBar,\n //percentage of bar to shift the handle\n movement = (percent(pxToMove, elemDim) * 100).toFixed(this.options.decimal);\n //fixing the decimal value for the location number, is passed to other methods as a fixed floating-point value\n location = parseFloat(location.toFixed(this.options.decimal));\n // declare empty object for css adjustments, only used with 2 handled-sliders\n var css = {};\n\n this._setValues($hndl, location);\n\n // TODO update to calculate based on values set to respective inputs??\n if (isDbl) {\n var isLeftHndl = this.handles.index($hndl) === 0,\n //empty variable, will be used for min-height/width for fill bar\n dim,\n //percentage w/h of the handle compared to the slider bar\n handlePct = ~~(percent(handleDim, elemDim) * 100);\n //if left handle, the math is slightly different than if it's the right handle, and the left/top property needs to be changed for the fill bar\n if (isLeftHndl) {\n //left or top percentage value to apply to the fill bar.\n css[lOrT] = `${movement}%`;\n //calculate the new min-height/width for the fill bar.\n dim = parseFloat(this.$handle2[0].style[lOrT]) - movement + handlePct;\n //this callback is necessary to prevent errors and allow the proper placement and initialization of a 2-handled slider\n //plus, it means we don't care if 'dim' isNaN on init, it won't be in the future.\n if (cb && typeof cb === 'function') { cb(); }//this is only needed for the initialization of 2 handled sliders\n } else {\n //just caching the value of the left/bottom handle's left/top property\n var handlePos = parseFloat(this.$handle[0].style[lOrT]);\n //calculate the new min-height/width for the fill bar. Use isNaN to prevent false positives for numbers <= 0\n //based on the percentage of movement of the handle being manipulated, less the opposing handle's left/top position, plus the percentage w/h of the handle itself\n dim = movement - (isNaN(handlePos) ? (this.options.initialStart - this.options.start)/((this.options.end-this.options.start)/100) : handlePos) + handlePct;\n }\n // assign the min-height/width to our css object\n css[`min-${hOrW}`] = `${dim}%`;\n }\n\n this.$element.one('finished.zf.animate', function() {\n /**\n * Fires when the handle is done moving.\n * @event Slider#moved\n */\n _this.$element.trigger('moved.zf.slider', [$hndl]);\n });\n\n //because we don't know exactly how the handle will be moved, check the amount of time it should take to move.\n var moveTime = this.$element.data('dragging') ? 1000/60 : this.options.moveTime;\n\n Move(moveTime, $hndl, function() {\n // adjusting the left/top property of the handle, based on the percentage calculated above\n // if movement isNaN, that is because the slider is hidden and we cannot determine handle width,\n // fall back to next best guess.\n if (isNaN(movement)) {\n $hndl.css(lOrT, `${pctOfBar * 100}%`);\n }\n else {\n $hndl.css(lOrT, `${movement}%`);\n }\n\n if (!_this.options.doubleSided) {\n //if single-handled, a simple method to expand the fill bar\n _this.$fill.css(hOrW, `${pctOfBar * 100}%`);\n } else {\n //otherwise, use the css object we created above\n _this.$fill.css(css);\n }\n });\n\n\n /**\n * Fires when the value has not been change for a given time.\n * @event Slider#changed\n */\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.$element.trigger('changed.zf.slider', [$hndl]);\n }, _this.options.changedDelay);\n }\n\n /**\n * Sets the initial attribute for the slider element.\n * @function\n * @private\n * @param {Number} idx - index of the current handle/input to use.\n */\n _setInitAttr(idx) {\n var initVal = (idx === 0 ? this.options.initialStart : this.options.initialEnd)\n var id = this.inputs.eq(idx).attr('id') || GetYoDigits(6, 'slider');\n this.inputs.eq(idx).attr({\n 'id': id,\n 'max': this.options.end,\n 'min': this.options.start,\n 'step': this.options.step\n });\n this.inputs.eq(idx).val(initVal);\n this.handles.eq(idx).attr({\n 'role': 'slider',\n 'aria-controls': id,\n 'aria-valuemax': this.options.end,\n 'aria-valuemin': this.options.start,\n 'aria-valuenow': initVal,\n 'aria-orientation': this.options.vertical ? 'vertical' : 'horizontal',\n 'tabindex': 0\n });\n }\n\n /**\n * Sets the input and `aria-valuenow` values for the slider element.\n * @function\n * @private\n * @param {jQuery} $handle - the currently selected handle.\n * @param {Number} val - floating point of the new value.\n */\n _setValues($handle, val) {\n var idx = this.options.doubleSided ? this.handles.index($handle) : 0;\n this.inputs.eq(idx).val(val);\n $handle.attr('aria-valuenow', val);\n }\n\n /**\n * Handles events on the slider element.\n * Calculates the new location of the current handle.\n * If there are two handles and the bar was clicked, it determines which handle to move.\n * @function\n * @private\n * @param {Object} e - the `event` object passed from the listener.\n * @param {jQuery} $handle - the current handle to calculate for, if selected.\n * @param {Number} val - floating point number for the new value of the slider.\n * TODO clean this up, there's a lot of repeated code between this and the _setHandlePos fn.\n */\n _handleEvent(e, $handle, val) {\n var value, hasVal;\n if (!val) {//click or drag events\n e.preventDefault();\n var _this = this,\n vertical = this.options.vertical,\n param = vertical ? 'height' : 'width',\n direction = vertical ? 'top' : 'left',\n eventOffset = vertical ? e.pageY : e.pageX,\n barDim = this.$element[0].getBoundingClientRect()[param],\n windowScroll = vertical ? $(window).scrollTop() : $(window).scrollLeft();\n\n var elemOffset = this.$element.offset()[direction];\n\n // touch events emulated by the touch util give position relative to screen, add window.scroll to event coordinates...\n // best way to guess this is simulated is if clientY == pageY\n if (e.clientY === e.pageY) { eventOffset = eventOffset + windowScroll; }\n var eventFromBar = eventOffset - elemOffset;\n var barXY;\n if (eventFromBar < 0) {\n barXY = 0;\n } else if (eventFromBar > barDim) {\n barXY = barDim;\n } else {\n barXY = eventFromBar;\n }\n var offsetPct = percent(barXY, barDim);\n\n value = this._value(offsetPct);\n\n // turn everything around for RTL, yay math!\n if (Rtl() && !this.options.vertical) {value = this.options.end - value;}\n\n value = _this._adjustValue(null, value);\n //boolean flag for the setHandlePos fn, specifically for vertical sliders\n hasVal = false;\n\n if (!$handle) {//figure out which handle it is, pass it to the next function.\n var firstHndlPos = absPosition(this.$handle, direction, barXY, param),\n secndHndlPos = absPosition(this.$handle2, direction, barXY, param);\n $handle = firstHndlPos <= secndHndlPos ? this.$handle : this.$handle2;\n }\n\n } else {//change event on input\n value = this._adjustValue(null, val);\n hasVal = true;\n }\n\n this._setHandlePos($handle, value);\n }\n\n /**\n * Adjustes value for handle in regard to step value. returns adjusted value\n * @function\n * @private\n * @param {jQuery} $handle - the selected handle.\n * @param {Number} value - value to adjust. used if $handle is falsy\n */\n _adjustValue($handle, value) {\n var val,\n step = this.options.step,\n div = parseFloat(step/2),\n left, prev_val, next_val;\n if (!!$handle) {\n val = parseFloat($handle.attr('aria-valuenow'));\n }\n else {\n val = value;\n }\n if (val >= 0) {\n left = val % step;\n } else {\n left = step + (val % step);\n }\n prev_val = val - left;\n next_val = prev_val + step;\n if (left === 0) {\n return val;\n }\n val = val >= prev_val + div ? next_val : prev_val;\n return val;\n }\n\n /**\n * Adds event listeners to the slider elements.\n * @function\n * @private\n */\n _events() {\n this._eventsForHandle(this.$handle);\n if(this.handles[1]) {\n this._eventsForHandle(this.$handle2);\n }\n }\n\n\n /**\n * Adds event listeners a particular handle\n * @function\n * @private\n * @param {jQuery} $handle - the current handle to apply listeners to.\n */\n _eventsForHandle($handle) {\n var _this = this,\n curHandle;\n\n const handleChangeEvent = function(e) {\n const idx = _this.inputs.index($(this));\n _this._handleEvent(e, _this.handles.eq(idx), $(this).val());\n };\n\n // IE only triggers the change event when the input loses focus which strictly follows the HTML specification\n // listen for the enter key and trigger a change\n // @see https://html.spec.whatwg.org/multipage/input.html#common-input-element-events\n this.inputs.off('keyup.zf.slider').on('keyup.zf.slider', function (e) {\n if(e.keyCode == 13) handleChangeEvent.call(this, e);\n });\n\n this.inputs.off('change.zf.slider').on('change.zf.slider', handleChangeEvent);\n\n if (this.options.clickSelect) {\n this.$element.off('click.zf.slider').on('click.zf.slider', function(e) {\n if (_this.$element.data('dragging')) { return false; }\n\n if (!$(e.target).is('[data-slider-handle]')) {\n if (_this.options.doubleSided) {\n _this._handleEvent(e);\n } else {\n _this._handleEvent(e, _this.$handle);\n }\n }\n });\n }\n\n if (this.options.draggable) {\n this.handles.addTouch();\n\n var $body = $('body');\n $handle\n .off('mousedown.zf.slider')\n .on('mousedown.zf.slider', function(e) {\n $handle.addClass('is-dragging');\n _this.$fill.addClass('is-dragging');//\n _this.$element.data('dragging', true);\n\n curHandle = $(e.currentTarget);\n\n $body.on('mousemove.zf.slider', function(e) {\n e.preventDefault();\n _this._handleEvent(e, curHandle);\n\n }).on('mouseup.zf.slider', function(e) {\n _this._handleEvent(e, curHandle);\n\n $handle.removeClass('is-dragging');\n _this.$fill.removeClass('is-dragging');\n _this.$element.data('dragging', false);\n\n $body.off('mousemove.zf.slider mouseup.zf.slider');\n });\n })\n // prevent events triggered by touch\n .on('selectstart.zf.slider touchmove.zf.slider', function(e) {\n e.preventDefault();\n });\n }\n\n $handle.off('keydown.zf.slider').on('keydown.zf.slider', function(e) {\n var _$handle = $(this),\n idx = _this.options.doubleSided ? _this.handles.index(_$handle) : 0,\n oldValue = parseFloat(_this.inputs.eq(idx).val()),\n newValue;\n\n // handle keyboard event with keyboard util\n Keyboard.handleKey(e, 'Slider', {\n decrease: function() {\n newValue = oldValue - _this.options.step;\n },\n increase: function() {\n newValue = oldValue + _this.options.step;\n },\n decrease_fast: function() {\n newValue = oldValue - _this.options.step * 10;\n },\n increase_fast: function() {\n newValue = oldValue + _this.options.step * 10;\n },\n min: function() {\n newValue = _this.options.start;\n },\n max: function() {\n newValue = _this.options.end;\n },\n handled: function() { // only set handle pos when event was handled specially\n e.preventDefault();\n _this._setHandlePos(_$handle, newValue);\n }\n });\n /*if (newValue) { // if pressed key has special function, update value\n e.preventDefault();\n _this._setHandlePos(_$handle, newValue);\n }*/\n });\n }\n\n /**\n * Destroys the slider plugin.\n */\n _destroy() {\n this.handles.off('.zf.slider');\n this.inputs.off('.zf.slider');\n this.$element.off('.zf.slider');\n\n clearTimeout(this.timeout);\n }\n}\n\nSlider.defaults = {\n /**\n * Minimum value for the slider scale.\n * @option\n * @type {number}\n * @default 0\n */\n start: 0,\n /**\n * Maximum value for the slider scale.\n * @option\n * @type {number}\n * @default 100\n */\n end: 100,\n /**\n * Minimum value change per change event.\n * @option\n * @type {number}\n * @default 1\n */\n step: 1,\n /**\n * Value at which the handle/input *(left handle/first input)* should be set to on initialization.\n * @option\n * @type {number}\n * @default 0\n */\n initialStart: 0,\n /**\n * Value at which the right handle/second input should be set to on initialization.\n * @option\n * @type {number}\n * @default 100\n */\n initialEnd: 100,\n /**\n * Allows the input to be located outside the container and visible. Set to by the JS\n * @option\n * @type {boolean}\n * @default false\n */\n binding: false,\n /**\n * Allows the user to click/tap on the slider bar to select a value.\n * @option\n * @type {boolean}\n * @default true\n */\n clickSelect: true,\n /**\n * Set to true and use the `vertical` class to change alignment to vertical.\n * @option\n * @type {boolean}\n * @default false\n */\n vertical: false,\n /**\n * Allows the user to drag the slider handle(s) to select a value.\n * @option\n * @type {boolean}\n * @default true\n */\n draggable: true,\n /**\n * Disables the slider and prevents event listeners from being applied. Double checked by JS with `disabledClass`.\n * @option\n * @type {boolean}\n * @default false\n */\n disabled: false,\n /**\n * Allows the use of two handles. Double checked by the JS. Changes some logic handling.\n * @option\n * @type {boolean}\n * @default false\n */\n doubleSided: false,\n /**\n * Potential future feature.\n */\n // steps: 100,\n /**\n * Number of decimal places the plugin should go to for floating point precision.\n * @option\n * @type {number}\n * @default 2\n */\n decimal: 2,\n /**\n * Time delay for dragged elements.\n */\n // dragDelay: 0,\n /**\n * Time, in ms, to animate the movement of a slider handle if user clicks/taps on the bar. Needs to be manually set if updating the transition time in the Sass settings.\n * @option\n * @type {number}\n * @default 200\n */\n moveTime: 200,//update this if changing the transition time in the sass\n /**\n * Class applied to disabled sliders.\n * @option\n * @type {string}\n * @default 'disabled'\n */\n disabledClass: 'disabled',\n /**\n * Will invert the default layout for a vertical<span data-tooltip title=\"who would do this???\"> </span>slider.\n * @option\n * @type {boolean}\n * @default false\n */\n invertVertical: false,\n /**\n * Milliseconds before the `changed.zf-slider` event is triggered after value change.\n * @option\n * @type {number}\n * @default 500\n */\n changedDelay: 500,\n /**\n * Basevalue for non-linear sliders\n * @option\n * @type {number}\n * @default 5\n */\n nonLinearBase: 5,\n /**\n * Basevalue for non-linear sliders, possible values are: `'linear'`, `'pow'` & `'log'`. Pow and Log use the nonLinearBase setting.\n * @option\n * @type {string}\n * @default 'linear'\n */\n positionValueFunction: 'linear',\n};\n\nfunction percent(frac, num) {\n return (frac / num);\n}\nfunction absPosition($handle, dir, clickPos, param) {\n return Math.abs(($handle.position()[dir] + ($handle[param]() / 2)) - clickPos);\n}\nfunction baseLog(base, value) {\n return Math.log(value)/Math.log(base)\n}\n\nexport {Slider};\n","'use strict';\n\nimport $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Sticky module.\n * @module foundation.sticky\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n */\n\nclass Sticky extends Plugin {\n /**\n * Creates a new instance of a sticky thing.\n * @class\n * @name Sticky\n * @param {jQuery} element - jQuery object to make sticky.\n * @param {Object} options - options object passed when creating the element programmatically.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Sticky.defaults, this.$element.data(), options);\n this.className = 'Sticky'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n }\n\n /**\n * Initializes the sticky element by adding classes, getting/setting dimensions, breakpoints and attributes\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n\n var $parent = this.$element.parent('[data-sticky-container]'),\n id = this.$element[0].id || GetYoDigits(6, 'sticky'),\n _this = this;\n\n if($parent.length){\n this.$container = $parent;\n } else {\n this.wasWrapped = true;\n this.$element.wrap(this.options.container);\n this.$container = this.$element.parent();\n }\n this.$container.addClass(this.options.containerClass);\n\n this.$element.addClass(this.options.stickyClass).attr({ 'data-resize': id, 'data-mutate': id });\n if (this.options.anchor !== '') {\n $('#' + _this.options.anchor).attr({ 'data-mutate': id });\n }\n\n this.scrollCount = this.options.checkEvery;\n this.isStuck = false;\n this.onLoadListener = onLoad($(window), function () {\n //We calculate the container height to have correct values for anchor points offset calculation.\n _this.containerHeight = _this.$element.css(\"display\") == \"none\" ? 0 : _this.$element[0].getBoundingClientRect().height;\n _this.$container.css('height', _this.containerHeight);\n _this.elemHeight = _this.containerHeight;\n if (_this.options.anchor !== '') {\n _this.$anchor = $('#' + _this.options.anchor);\n } else {\n _this._parsePoints();\n }\n\n _this._setSizes(function () {\n var scroll = window.pageYOffset;\n _this._calc(false, scroll);\n //Unstick the element will ensure that proper classes are set.\n if (!_this.isStuck) {\n _this._removeSticky((scroll >= _this.topPoint) ? false : true);\n }\n });\n _this._events(id.split('-').reverse().join('-'));\n });\n }\n\n /**\n * If using multiple elements as anchors, calculates the top and bottom pixel values the sticky thing should stick and unstick on.\n * @function\n * @private\n */\n _parsePoints() {\n var top = this.options.topAnchor == \"\" ? 1 : this.options.topAnchor,\n btm = this.options.btmAnchor== \"\" ? document.documentElement.scrollHeight : this.options.btmAnchor,\n pts = [top, btm],\n breaks = {};\n for (var i = 0, len = pts.length; i < len && pts[i]; i++) {\n var pt;\n if (typeof pts[i] === 'number') {\n pt = pts[i];\n } else {\n var place = pts[i].split(':'),\n anchor = $(`#${place[0]}`);\n\n pt = anchor.offset().top;\n if (place[1] && place[1].toLowerCase() === 'bottom') {\n pt += anchor[0].getBoundingClientRect().height;\n }\n }\n breaks[i] = pt;\n }\n\n\n this.points = breaks;\n return;\n }\n\n /**\n * Adds event handlers for the scrolling element.\n * @private\n * @param {String} id - pseudo-random id for unique scroll event listener.\n */\n _events(id) {\n var _this = this,\n scrollListener = this.scrollListener = `scroll.zf.${id}`;\n if (this.isOn) { return; }\n if (this.canStick) {\n this.isOn = true;\n $(window).off(scrollListener)\n .on(scrollListener, function(e) {\n if (_this.scrollCount === 0) {\n _this.scrollCount = _this.options.checkEvery;\n _this._setSizes(function() {\n _this._calc(false, window.pageYOffset);\n });\n } else {\n _this.scrollCount--;\n _this._calc(false, window.pageYOffset);\n }\n });\n }\n\n this.$element.off('resizeme.zf.trigger')\n .on('resizeme.zf.trigger', function(e, el) {\n _this._eventsHandler(id);\n });\n\n this.$element.on('mutateme.zf.trigger', function (e, el) {\n _this._eventsHandler(id);\n });\n\n if(this.$anchor) {\n this.$anchor.on('mutateme.zf.trigger', function (e, el) {\n _this._eventsHandler(id);\n });\n }\n }\n\n /**\n * Handler for events.\n * @private\n * @param {String} id - pseudo-random id for unique scroll event listener.\n */\n _eventsHandler(id) {\n var _this = this,\n scrollListener = this.scrollListener = `scroll.zf.${id}`;\n\n _this._setSizes(function() {\n _this._calc(false);\n if (_this.canStick) {\n if (!_this.isOn) {\n _this._events(id);\n }\n } else if (_this.isOn) {\n _this._pauseListeners(scrollListener);\n }\n });\n }\n\n /**\n * Removes event handlers for scroll and change events on anchor.\n * @fires Sticky#pause\n * @param {String} scrollListener - unique, namespaced scroll listener attached to `window`\n */\n _pauseListeners(scrollListener) {\n this.isOn = false;\n $(window).off(scrollListener);\n\n /**\n * Fires when the plugin is paused due to resize event shrinking the view.\n * @event Sticky#pause\n * @private\n */\n this.$element.trigger('pause.zf.sticky');\n }\n\n /**\n * Called on every `scroll` event and on `_init`\n * fires functions based on booleans and cached values\n * @param {Boolean} checkSizes - true if plugin should recalculate sizes and breakpoints.\n * @param {Number} scroll - current scroll position passed from scroll event cb function. If not passed, defaults to `window.pageYOffset`.\n */\n _calc(checkSizes, scroll) {\n if (checkSizes) { this._setSizes(); }\n\n if (!this.canStick) {\n if (this.isStuck) {\n this._removeSticky(true);\n }\n return false;\n }\n\n if (!scroll) { scroll = window.pageYOffset; }\n\n if (scroll >= this.topPoint) {\n if (scroll <= this.bottomPoint) {\n if (!this.isStuck) {\n this._setSticky();\n }\n } else {\n if (this.isStuck) {\n this._removeSticky(false);\n }\n }\n } else {\n if (this.isStuck) {\n this._removeSticky(true);\n }\n }\n }\n\n /**\n * Causes the $element to become stuck.\n * Adds `position: fixed;`, and helper classes.\n * @fires Sticky#stuckto\n * @function\n * @private\n */\n _setSticky() {\n var _this = this,\n stickTo = this.options.stickTo,\n mrgn = stickTo === 'top' ? 'marginTop' : 'marginBottom',\n notStuckTo = stickTo === 'top' ? 'bottom' : 'top',\n css = {};\n\n css[mrgn] = `${this.options[mrgn]}em`;\n css[stickTo] = 0;\n css[notStuckTo] = 'auto';\n this.isStuck = true;\n this.$element.removeClass(`is-anchored is-at-${notStuckTo}`)\n .addClass(`is-stuck is-at-${stickTo}`)\n .css(css)\n /**\n * Fires when the $element has become `position: fixed;`\n * Namespaced to `top` or `bottom`, e.g. `sticky.zf.stuckto:top`\n * @event Sticky#stuckto\n */\n .trigger(`sticky.zf.stuckto:${stickTo}`);\n this.$element.on(\"transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd\", function() {\n _this._setSizes();\n });\n }\n\n /**\n * Causes the $element to become unstuck.\n * Removes `position: fixed;`, and helper classes.\n * Adds other helper classes.\n * @param {Boolean} isTop - tells the function if the $element should anchor to the top or bottom of its $anchor element.\n * @fires Sticky#unstuckfrom\n * @private\n */\n _removeSticky(isTop) {\n var stickTo = this.options.stickTo,\n stickToTop = stickTo === 'top',\n css = {},\n anchorPt = (this.points ? this.points[1] - this.points[0] : this.anchorHeight) - this.elemHeight,\n mrgn = stickToTop ? 'marginTop' : 'marginBottom',\n topOrBottom = isTop ? 'top' : 'bottom';\n\n css[mrgn] = 0;\n\n css['bottom'] = 'auto';\n if(isTop) {\n css['top'] = 0;\n } else {\n css['top'] = anchorPt;\n }\n\n this.isStuck = false;\n this.$element.removeClass(`is-stuck is-at-${stickTo}`)\n .addClass(`is-anchored is-at-${topOrBottom}`)\n .css(css)\n /**\n * Fires when the $element has become anchored.\n * Namespaced to `top` or `bottom`, e.g. `sticky.zf.unstuckfrom:bottom`\n * @event Sticky#unstuckfrom\n */\n .trigger(`sticky.zf.unstuckfrom:${topOrBottom}`);\n }\n\n /**\n * Sets the $element and $container sizes for plugin.\n * Calls `_setBreakPoints`.\n * @param {Function} cb - optional callback function to fire on completion of `_setBreakPoints`.\n * @private\n */\n _setSizes(cb) {\n this.canStick = MediaQuery.is(this.options.stickyOn);\n if (!this.canStick) {\n if (cb && typeof cb === 'function') { cb(); }\n }\n\n var _this = this,\n newElemWidth = this.$container[0].getBoundingClientRect().width,\n comp = window.getComputedStyle(this.$container[0]),\n pdngl = parseInt(comp['padding-left'], 10),\n pdngr = parseInt(comp['padding-right'], 10);\n\n if (this.$anchor && this.$anchor.length) {\n this.anchorHeight = this.$anchor[0].getBoundingClientRect().height;\n } else {\n this._parsePoints();\n }\n\n this.$element.css({\n 'max-width': `${newElemWidth - pdngl - pdngr}px`\n });\n\n // Recalculate the height only if it is \"dynamic\"\n if (this.options.dynamicHeight || !this.containerHeight) {\n // Get the sticked element height and apply it to the container to \"hold the place\"\n var newContainerHeight = this.$element[0].getBoundingClientRect().height || this.containerHeight;\n newContainerHeight = this.$element.css(\"display\") == \"none\" ? 0 : newContainerHeight;\n this.$container.css('height', newContainerHeight);\n this.containerHeight = newContainerHeight;\n }\n this.elemHeight = this.containerHeight;\n\n if (!this.isStuck) {\n if (this.$element.hasClass('is-at-bottom')) {\n var anchorPt = (this.points ? this.points[1] - this.$container.offset().top : this.anchorHeight) - this.elemHeight;\n this.$element.css('top', anchorPt);\n }\n }\n\n this._setBreakPoints(this.containerHeight, function() {\n if (cb && typeof cb === 'function') { cb(); }\n });\n }\n\n /**\n * Sets the upper and lower breakpoints for the element to become sticky/unsticky.\n * @param {Number} elemHeight - px value for sticky.$element height, calculated by `_setSizes`.\n * @param {Function} cb - optional callback function to be called on completion.\n * @private\n */\n _setBreakPoints(elemHeight, cb) {\n if (!this.canStick) {\n if (cb && typeof cb === 'function') { cb(); }\n else { return false; }\n }\n var mTop = emCalc(this.options.marginTop),\n mBtm = emCalc(this.options.marginBottom),\n topPoint = this.points ? this.points[0] : this.$anchor.offset().top,\n bottomPoint = this.points ? this.points[1] : topPoint + this.anchorHeight,\n // topPoint = this.$anchor.offset().top || this.points[0],\n // bottomPoint = topPoint + this.anchorHeight || this.points[1],\n winHeight = window.innerHeight;\n\n if (this.options.stickTo === 'top') {\n topPoint -= mTop;\n bottomPoint -= (elemHeight + mTop);\n } else if (this.options.stickTo === 'bottom') {\n topPoint -= (winHeight - (elemHeight + mBtm));\n bottomPoint -= (winHeight - mBtm);\n } else {\n //this would be the stickTo: both option... tricky\n }\n\n this.topPoint = topPoint;\n this.bottomPoint = bottomPoint;\n\n if (cb && typeof cb === 'function') { cb(); }\n }\n\n /**\n * Destroys the current sticky element.\n * Resets the element to the top position first.\n * Removes event listeners, JS-added css properties and classes, and unwraps the $element if the JS added the $container.\n * @function\n */\n _destroy() {\n this._removeSticky(true);\n\n this.$element.removeClass(`${this.options.stickyClass} is-anchored is-at-top`)\n .css({\n height: '',\n top: '',\n bottom: '',\n 'max-width': ''\n })\n .off('resizeme.zf.trigger')\n .off('mutateme.zf.trigger');\n if (this.$anchor && this.$anchor.length) {\n this.$anchor.off('change.zf.sticky');\n }\n if (this.scrollListener) $(window).off(this.scrollListener)\n if (this.onLoadListener) $(window).off(this.onLoadListener)\n\n if (this.wasWrapped) {\n this.$element.unwrap();\n } else {\n this.$container.removeClass(this.options.containerClass)\n .css({\n height: ''\n });\n }\n }\n}\n\nSticky.defaults = {\n /**\n * Customizable container template. Add your own classes for styling and sizing.\n * @option\n * @type {string}\n * @default '&lt;div data-sticky-container&gt;&lt;/div&gt;'\n */\n container: '<div data-sticky-container></div>',\n /**\n * Location in the view the element sticks to. Can be `'top'` or `'bottom'`.\n * @option\n * @type {string}\n * @default 'top'\n */\n stickTo: 'top',\n /**\n * If anchored to a single element, the id of that element.\n * @option\n * @type {string}\n * @default ''\n */\n anchor: '',\n /**\n * If using more than one element as anchor points, the id of the top anchor.\n * @option\n * @type {string}\n * @default ''\n */\n topAnchor: '',\n /**\n * If using more than one element as anchor points, the id of the bottom anchor.\n * @option\n * @type {string}\n * @default ''\n */\n btmAnchor: '',\n /**\n * Margin, in `em`'s to apply to the top of the element when it becomes sticky.\n * @option\n * @type {number}\n * @default 1\n */\n marginTop: 1,\n /**\n * Margin, in `em`'s to apply to the bottom of the element when it becomes sticky.\n * @option\n * @type {number}\n * @default 1\n */\n marginBottom: 1,\n /**\n * Breakpoint string that is the minimum screen size an element should become sticky.\n * @option\n * @type {string}\n * @default 'medium'\n */\n stickyOn: 'medium',\n /**\n * Class applied to sticky element, and removed on destruction. Foundation defaults to `sticky`.\n * @option\n * @type {string}\n * @default 'sticky'\n */\n stickyClass: 'sticky',\n /**\n * Class applied to sticky container. Foundation defaults to `sticky-container`.\n * @option\n * @type {string}\n * @default 'sticky-container'\n */\n containerClass: 'sticky-container',\n /**\n * If true (by default), keep the sticky container the same height as the element. Otherwise, the container height is set once and does not change.\n * @option\n * @type {boolean}\n * @default true\n */\n dynamicHeight: true,\n /**\n * Number of scroll events between the plugin's recalculating sticky points. Setting it to `0` will cause it to recalc every scroll event, setting it to `-1` will prevent recalc on scroll.\n * @option\n * @type {number}\n * @default -1\n */\n checkEvery: -1\n};\n\n/**\n * Helper function to calculate em values\n * @param Number {em} - number of em's to calculate into pixels\n */\nfunction emCalc(em) {\n return parseInt(window.getComputedStyle(document.body, null).fontSize, 10) * em;\n}\n\nexport {Sticky};\n","'use strict';\n\nimport $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { onImagesLoaded } from './foundation.util.imageLoader';\n/**\n * Tabs module.\n * @module foundation.tabs\n * @requires foundation.util.keyboard\n * @requires foundation.util.imageLoader if tabs contain images\n */\n\nclass Tabs extends Plugin {\n /**\n * Creates a new instance of tabs.\n * @class\n * @name Tabs\n * @fires Tabs#init\n * @param {jQuery} element - jQuery object to make into tabs.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Tabs.defaults, this.$element.data(), options);\n this.className = 'Tabs'; // ie9 back compat\n\n this._init();\n Keyboard.register('Tabs', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'previous',\n 'ARROW_DOWN': 'next',\n 'ARROW_LEFT': 'previous'\n // 'TAB': 'next',\n // 'SHIFT_TAB': 'previous'\n });\n }\n\n /**\n * Initializes the tabs by showing and focusing (if autoFocus=true) the preset active tab.\n * @private\n */\n _init() {\n var _this = this;\n this._isInitializing = true;\n\n this.$element.attr({'role': 'tablist'});\n this.$tabTitles = this.$element.find(`.${this.options.linkClass}`);\n this.$tabContent = $(`[data-tabs-content=\"${this.$element[0].id}\"]`);\n\n this.$tabTitles.each(function(){\n var $elem = $(this),\n $link = $elem.find('a'),\n isActive = $elem.hasClass(`${_this.options.linkActiveClass}`),\n hash = $link.attr('data-tabs-target') || $link[0].hash.slice(1),\n linkId = $link[0].id ? $link[0].id : `${hash}-label`,\n $tabContent = $(`#${hash}`);\n\n $elem.attr({'role': 'presentation'});\n\n $link.attr({\n 'role': 'tab',\n 'aria-controls': hash,\n 'aria-selected': isActive,\n 'id': linkId,\n 'tabindex': isActive ? '0' : '-1'\n });\n\n $tabContent.attr({\n 'role': 'tabpanel',\n 'aria-labelledby': linkId\n });\n\n // Save up the initial hash to return to it later when going back in history\n if (isActive) {\n _this._initialAnchor = `#${hash}`;\n }\n\n if(!isActive) {\n $tabContent.attr('aria-hidden', 'true');\n }\n\n if(isActive && _this.options.autoFocus){\n _this.onLoadListener = onLoad($(window), function() {\n $('html, body').animate({ scrollTop: $elem.offset().top }, _this.options.deepLinkSmudgeDelay, () => {\n $link.focus();\n });\n });\n }\n });\n\n if(this.options.matchHeight) {\n var $images = this.$tabContent.find('img');\n\n if ($images.length) {\n onImagesLoaded($images, this._setHeight.bind(this));\n } else {\n this._setHeight();\n }\n }\n\n // Current context-bound function to open tabs on page load or history hashchange\n this._checkDeepLink = () => {\n var anchor = window.location.hash;\n\n if (!anchor.length) {\n // If we are still initializing and there is no anchor, then there is nothing to do\n if (this._isInitializing) return;\n // Otherwise, move to the initial anchor\n if (this._initialAnchor) anchor = this._initialAnchor;\n }\n\n var anchorNoHash = anchor.indexOf('#') >= 0 ? anchor.slice(1) : anchor;\n var $anchor = anchorNoHash && $(`#${anchorNoHash}`);\n var $link = anchor && this.$element.find(`[href$=\"${anchor}\"],[data-tabs-target=\"${anchorNoHash}\"]`).first();\n // Whether the anchor element that has been found is part of this element\n var isOwnAnchor = !!($anchor.length && $link.length);\n\n if (isOwnAnchor) {\n // If there is an anchor for the hash, select it\n if ($anchor && $anchor.length && $link && $link.length) {\n this.selectTab($anchor, true);\n }\n // Otherwise, collapse everything\n else {\n this._collapse();\n }\n\n // Roll up a little to show the titles\n if (this.options.deepLinkSmudge) {\n var offset = this.$element.offset();\n $('html, body').animate({ scrollTop: offset.top }, this.options.deepLinkSmudgeDelay);\n }\n\n /**\n * Fires when the plugin has deeplinked at pageload\n * @event Tabs#deeplink\n */\n this.$element.trigger('deeplink.zf.tabs', [$link, $anchor]);\n }\n }\n\n //use browser to open a tab, if it exists in this tabset\n if (this.options.deepLink) {\n this._checkDeepLink();\n }\n\n this._events();\n\n this._isInitializing = false;\n }\n\n /**\n * Adds event handlers for items within the tabs.\n * @private\n */\n _events() {\n this._addKeyHandler();\n this._addClickHandler();\n this._setHeightMqHandler = null;\n\n if (this.options.matchHeight) {\n this._setHeightMqHandler = this._setHeight.bind(this);\n\n $(window).on('changed.zf.mediaquery', this._setHeightMqHandler);\n }\n\n if(this.options.deepLink) {\n $(window).on('hashchange', this._checkDeepLink);\n }\n }\n\n /**\n * Adds click handlers for items within the tabs.\n * @private\n */\n _addClickHandler() {\n var _this = this;\n\n this.$element\n .off('click.zf.tabs')\n .on('click.zf.tabs', `.${this.options.linkClass}`, function(e){\n e.preventDefault();\n _this._handleTabChange($(this));\n });\n }\n\n /**\n * Adds keyboard event handlers for items within the tabs.\n * @private\n */\n _addKeyHandler() {\n var _this = this;\n\n this.$tabTitles.off('keydown.zf.tabs').on('keydown.zf.tabs', function(e){\n if (e.which === 9) return;\n\n\n var $element = $(this),\n $elements = $element.parent('ul').children('li'),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n if (_this.options.wrapOnKeys) {\n $prevElement = i === 0 ? $elements.last() : $elements.eq(i-1);\n $nextElement = i === $elements.length -1 ? $elements.first() : $elements.eq(i+1);\n } else {\n $prevElement = $elements.eq(Math.max(0, i-1));\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1));\n }\n return;\n }\n });\n\n // handle keyboard event with keyboard util\n Keyboard.handleKey(e, 'Tabs', {\n open: function() {\n $element.find('[role=\"tab\"]').focus();\n _this._handleTabChange($element);\n },\n previous: function() {\n $prevElement.find('[role=\"tab\"]').focus();\n _this._handleTabChange($prevElement);\n },\n next: function() {\n $nextElement.find('[role=\"tab\"]').focus();\n _this._handleTabChange($nextElement);\n },\n handled: function() {\n e.preventDefault();\n }\n });\n });\n }\n\n /**\n * Opens the tab `$targetContent` defined by `$target`. Collapses active tab.\n * @param {jQuery} $target - Tab to open.\n * @param {boolean} historyHandled - browser has already handled a history update\n * @fires Tabs#change\n * @function\n */\n _handleTabChange($target, historyHandled) {\n\n // With `activeCollapse`, if the target is the active Tab, collapse it.\n if ($target.hasClass(`${this.options.linkActiveClass}`)) {\n if(this.options.activeCollapse) {\n this._collapse();\n }\n return;\n }\n\n var $oldTab = this.$element.\n find(`.${this.options.linkClass}.${this.options.linkActiveClass}`),\n $tabLink = $target.find('[role=\"tab\"]'),\n target = $tabLink.attr('data-tabs-target'),\n anchor = target && target.length ? `#${target}` : $tabLink[0].hash,\n $targetContent = this.$tabContent.find(anchor);\n\n //close old tab\n this._collapseTab($oldTab);\n\n //open new tab\n this._openTab($target);\n\n //either replace or update browser history\n if (this.options.deepLink && !historyHandled) {\n if (this.options.updateHistory) {\n history.pushState({}, '', anchor);\n } else {\n history.replaceState({}, '', anchor);\n }\n }\n\n /**\n * Fires when the plugin has successfully changed tabs.\n * @event Tabs#change\n */\n this.$element.trigger('change.zf.tabs', [$target, $targetContent]);\n\n //fire to children a mutation event\n $targetContent.find(\"[data-mutate]\").trigger(\"mutateme.zf.trigger\");\n }\n\n /**\n * Opens the tab `$targetContent` defined by `$target`.\n * @param {jQuery} $target - Tab to open.\n * @function\n */\n _openTab($target) {\n var $tabLink = $target.find('[role=\"tab\"]'),\n hash = $tabLink.attr('data-tabs-target') || $tabLink[0].hash.slice(1),\n $targetContent = this.$tabContent.find(`#${hash}`);\n\n $target.addClass(`${this.options.linkActiveClass}`);\n\n $tabLink.attr({\n 'aria-selected': 'true',\n 'tabindex': '0'\n });\n\n $targetContent\n .addClass(`${this.options.panelActiveClass}`).removeAttr('aria-hidden');\n }\n\n /**\n * Collapses `$targetContent` defined by `$target`.\n * @param {jQuery} $target - Tab to collapse.\n * @function\n */\n _collapseTab($target) {\n var $target_anchor = $target\n .removeClass(`${this.options.linkActiveClass}`)\n .find('[role=\"tab\"]')\n .attr({\n 'aria-selected': 'false',\n 'tabindex': -1\n });\n\n $(`#${$target_anchor.attr('aria-controls')}`)\n .removeClass(`${this.options.panelActiveClass}`)\n .attr({ 'aria-hidden': 'true' })\n }\n\n /**\n * Collapses the active Tab.\n * @fires Tabs#collapse\n * @function\n */\n _collapse() {\n var $activeTab = this.$element.find(`.${this.options.linkClass}.${this.options.linkActiveClass}`);\n\n if ($activeTab.length) {\n this._collapseTab($activeTab);\n\n /**\n * Fires when the plugin has successfully collapsed tabs.\n * @event Tabs#collapse\n */\n this.$element.trigger('collapse.zf.tabs', [$activeTab]);\n }\n }\n\n /**\n * Public method for selecting a content pane to display.\n * @param {jQuery | String} elem - jQuery object or string of the id of the pane to display.\n * @param {boolean} historyHandled - browser has already handled a history update\n * @function\n */\n selectTab(elem, historyHandled) {\n var idStr, hashIdStr;\n\n if (typeof elem === 'object') {\n idStr = elem[0].id;\n } else {\n idStr = elem;\n }\n\n if (idStr.indexOf('#') < 0) {\n hashIdStr = `#${idStr}`;\n } else {\n hashIdStr = idStr;\n idStr = idStr.slice(1);\n }\n\n var $target = this.$tabTitles.has(`[href$=\"${hashIdStr}\"],[data-tabs-target=\"${idStr}\"]`).first();\n\n this._handleTabChange($target, historyHandled);\n };\n\n /**\n * Sets the height of each panel to the height of the tallest panel.\n * If enabled in options, gets called on media query change.\n * If loading content via external source, can be called directly or with _reflow.\n * If enabled with `data-match-height=\"true\"`, tabs sets to equal height\n * @function\n * @private\n */\n _setHeight() {\n var max = 0,\n _this = this; // Lock down the `this` value for the root tabs object\n\n this.$tabContent\n .find(`.${this.options.panelClass}`)\n .css('height', '')\n .each(function() {\n\n var panel = $(this),\n isActive = panel.hasClass(`${_this.options.panelActiveClass}`); // get the options from the parent instead of trying to get them from the child\n\n if (!isActive) {\n panel.css({'visibility': 'hidden', 'display': 'block'});\n }\n\n var temp = this.getBoundingClientRect().height;\n\n if (!isActive) {\n panel.css({\n 'visibility': '',\n 'display': ''\n });\n }\n\n max = temp > max ? temp : max;\n })\n .css('height', `${max}px`);\n }\n\n /**\n * Destroys an instance of tabs.\n * @fires Tabs#destroyed\n */\n _destroy() {\n this.$element\n .find(`.${this.options.linkClass}`)\n .off('.zf.tabs').hide().end()\n .find(`.${this.options.panelClass}`)\n .hide();\n\n if (this.options.matchHeight) {\n if (this._setHeightMqHandler != null) {\n $(window).off('changed.zf.mediaquery', this._setHeightMqHandler);\n }\n }\n\n if (this.options.deepLink) {\n $(window).off('hashchange', this._checkDeepLink);\n }\n\n if (this.onLoadListener) {\n $(window).off(this.onLoadListener);\n }\n }\n}\n\nTabs.defaults = {\n /**\n * Link the location hash to the active pane.\n * Set the location hash when the active pane changes, and open the corresponding pane when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n\n /**\n * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the tab panel is visible\n * @option\n * @type {boolean}\n * @default false\n */\n deepLinkSmudge: false,\n\n /**\n * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment\n * @option\n * @type {number}\n * @default 300\n */\n deepLinkSmudgeDelay: 300,\n\n /**\n * If `deepLink` is enabled, update the browser history with the open tab\n * @option\n * @type {boolean}\n * @default false\n */\n updateHistory: false,\n\n /**\n * Allows the window to scroll to content of active pane on load.\n * Not recommended if more than one tab panel per page.\n * @option\n * @type {boolean}\n * @default false\n */\n autoFocus: false,\n\n /**\n * Allows keyboard input to 'wrap' around the tab links.\n * @option\n * @type {boolean}\n * @default true\n */\n wrapOnKeys: true,\n\n /**\n * Allows the tab content panes to match heights if set to true.\n * @option\n * @type {boolean}\n * @default false\n */\n matchHeight: false,\n\n /**\n * Allows active tabs to collapse when clicked.\n * @option\n * @type {boolean}\n * @default false\n */\n activeCollapse: false,\n\n /**\n * Class applied to `li`'s in tab link list.\n * @option\n * @type {string}\n * @default 'tabs-title'\n */\n linkClass: 'tabs-title',\n\n /**\n * Class applied to the active `li` in tab link list.\n * @option\n * @type {string}\n * @default 'is-active'\n */\n linkActiveClass: 'is-active',\n\n /**\n * Class applied to the content containers.\n * @option\n * @type {string}\n * @default 'tabs-panel'\n */\n panelClass: 'tabs-panel',\n\n /**\n * Class applied to the active content container.\n * @option\n * @type {string}\n * @default 'is-active'\n */\n panelActiveClass: 'is-active'\n};\n\nexport {Tabs};\n","'use strict';\n\nimport $ from 'jquery';\nimport { Motion } from './foundation.util.motion';\nimport { Plugin } from './foundation.core.plugin';\nimport { RegExpEscape } from './foundation.core.utils';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Toggler module.\n * @module foundation.toggler\n * @requires foundation.util.motion\n * @requires foundation.util.triggers\n */\n\nclass Toggler extends Plugin {\n /**\n * Creates a new instance of Toggler.\n * @class\n * @name Toggler\n * @fires Toggler#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Toggler.defaults, element.data(), options);\n this.className = '';\n this.className = 'Toggler'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Toggler plugin by parsing the toggle class from data-toggler, or animation classes from data-animate.\n * @function\n * @private\n */\n _init() {\n // Collect triggers to set ARIA attributes to\n var id = this.$element[0].id,\n $triggers = $(`[data-open~=\"${id}\"], [data-close~=\"${id}\"], [data-toggle~=\"${id}\"]`);\n\n var input;\n // Parse animation classes if they were set\n if (this.options.animate) {\n input = this.options.animate.split(' ');\n\n this.animationIn = input[0];\n this.animationOut = input[1] || null;\n\n // - aria-expanded: according to the element visibility.\n $triggers.attr('aria-expanded', !this.$element.is(':hidden'));\n }\n // Otherwise, parse toggle class\n else {\n input = this.options.toggler;\n if (typeof input !== 'string' || !input.length) {\n throw new Error(`The 'toogler' option containing the target class is required, got \"${input}\"`);\n }\n // Allow for a . at the beginning of the string\n this.className = input[0] === '.' ? input.slice(1) : input;\n\n // - aria-expanded: according to the elements class set.\n $triggers.attr('aria-expanded', this.$element.hasClass(this.className));\n }\n\n // - aria-controls: adding the element id to it if not already in it.\n $triggers.each((index, trigger) => {\n const $trigger = $(trigger);\n const controls = $trigger.attr('aria-controls') || '';\n\n const containsId = new RegExp(`\\\\b${RegExpEscape(id)}\\\\b`).test(controls);\n if (!containsId) $trigger.attr('aria-controls', controls ? `${controls} ${id}` : id);\n });\n }\n\n /**\n * Initializes events for the toggle trigger.\n * @function\n * @private\n */\n _events() {\n this.$element.off('toggle.zf.trigger').on('toggle.zf.trigger', this.toggle.bind(this));\n }\n\n /**\n * Toggles the target class on the target element. An event is fired from the original trigger depending on if the resultant state was \"on\" or \"off\".\n * @function\n * @fires Toggler#on\n * @fires Toggler#off\n */\n toggle() {\n this[ this.options.animate ? '_toggleAnimate' : '_toggleClass']();\n }\n\n _toggleClass() {\n this.$element.toggleClass(this.className);\n\n var isOn = this.$element.hasClass(this.className);\n if (isOn) {\n /**\n * Fires if the target element has the class after a toggle.\n * @event Toggler#on\n */\n this.$element.trigger('on.zf.toggler');\n }\n else {\n /**\n * Fires if the target element does not have the class after a toggle.\n * @event Toggler#off\n */\n this.$element.trigger('off.zf.toggler');\n }\n\n this._updateARIA(isOn);\n this.$element.find('[data-mutate]').trigger('mutateme.zf.trigger');\n }\n\n _toggleAnimate() {\n var _this = this;\n\n if (this.$element.is(':hidden')) {\n Motion.animateIn(this.$element, this.animationIn, function() {\n _this._updateARIA(true);\n this.trigger('on.zf.toggler');\n this.find('[data-mutate]').trigger('mutateme.zf.trigger');\n });\n }\n else {\n Motion.animateOut(this.$element, this.animationOut, function() {\n _this._updateARIA(false);\n this.trigger('off.zf.toggler');\n this.find('[data-mutate]').trigger('mutateme.zf.trigger');\n });\n }\n }\n\n _updateARIA(isOn) {\n var id = this.$element[0].id;\n $(`[data-open=\"${id}\"], [data-close=\"${id}\"], [data-toggle=\"${id}\"]`)\n .attr({\n 'aria-expanded': isOn ? true : false\n });\n }\n\n /**\n * Destroys the instance of Toggler on the element.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.toggler');\n }\n}\n\nToggler.defaults = {\n /**\n * Class of the element to toggle. It can be provided with or without \".\"\n * @option\n * @type {string}\n */\n toggler: undefined,\n /**\n * Tells the plugin if the element should animated when toggled.\n * @option\n * @type {boolean}\n * @default false\n */\n animate: false\n};\n\nexport {Toggler};\n","'use strict';\n\nimport $ from 'jquery';\n\nimport { GetYoDigits, ignoreMousedisappear } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Triggers } from './foundation.util.triggers';\nimport { Positionable } from './foundation.positionable';\n\n/**\n * Tooltip module.\n * @module foundation.tooltip\n * @requires foundation.util.box\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.triggers\n */\n\nclass Tooltip extends Positionable {\n /**\n * Creates a new instance of a Tooltip.\n * @class\n * @name Tooltip\n * @fires Tooltip#init\n * @param {jQuery} element - jQuery object to attach a tooltip to.\n * @param {Object} options - object to extend the default configuration.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Tooltip.defaults, this.$element.data(), options);\n this.className = 'Tooltip'; // ie9 back compat\n\n this.isActive = false;\n this.isClick = false;\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n }\n\n /**\n * Initializes the tooltip by setting the creating the tip element, adding it's text, setting private variables and setting attributes on the anchor.\n * @private\n */\n _init() {\n MediaQuery._init();\n var elemId = this.$element.attr('aria-describedby') || GetYoDigits(6, 'tooltip');\n\n this.options.tipText = this.options.tipText || this.$element.attr('title');\n this.template = this.options.template ? $(this.options.template) : this._buildTemplate(elemId);\n\n if (this.options.allowHtml) {\n this.template.appendTo(document.body)\n .html(this.options.tipText)\n .hide();\n } else {\n this.template.appendTo(document.body)\n .text(this.options.tipText)\n .hide();\n }\n\n this.$element.attr({\n 'title': '',\n 'aria-describedby': elemId,\n 'data-yeti-box': elemId,\n 'data-toggle': elemId,\n 'data-resize': elemId\n }).addClass(this.options.triggerClass);\n\n super._init();\n this._events();\n }\n\n _getDefaultPosition() {\n // handle legacy classnames\n var elementClassName = this.$element[0].className;\n if (this.$element[0] instanceof SVGElement) {\n elementClassName = elementClassName.baseVal;\n }\n var position = elementClassName.match(/\\b(top|left|right|bottom)\\b/g);\n return position ? position[0] : 'top';\n }\n\n _getDefaultAlignment() {\n return 'center';\n }\n\n _getHOffset() {\n if(this.position === 'left' || this.position === 'right') {\n return this.options.hOffset + this.options.tooltipWidth;\n } else {\n return this.options.hOffset\n }\n }\n\n _getVOffset() {\n if(this.position === 'top' || this.position === 'bottom') {\n return this.options.vOffset + this.options.tooltipHeight;\n } else {\n return this.options.vOffset\n }\n }\n\n /**\n * builds the tooltip element, adds attributes, and returns the template.\n * @private\n */\n _buildTemplate(id) {\n var templateClasses = (`${this.options.tooltipClass} ${this.options.templateClasses}`).trim();\n var $template = $('<div></div>').addClass(templateClasses).attr({\n 'role': 'tooltip',\n 'aria-hidden': true,\n 'data-is-active': false,\n 'data-is-focus': false,\n 'id': id\n });\n return $template;\n }\n\n /**\n * sets the position class of an element and recursively calls itself until there are no more possible positions to attempt, or the tooltip element is no longer colliding.\n * if the tooltip is larger than the screen width, default to full width - any user selected margin\n * @private\n */\n _setPosition() {\n super._setPosition(this.$element, this.template);\n }\n\n /**\n * reveals the tooltip, and fires an event to close any other open tooltips on the page\n * @fires Tooltip#closeme\n * @fires Tooltip#show\n * @function\n */\n show() {\n if (this.options.showOn !== 'all' && !MediaQuery.is(this.options.showOn)) {\n // console.error('The screen is too small to display this tooltip');\n return false;\n }\n\n var _this = this;\n this.template.css('visibility', 'hidden').show();\n this._setPosition();\n this.template.removeClass('top bottom left right').addClass(this.position)\n this.template.removeClass('align-top align-bottom align-left align-right align-center').addClass('align-' + this.alignment);\n\n /**\n * Fires to close all other open tooltips on the page\n * @event Closeme#tooltip\n */\n this.$element.trigger('closeme.zf.tooltip', this.template.attr('id'));\n\n\n this.template.attr({\n 'data-is-active': true,\n 'aria-hidden': false\n });\n _this.isActive = true;\n // console.log(this.template);\n this.template.stop().hide().css('visibility', '').fadeIn(this.options.fadeInDuration, function() {\n //maybe do stuff?\n });\n /**\n * Fires when the tooltip is shown\n * @event Tooltip#show\n */\n this.$element.trigger('show.zf.tooltip');\n }\n\n /**\n * Hides the current tooltip, and resets the positioning class if it was changed due to collision\n * @fires Tooltip#hide\n * @function\n */\n hide() {\n // console.log('hiding', this.$element.data('yeti-box'));\n var _this = this;\n this.template.stop().attr({\n 'aria-hidden': true,\n 'data-is-active': false\n }).fadeOut(this.options.fadeOutDuration, function() {\n _this.isActive = false;\n _this.isClick = false;\n });\n /**\n * fires when the tooltip is hidden\n * @event Tooltip#hide\n */\n this.$element.trigger('hide.zf.tooltip');\n }\n\n /**\n * adds event listeners for the tooltip and its anchor\n * TODO combine some of the listeners like focus and mouseenter, etc.\n * @private\n */\n _events() {\n const _this = this;\n const hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined');\n const $template = this.template;\n var isFocus = false;\n\n // `disableForTouch: Fully disable the tooltip on touch devices\n if (hasTouch && this.options.disableForTouch) return;\n\n if (!this.options.disableHover) {\n this.$element\n .on('mouseenter.zf.tooltip', function(e) {\n if (!_this.isActive) {\n _this.timeout = setTimeout(function() {\n _this.show();\n }, _this.options.hoverDelay);\n }\n })\n .on('mouseleave.zf.tooltip', ignoreMousedisappear(function(e) {\n clearTimeout(_this.timeout);\n if (!isFocus || (_this.isClick && !_this.options.clickOpen)) {\n _this.hide();\n }\n }));\n }\n\n if (hasTouch) {\n this.$element\n .on('tap.zf.tooltip touchend.zf.tooltip', function (e) {\n _this.isActive ? _this.hide() : _this.show();\n });\n }\n\n if (this.options.clickOpen) {\n this.$element.on('mousedown.zf.tooltip', function(e) {\n if (_this.isClick) {\n //_this.hide();\n // _this.isClick = false;\n } else {\n _this.isClick = true;\n if ((_this.options.disableHover || !_this.$element.attr('tabindex')) && !_this.isActive) {\n _this.show();\n }\n }\n });\n } else {\n this.$element.on('mousedown.zf.tooltip', function(e) {\n _this.isClick = true;\n });\n }\n\n this.$element.on({\n // 'toggle.zf.trigger': this.toggle.bind(this),\n // 'close.zf.trigger': this.hide.bind(this)\n 'close.zf.trigger': this.hide.bind(this)\n });\n\n this.$element\n .on('focus.zf.tooltip', function(e) {\n isFocus = true;\n if (_this.isClick) {\n // If we're not showing open on clicks, we need to pretend a click-launched focus isn't\n // a real focus, otherwise on hover and come back we get bad behavior\n if(!_this.options.clickOpen) { isFocus = false; }\n return false;\n } else {\n _this.show();\n }\n })\n\n .on('focusout.zf.tooltip', function(e) {\n isFocus = false;\n _this.isClick = false;\n _this.hide();\n })\n\n .on('resizeme.zf.trigger', function() {\n if (_this.isActive) {\n _this._setPosition();\n }\n });\n }\n\n /**\n * adds a toggle method, in addition to the static show() & hide() functions\n * @function\n */\n toggle() {\n if (this.isActive) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Destroys an instance of tooltip, removes template element from the view.\n * @function\n */\n _destroy() {\n this.$element.attr('title', this.template.text())\n .off('.zf.trigger .zf.tooltip')\n .removeClass(this.options.triggerClass)\n .removeClass('top right left bottom')\n .removeAttr('aria-describedby data-disable-hover data-resize data-toggle data-tooltip data-yeti-box');\n\n this.template.remove();\n }\n}\n\nTooltip.defaults = {\n /**\n * Time, in ms, before a tooltip should open on hover.\n * @option\n * @type {number}\n * @default 200\n */\n hoverDelay: 200,\n /**\n * Time, in ms, a tooltip should take to fade into view.\n * @option\n * @type {number}\n * @default 150\n */\n fadeInDuration: 150,\n /**\n * Time, in ms, a tooltip should take to fade out of view.\n * @option\n * @type {number}\n * @default 150\n */\n fadeOutDuration: 150,\n /**\n * Disables hover events from opening the tooltip if set to true\n * @option\n * @type {boolean}\n * @default false\n */\n disableHover: false,\n /**\n * Disable the tooltip for touch devices.\n * This can be useful to make elements with a tooltip on it trigger their\n * action on the first tap instead of displaying the tooltip.\n * @option\n * @type {booelan}\n * @default false\n */\n disableForTouch: false,\n /**\n * Optional addtional classes to apply to the tooltip template on init.\n * @option\n * @type {string}\n * @default ''\n */\n templateClasses: '',\n /**\n * Non-optional class added to tooltip templates. Foundation default is 'tooltip'.\n * @option\n * @type {string}\n * @default 'tooltip'\n */\n tooltipClass: 'tooltip',\n /**\n * Class applied to the tooltip anchor element.\n * @option\n * @type {string}\n * @default 'has-tip'\n */\n triggerClass: 'has-tip',\n /**\n * Minimum breakpoint size at which to open the tooltip.\n * @option\n * @type {string}\n * @default 'small'\n */\n showOn: 'small',\n /**\n * Custom template to be used to generate markup for tooltip.\n * @option\n * @type {string}\n * @default ''\n */\n template: '',\n /**\n * Text displayed in the tooltip template on open.\n * @option\n * @type {string}\n * @default ''\n */\n tipText: '',\n touchCloseText: 'Tap to close.',\n /**\n * Allows the tooltip to remain open if triggered with a click or touch event.\n * @option\n * @type {boolean}\n * @default true\n */\n clickOpen: true,\n /**\n * Position of tooltip. Can be left, right, bottom, top, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n position: 'auto',\n /**\n * Alignment of tooltip relative to anchor. Can be left, right, bottom, top, center, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow overlap of container/window. If false, tooltip will first try to\n * position as defined by data-position and data-alignment, but reposition if\n * it would cause an overflow. @option\n * @type {boolean}\n * @default false\n */\n allowOverlap: false,\n /**\n * Allow overlap of only the bottom of the container. This is the most common\n * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n * screen but not otherwise influence or break out of the container.\n * Less common for tooltips.\n * @option\n * @type {boolean}\n * @default false\n */\n allowBottomOverlap: false,\n /**\n * Distance, in pixels, the template should push away from the anchor on the Y axis.\n * @option\n * @type {number}\n * @default 0\n */\n vOffset: 0,\n /**\n * Distance, in pixels, the template should push away from the anchor on the X axis\n * @option\n * @type {number}\n * @default 0\n */\n hOffset: 0,\n /**\n * Distance, in pixels, the template spacing auto-adjust for a vertical tooltip\n * @option\n * @type {number}\n * @default 14\n */\n tooltipHeight: 14,\n /**\n * Distance, in pixels, the template spacing auto-adjust for a horizontal tooltip\n * @option\n * @type {number}\n * @default 12\n */\n tooltipWidth: 12,\n /**\n * Allow HTML in tooltip. Warning: If you are loading user-generated content into tooltips,\n * allowing HTML may open yourself up to XSS attacks.\n * @option\n * @type {boolean}\n * @default false\n */\n allowHtml: false\n};\n\n/**\n * TODO utilize resize event trigger\n */\n\nexport {Tooltip};\n","'use strict';\n\nimport $ from 'jquery';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin }from './foundation.core.plugin';\n\nimport { Accordion } from './foundation.accordion';\nimport { Tabs } from './foundation.tabs';\n\n// The plugin matches the plugin classes with these plugin instances.\nvar MenuPlugins = {\n tabs: {\n cssClass: 'tabs',\n plugin: Tabs,\n open: (plugin, target) => plugin.selectTab(target),\n close: null /* not supported */,\n toggle: null /* not supported */,\n },\n accordion: {\n cssClass: 'accordion',\n plugin: Accordion,\n open: (plugin, target) => plugin.down($(target)),\n close: (plugin, target) => plugin.up($(target)),\n toggle: (plugin, target) => plugin.toggle($(target)),\n }\n};\n\n\n/**\n * ResponsiveAccordionTabs module.\n * @module foundation.responsiveAccordionTabs\n * @requires foundation.util.motion\n * @requires foundation.accordion\n * @requires foundation.tabs\n */\n\nclass ResponsiveAccordionTabs extends Plugin{\n constructor(element, options) {\n super(element, options);\n return this.options.reflow && this.storezfData || this;\n }\n\n /**\n * Creates a new instance of a responsive accordion tabs.\n * @class\n * @name ResponsiveAccordionTabs\n * @fires ResponsiveAccordionTabs#init\n * @param {jQuery} element - jQuery object to make into Responsive Accordion Tabs.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = $(element);\n this.$element.data('zfPluginBase', this);\n this.options = $.extend({}, ResponsiveAccordionTabs.defaults, this.$element.data(), options);\n\n this.rules = this.$element.data('responsive-accordion-tabs');\n this.currentMq = null;\n this.currentRule = null;\n this.currentPlugin = null;\n this.className = 'ResponsiveAccordionTabs'; // ie9 back compat\n if (!this.$element.attr('id')) {\n this.$element.attr('id',GetYoDigits(6, 'responsiveaccordiontabs'));\n }\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Menu by parsing the classes from the 'data-responsive-accordion-tabs' attribute on the element.\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n\n // The first time an Interchange plugin is initialized, this.rules is converted from a string of \"classes\" to an object of rules\n if (typeof this.rules === 'string') {\n let rulesTree = {};\n\n // Parse rules from \"classes\" pulled from data attribute\n let rules = this.rules.split(' ');\n\n // Iterate through every rule found\n for (let i = 0; i < rules.length; i++) {\n let rule = rules[i].split('-');\n let ruleSize = rule.length > 1 ? rule[0] : 'small';\n let rulePlugin = rule.length > 1 ? rule[1] : rule[0];\n\n if (MenuPlugins[rulePlugin] !== null) {\n rulesTree[ruleSize] = MenuPlugins[rulePlugin];\n }\n }\n\n this.rules = rulesTree;\n }\n\n this._getAllOptions();\n\n if (!$.isEmptyObject(this.rules)) {\n this._checkMediaQueries();\n }\n }\n\n _getAllOptions() {\n //get all defaults and options\n var _this = this;\n _this.allOptions = {};\n for (var key in MenuPlugins) {\n if (MenuPlugins.hasOwnProperty(key)) {\n var obj = MenuPlugins[key];\n try {\n var dummyPlugin = $('<ul></ul>');\n var tmpPlugin = new obj.plugin(dummyPlugin,_this.options);\n for (var keyKey in tmpPlugin.options) {\n if (tmpPlugin.options.hasOwnProperty(keyKey) && keyKey !== 'zfPlugin') {\n var objObj = tmpPlugin.options[keyKey];\n _this.allOptions[keyKey] = objObj;\n }\n }\n tmpPlugin.destroy();\n }\n catch(e) {\n }\n }\n }\n }\n\n /**\n * Initializes events for the Menu.\n * @function\n * @private\n */\n _events() {\n this._changedZfMediaQueryHandler = this._checkMediaQueries.bind(this);\n $(window).on('changed.zf.mediaquery', this._changedZfMediaQueryHandler);\n }\n\n /**\n * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.\n * @function\n * @private\n */\n _checkMediaQueries() {\n var matchedMq, _this = this;\n // Iterate through each rule and find the last matching rule\n $.each(this.rules, function(key) {\n if (MediaQuery.atLeast(key)) {\n matchedMq = key;\n }\n });\n\n // No match? No dice\n if (!matchedMq) return;\n\n // Plugin already initialized? We good\n if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return;\n\n // Remove existing plugin-specific CSS classes\n $.each(MenuPlugins, function(key, value) {\n _this.$element.removeClass(value.cssClass);\n });\n\n // Add the CSS class for the new plugin\n this.$element.addClass(this.rules[matchedMq].cssClass);\n\n // Create an instance of the new plugin\n if (this.currentPlugin) {\n //don't know why but on nested elements data zfPlugin get's lost\n if (!this.currentPlugin.$element.data('zfPlugin') && this.storezfData) this.currentPlugin.$element.data('zfPlugin',this.storezfData);\n this.currentPlugin.destroy();\n }\n this._handleMarkup(this.rules[matchedMq].cssClass);\n this.currentRule = this.rules[matchedMq];\n this.currentPlugin = new this.currentRule.plugin(this.$element, this.options);\n this.storezfData = this.currentPlugin.$element.data('zfPlugin');\n\n }\n\n _handleMarkup(toSet){\n var _this = this, fromString = 'accordion';\n var $panels = $('[data-tabs-content='+this.$element.attr('id')+']');\n if ($panels.length) fromString = 'tabs';\n if (fromString === toSet) {\n return;\n }\n\n var tabsTitle = _this.allOptions.linkClass?_this.allOptions.linkClass:'tabs-title';\n var tabsPanel = _this.allOptions.panelClass?_this.allOptions.panelClass:'tabs-panel';\n\n this.$element.removeAttr('role');\n var $liHeads = this.$element.children('.'+tabsTitle+',[data-accordion-item]').removeClass(tabsTitle).removeClass('accordion-item').removeAttr('data-accordion-item');\n var $liHeadsA = $liHeads.children('a').removeClass('accordion-title');\n\n if (fromString === 'tabs') {\n $panels = $panels.children('.'+tabsPanel).removeClass(tabsPanel).removeAttr('role').removeAttr('aria-hidden').removeAttr('aria-labelledby');\n $panels.children('a').removeAttr('role').removeAttr('aria-controls').removeAttr('aria-selected');\n } else {\n $panels = $liHeads.children('[data-tab-content]').removeClass('accordion-content');\n }\n\n $panels.css({display:'',visibility:''});\n $liHeads.css({display:'',visibility:''});\n if (toSet === 'accordion') {\n $panels.each(function(key,value){\n $(value).appendTo($liHeads.get(key)).addClass('accordion-content').attr('data-tab-content','').removeClass('is-active').css({height:''});\n $('[data-tabs-content='+_this.$element.attr('id')+']').after('<div id=\"tabs-placeholder-'+_this.$element.attr('id')+'\"></div>').detach();\n $liHeads.addClass('accordion-item').attr('data-accordion-item','');\n $liHeadsA.addClass('accordion-title');\n });\n } else if (toSet === 'tabs') {\n var $tabsContent = $('[data-tabs-content='+_this.$element.attr('id')+']');\n var $placeholder = $('#tabs-placeholder-'+_this.$element.attr('id'));\n if ($placeholder.length) {\n $tabsContent = $('<div class=\"tabs-content\"></div>').insertAfter($placeholder).attr('data-tabs-content',_this.$element.attr('id'));\n $placeholder.remove();\n } else {\n $tabsContent = $('<div class=\"tabs-content\"></div>').insertAfter(_this.$element).attr('data-tabs-content',_this.$element.attr('id'));\n }\n $panels.each(function(key,value){\n var tempValue = $(value).appendTo($tabsContent).addClass(tabsPanel);\n var hash = $liHeadsA.get(key).hash.slice(1);\n var id = $(value).attr('id') || GetYoDigits(6, 'accordion');\n if (hash !== id) {\n if (hash !== '') {\n $(value).attr('id',hash);\n } else {\n hash = id;\n $(value).attr('id',hash);\n $($liHeadsA.get(key)).attr('href',$($liHeadsA.get(key)).attr('href').replace('#','')+'#'+hash);\n }\n }\n var isActive = $($liHeads.get(key)).hasClass('is-active');\n if (isActive) {\n tempValue.addClass('is-active');\n }\n });\n $liHeads.addClass(tabsTitle);\n };\n }\n\n /**\n * Opens the plugin pane defined by `target`.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to open.\n * @see Accordion.down\n * @see Tabs.selectTab\n * @function\n */\n open(_target) {\n if (this.currentRule && typeof this.currentRule.open === 'function') {\n return this.currentRule.open(this.currentPlugin, ...arguments);\n }\n }\n\n /**\n * Closes the plugin pane defined by `target`. Not availaible for Tabs.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to close.\n * @see Accordion.up\n * @function\n */\n close(_target) {\n if (this.currentRule && typeof this.currentRule.close === 'function') {\n return this.currentRule.close(this.currentPlugin, ...arguments);\n }\n }\n\n /**\n * Toggles the plugin pane defined by `target`. Not availaible for Tabs.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to toggle.\n * @see Accordion.toggle\n * @function\n */\n toggle(_target) {\n if (this.currentRule && typeof this.currentRule.toggle === 'function') {\n return this.currentRule.toggle(this.currentPlugin, ...arguments);\n }\n }\n\n /**\n * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.\n * @function\n */\n _destroy() {\n if (this.currentPlugin) this.currentPlugin.destroy();\n $(window).off('changed.zf.mediaquery', this._changedZfMediaQueryHandler);\n }\n}\n\nResponsiveAccordionTabs.defaults = {};\n\nexport {ResponsiveAccordionTabs};\n","import $ from 'jquery';\n\nimport { Foundation } from '../foundation.core';\nimport * as CoreUtils from '../foundation.core.utils';\nimport { Box } from '../foundation.util.box'\nimport { onImagesLoaded } from '../foundation.util.imageLoader';\nimport { Keyboard } from '../foundation.util.keyboard';\nimport { MediaQuery } from '../foundation.util.mediaQuery';\nimport { Motion, Move } from '../foundation.util.motion';\nimport { Nest } from '../foundation.util.nest';\nimport { Timer } from '../foundation.util.timer';\nimport { Touch } from '../foundation.util.touch';\nimport { Triggers } from '../foundation.util.triggers';\nimport { Abide } from '../foundation.abide';\nimport { Accordion } from '../foundation.accordion';\nimport { AccordionMenu } from '../foundation.accordionMenu';\nimport { Drilldown } from '../foundation.drilldown';\nimport { Dropdown } from '../foundation.dropdown';\nimport { DropdownMenu } from '../foundation.dropdownMenu';\nimport { Equalizer } from '../foundation.equalizer';\nimport { Interchange } from '../foundation.interchange';\nimport { Magellan } from '../foundation.magellan';\nimport { OffCanvas } from '../foundation.offcanvas';\nimport { Orbit } from '../foundation.orbit';\nimport { ResponsiveMenu } from '../foundation.responsiveMenu';\nimport { ResponsiveToggle } from '../foundation.responsiveToggle';\nimport { Reveal } from '../foundation.reveal';\nimport { Slider } from '../foundation.slider';\nimport { SmoothScroll } from '../foundation.smoothScroll';\nimport { Sticky } from '../foundation.sticky';\nimport { Tabs } from '../foundation.tabs';\nimport { Toggler } from '../foundation.toggler';\nimport { Tooltip } from '../foundation.tooltip';\nimport { ResponsiveAccordionTabs } from '../foundation.responsiveAccordionTabs';\n\nFoundation.addToJquery($);\n\n// Add Foundation Utils to Foundation global namespace for backwards\n// compatibility.\nFoundation.rtl = CoreUtils.rtl;\nFoundation.GetYoDigits = CoreUtils.GetYoDigits;\nFoundation.transitionend = CoreUtils.transitionend;\nFoundation.RegExpEscape = CoreUtils.RegExpEscape;\nFoundation.onLoad = CoreUtils.onLoad;\n\nFoundation.Box = Box;\nFoundation.onImagesLoaded = onImagesLoaded;\nFoundation.Keyboard = Keyboard;\nFoundation.MediaQuery = MediaQuery;\nFoundation.Motion = Motion;\nFoundation.Move = Move;\nFoundation.Nest = Nest;\nFoundation.Timer = Timer;\n\n// Touch and Triggers previously were almost purely sede effect driven,\n// so no need to add it to Foundation, just init them.\nTouch.init($);\nTriggers.init($, Foundation);\nMediaQuery._init();\n\nFoundation.plugin(Abide, 'Abide');\nFoundation.plugin(Accordion, 'Accordion');\nFoundation.plugin(AccordionMenu, 'AccordionMenu');\nFoundation.plugin(Drilldown, 'Drilldown');\nFoundation.plugin(Dropdown, 'Dropdown');\nFoundation.plugin(DropdownMenu, 'DropdownMenu');\nFoundation.plugin(Equalizer, 'Equalizer');\nFoundation.plugin(Interchange, 'Interchange');\nFoundation.plugin(Magellan, 'Magellan');\nFoundation.plugin(OffCanvas, 'OffCanvas');\nFoundation.plugin(Orbit, 'Orbit');\nFoundation.plugin(ResponsiveMenu, 'ResponsiveMenu');\nFoundation.plugin(ResponsiveToggle, 'ResponsiveToggle');\nFoundation.plugin(Reveal, 'Reveal');\nFoundation.plugin(Slider, 'Slider');\nFoundation.plugin(SmoothScroll, 'SmoothScroll');\nFoundation.plugin(Sticky, 'Sticky');\nFoundation.plugin(Tabs, 'Tabs');\nFoundation.plugin(Toggler, 'Toggler');\nFoundation.plugin(Tooltip, 'Tooltip');\nFoundation.plugin(ResponsiveAccordionTabs, 'ResponsiveAccordionTabs');\n\nexport {\n Foundation,\n CoreUtils,\n Box,\n onImagesLoaded,\n Keyboard,\n MediaQuery,\n Motion,\n Nest,\n Timer,\n Touch,\n Triggers,\n Abide,\n Accordion,\n AccordionMenu,\n Drilldown,\n Dropdown,\n DropdownMenu,\n Equalizer,\n Interchange,\n Magellan,\n OffCanvas,\n Orbit,\n ResponsiveMenu,\n ResponsiveToggle,\n Reveal,\n Slider,\n SmoothScroll,\n Sticky,\n Tabs,\n Toggler,\n Tooltip,\n ResponsiveAccordionTabs\n}\n\nexport default Foundation;\n\n","/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\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","/**\n * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).\n * @version v4.3.1\n * @link https://github.com/ten1seven/what-input\n * @license MIT\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"whatInput\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"whatInput\"] = factory();\n\telse\n\t\troot[\"whatInput\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tmodule.exports = function () {\n\t /*\n\t * variables\n\t */\n\n\t // last used input type\n\t var currentInput = 'initial';\n\n\t // last used input intent\n\t var currentIntent = null;\n\n\t // cache document.documentElement\n\t var doc = document.documentElement;\n\n\t // form input types\n\t var formInputs = ['input', 'select', 'textarea'];\n\n\t var functionList = [];\n\n\t // list of modifier keys commonly used with the mouse and\n\t // can be safely ignored to prevent false keyboard detection\n\t var ignoreMap = [16, // shift\n\t 17, // control\n\t 18, // alt\n\t 91, // Windows key / left Apple cmd\n\t 93 // Windows menu / right Apple cmd\n\t ];\n\n\t // list of keys for which we change intent even for form inputs\n\t var changeIntentMap = [9 // tab\n\t ];\n\n\t // mapping of events to input types\n\t var inputMap = {\n\t keydown: 'keyboard',\n\t keyup: 'keyboard',\n\t mousedown: 'mouse',\n\t mousemove: 'mouse',\n\t MSPointerDown: 'pointer',\n\t MSPointerMove: 'pointer',\n\t pointerdown: 'pointer',\n\t pointermove: 'pointer',\n\t touchstart: 'touch'\n\t };\n\n\t // array of all used input types\n\t var inputTypes = [];\n\n\t // boolean: true if touch buffer is active\n\t var isBuffering = false;\n\n\t // boolean: true if the page is being scrolled\n\t var isScrolling = false;\n\n\t // store current mouse position\n\t var mousePos = {\n\t x: null,\n\t y: null\n\t };\n\n\t // map of IE 10 pointer events\n\t var pointerMap = {\n\t 2: 'touch',\n\t 3: 'touch', // treat pen like touch\n\t 4: 'mouse'\n\t };\n\n\t var supportsPassive = false;\n\n\t try {\n\t var opts = Object.defineProperty({}, 'passive', {\n\t get: function get() {\n\t supportsPassive = true;\n\t }\n\t });\n\n\t window.addEventListener('test', null, opts);\n\t } catch (e) {}\n\n\t /*\n\t * set up\n\t */\n\n\t var setUp = function setUp() {\n\t // add correct mouse wheel event mapping to `inputMap`\n\t inputMap[detectWheel()] = 'mouse';\n\n\t addListeners();\n\t setInput();\n\t };\n\n\t /*\n\t * events\n\t */\n\n\t var addListeners = function addListeners() {\n\t // `pointermove`, `MSPointerMove`, `mousemove` and mouse wheel event binding\n\t // can only demonstrate potential, but not actual, interaction\n\t // and are treated separately\n\t var options = supportsPassive ? { passive: true } : false;\n\n\t // pointer events (mouse, pen, touch)\n\t if (window.PointerEvent) {\n\t doc.addEventListener('pointerdown', updateInput);\n\t doc.addEventListener('pointermove', setIntent);\n\t } else if (window.MSPointerEvent) {\n\t doc.addEventListener('MSPointerDown', updateInput);\n\t doc.addEventListener('MSPointerMove', setIntent);\n\t } else {\n\t // mouse events\n\t doc.addEventListener('mousedown', updateInput);\n\t doc.addEventListener('mousemove', setIntent);\n\n\t // touch events\n\t if ('ontouchstart' in window) {\n\t doc.addEventListener('touchstart', touchBuffer, options);\n\t doc.addEventListener('touchend', touchBuffer);\n\t }\n\t }\n\n\t // mouse wheel\n\t doc.addEventListener(detectWheel(), setIntent, options);\n\n\t // keyboard events\n\t doc.addEventListener('keydown', updateInput);\n\t doc.addEventListener('keyup', updateInput);\n\t };\n\n\t // checks conditions before updating new input\n\t var updateInput = function updateInput(event) {\n\t // only execute if the touch buffer timer isn't running\n\t if (!isBuffering) {\n\t var eventKey = event.which;\n\t var value = inputMap[event.type];\n\t if (value === 'pointer') value = pointerType(event);\n\n\t if (currentInput !== value || currentIntent !== value) {\n\t var activeElem = document.activeElement;\n\t var activeInput = false;\n\t var notFormInput = activeElem && activeElem.nodeName && formInputs.indexOf(activeElem.nodeName.toLowerCase()) === -1;\n\n\t if (notFormInput || changeIntentMap.indexOf(eventKey) !== -1) {\n\t activeInput = true;\n\t }\n\n\t if (value === 'touch' ||\n\t // ignore mouse modifier keys\n\t value === 'mouse' ||\n\t // don't switch if the current element is a form input\n\t value === 'keyboard' && eventKey && activeInput && ignoreMap.indexOf(eventKey) === -1) {\n\t // set the current and catch-all variable\n\t currentInput = currentIntent = value;\n\n\t setInput();\n\t }\n\t }\n\t }\n\t };\n\n\t // updates the doc and `inputTypes` array with new input\n\t var setInput = function setInput() {\n\t doc.setAttribute('data-whatinput', currentInput);\n\t doc.setAttribute('data-whatintent', currentInput);\n\n\t if (inputTypes.indexOf(currentInput) === -1) {\n\t inputTypes.push(currentInput);\n\t doc.className += ' whatinput-types-' + currentInput;\n\t }\n\n\t fireFunctions('input');\n\t };\n\n\t // updates input intent for `mousemove` and `pointermove`\n\t var setIntent = function setIntent(event) {\n\t // test to see if `mousemove` happened relative to the screen\n\t // to detect scrolling versus mousemove\n\t if (mousePos['x'] !== event.screenX || mousePos['y'] !== event.screenY) {\n\t isScrolling = false;\n\n\t mousePos['x'] = event.screenX;\n\t mousePos['y'] = event.screenY;\n\t } else {\n\t isScrolling = true;\n\t }\n\n\t // only execute if the touch buffer timer isn't running\n\t // or scrolling isn't happening\n\t if (!isBuffering && !isScrolling) {\n\t var value = inputMap[event.type];\n\t if (value === 'pointer') value = pointerType(event);\n\n\t if (currentIntent !== value) {\n\t currentIntent = value;\n\n\t doc.setAttribute('data-whatintent', currentIntent);\n\n\t fireFunctions('intent');\n\t }\n\t }\n\t };\n\n\t // buffers touch events because they frequently also fire mouse events\n\t var touchBuffer = function touchBuffer(event) {\n\t if (event.type === 'touchstart') {\n\t isBuffering = false;\n\n\t // set the current input\n\t updateInput(event);\n\t } else {\n\t isBuffering = true;\n\t }\n\t };\n\n\t var fireFunctions = function fireFunctions(type) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].type === type) {\n\t functionList[i].fn.call(undefined, currentIntent);\n\t }\n\t }\n\t };\n\n\t /*\n\t * utilities\n\t */\n\n\t var pointerType = function pointerType(event) {\n\t if (typeof event.pointerType === 'number') {\n\t return pointerMap[event.pointerType];\n\t } else {\n\t // treat pen like touch\n\t return event.pointerType === 'pen' ? 'touch' : event.pointerType;\n\t }\n\t };\n\n\t // detect version of mouse wheel event to use\n\t // via https://developer.mozilla.org/en-US/docs/Web/Events/wheel\n\t var detectWheel = function detectWheel() {\n\t var wheelType = void 0;\n\n\t // Modern browsers support \"wheel\"\n\t if ('onwheel' in document.createElement('div')) {\n\t wheelType = 'wheel';\n\t } else {\n\t // Webkit and IE support at least \"mousewheel\"\n\t // or assume that remaining browsers are older Firefox\n\t wheelType = document.onmousewheel !== undefined ? 'mousewheel' : 'DOMMouseScroll';\n\t }\n\n\t return wheelType;\n\t };\n\n\t var objPos = function objPos(match) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].fn === match) {\n\t return i;\n\t }\n\t }\n\t };\n\n\t /*\n\t * init\n\t */\n\n\t // don't start script unless browser cuts the mustard\n\t // (also passes if polyfills are used)\n\t if ('addEventListener' in window && Array.prototype.indexOf) {\n\t setUp();\n\t }\n\n\t /*\n\t * api\n\t */\n\n\t return {\n\t // returns string: the current input type\n\t // opt: 'loose'|'strict'\n\t // 'strict' (default): returns the same value as the `data-whatinput` attribute\n\t // 'loose': includes `data-whatintent` value if it's more current than `data-whatinput`\n\t ask: function ask(opt) {\n\t return opt === 'loose' ? currentIntent : currentInput;\n\t },\n\n\t // returns array: all the detected input types\n\t types: function types() {\n\t return inputTypes;\n\t },\n\n\t // overwrites ignored keys with provided array\n\t ignoreKeys: function ignoreKeys(arr) {\n\t ignoreMap = arr;\n\t },\n\n\t // attach functions to input and intent \"events\"\n\t // funct: function to fire on change\n\t // eventType: 'input'|'intent'\n\t registerOnChange: function registerOnChange(fn, eventType) {\n\t functionList.push({\n\t fn: fn,\n\t type: eventType || 'input'\n\t });\n\t },\n\n\t unRegisterOnChange: function unRegisterOnChange(fn) {\n\t var position = objPos(fn);\n\n\t if (position) {\n\t functionList.splice(position, 1);\n\t }\n\t }\n\t };\n\t}();\n\n/***/ }\n/******/ ])\n});\n;","import $ from 'jquery';\nimport 'what-input';\n\n// Foundation JS relies on a global variable. In ES6, all imports are hoisted\n// to the top of the file so if we used `import` to import Foundation,\n// it would execute earlier than we have assigned the global variable.\n// This is why we have to use CommonJS require() here since it doesn't\n// have the hoisting behavior.\nwindow.jQuery = $;\nrequire('foundation-sites');\n\n// If you want to pick and choose which modules to include, comment out the above and uncomment\n// the line below\n//import './lib/foundation-explicit-pieces';\n\n\n$(document).foundation();\n"],"sourceRoot":""}