{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/fizzy-ui-utils/utils.js","webpack:///./node_modules/flickity/js/flickity.js","webpack:///(webpack)/buildin/global.js","webpack:///./Content/main.js","webpack:///./Content/Scripts/current/design.js","webpack:///./Content/Scripts/current/helpers.js","webpack:///./Content/Scripts/current/chat.js","webpack:///./Content/Scripts/current/analytics.js","webpack:///./Content/Scripts/current/content-umbraco-forms.js","webpack:///./Content/Scripts/current/navigation-tracking.js","webpack:///./Content/Scripts/current/legacy-iframe.js","webpack:///./Content/Scripts/current/content-tables.js","webpack:///./Content/Scripts/current/notice.js","webpack:///./Content/Scripts/current/cookies.js","webpack:///./node_modules/ev-emitter/ev-emitter.js","webpack:///./node_modules/unipointer/unipointer.js","webpack:///./node_modules/get-size/get-size.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./Content/Scripts/current/flickity-config.js","webpack:///./node_modules/flickity/js/index.js","webpack:///./node_modules/desandro-matches-selector/matches-selector.js","webpack:///./node_modules/flickity/js/cell.js","webpack:///./node_modules/flickity/js/slide.js","webpack:///./node_modules/flickity/js/animate.js","webpack:///./node_modules/flickity/js/drag.js","webpack:///./node_modules/unidragger/unidragger.js","webpack:///./node_modules/flickity/js/prev-next-button.js","webpack:///./node_modules/flickity/js/page-dots.js","webpack:///./node_modules/flickity/js/player.js","webpack:///./node_modules/flickity/js/add-remove-cell.js","webpack:///./node_modules/flickity/js/lazyload.js","webpack:///./Content/Scripts/current/lazy-load.js","webpack:///./node_modules/jquery-lazyload/jquery.lazyload.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","factory","matchesSelector","utils","a","b","prop","num","div","arraySlice","Array","slice","makeArray","obj","isArray","length","removeFrom","ary","index","indexOf","splice","getParent","elem","selector","parentNode","document","body","getQueryElement","querySelector","handleEvent","event","method","type","this","filterFindElements","elems","ffElems","forEach","HTMLElement","push","childElems","querySelectorAll","debounceMethod","_class","methodName","threshold","timeoutName","timeout","clearTimeout","args","arguments","_this","setTimeout","apply","docReady","callback","readyState","addEventListener","toDashed","str","replace","match","$1","$2","toLowerCase","console","htmlInit","WidgetClass","namespace","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","concat","dataOptionsAttr","jQuery","options","attr","getAttribute","JSON","parse","error","className","instance","data","EvEmitter","getSize","Cell","Slide","animatePrototype","getComputedStyle","moveElements","toElem","appendChild","shift","GUID","instances","Flickity","element","queryElement","flickityGUID","option","$element","extend","constructor","defaults","_create","accessibility","cellAlign","freeScrollFriction","friction","namespaceJQueryEvents","percentPosition","resize","selectedAttraction","setGallerySize","createMethods","proto","id","guid","eventName","selectedIndex","restingFrames","x","velocity","originSide","rightToLeft","viewport","createElement","_createSlider","watchCSS","on","listener","activate","opts","isActive","classList","add","_filterFindCellElements","children","slider","reloadCells","tabIndex","emitEvent","selectInitialIndex","isInitActivated","dispatchEvent","style","cellSelector","cells","_makeCells","positionCells","_getWrapShiftCells","map","cellElem","getLastCell","getLastSlide","slides","_sizeCells","_positionCells","maxCellHeight","cellX","startCell","size","outerWidth","len","cell","setPosition","Math","max","outerHeight","slideableWidth","updateSlides","_containSlides","slidesWidth","target","slide","nextMargin","canCellFit","_getCanCellFit","slideWidth","firstMargin","updateTarget","addCell","updateSelectedSlide","groupCells","number","parseInt","percentMatch","percent","innerWidth","_init","reposition","positionSliderAtSelected","setCellAlign","cursorPosition","cellAlignShorthands","center","left","right","shorthand","height","adaptiveHeight","selectedSlide","wrapAround","_unshiftCells","beforeShiftCells","afterShiftCells","gapX","cellIndex","_getGapCells","increment","contain","isRightToLeft","beginMargin","endMargin","contentWidth","isContentSmaller","beginBound","endBound","min","emitArgs","$event","jQEvent","Event","trigger","select","isWrap","isInstant","_wrapSelect","modulo","prevIndex","startAnimation","wrapIndex","delta","abs","backWrapDelta","forewardWrapDelta","isDragSelect","previous","next","unselectSelectedSlide","selectedCells","selectedElements","getCellElements","selectedCell","selectedElement","unselect","initialIndex","queryCell","selectCell","getCellSlideIndex","getCell","getCells","getParentCell","getAdjacentCellElements","adjCount","undefined","cellElems","slideIndex","uiChange","childUIPointerDown","preventDefault","focus","onresize","isAnimating","isDragging","content","deactivate","onkeydown","isNotFocused","activeElement","handler","keyboardHandlers","keyCode","37","leftMethod","39","rightMethod","prevScrollY","pageYOffset","preventScroll","scrollTo","pageXOffset","remove","destroy","removeChild","removeAttribute","removeEventListener","allOff","removeData","bridget","setJQuery","jq","g","Function","e","global","$","search","getElementById","searchToggle","searchMenu","parent","child","node","isDescendant","cmsPage","table","tables","page","parentElement","contains","isSubmenuExpanded","showMenu","ul","collapseOtherMenus","toggle","tagName","excludedFromCollapseItem","elements","elementCount","isChildOf","currentTest","isSameElementOrChild","navBarLinks","navBarOpenButton","primaryMenu","userProfileMenu","dropdownMenus","togglingElement","gc","cookies","cookie","cookieStartIndex","cookieEndIndex","substr","valueStartIndex","pc","pnc","list","el","innerHTML","insertBefore","firstChild","log","adjustIFrame","String","format","replacement","hashCode","hash","charCodeAt","showSaveNotification","show","delay","comm100","Comm100API","ready","OCFPrivacySettings","executeFunctionalityScriptIfAllowed","chat_buttons","comm100ChatButton","code_plan","div_id","site_id","main_code_plan","comm100Lc","async","src","comm100S","getElementsByTagName","loaded","lc","css","action","category","label","detail","Action","Category","Label","Value","gtag","path","toggleSubmitButtonAvailability","checkbox","formId","submitButton","checked","setAttribute","agreementCheckboxes","getElementsByClassName","menus","HTML_ID","TYPE","handleNavigationMenuClick","menuElementId","menuType","links","from","filter","href","link","CustomEvent","logNavigationInGoogleAnalytics","resizeTimeout","$body","$window","getIFrame","adjustIframeHeightAndKeepPosition","scrollPosition","scrollTop","adjustIframeHeight","$this","pageHeight","contents","addCmsTableFormatting","tablesInContent","addClass","each","tableHeader","find","tableHeaderLines","firstRowElements","detach","hasClass","wrap","append","header","td","th","html","appendTo","me","notice","isSafariAccordingToFeatures","isSafariAccordingToUserAgent","cookieEditButton","COOKIE_MODAL","showCookieModal","cookieNotice","documentElement","scrollY","modal","checkboxes","acceptedCookieTypes","getAcceptedCookieTypes","toggleIcon","setCheckboxValues","clientTop","position","width","top","overflowY","hideNotice","class","agentHasKeyword","keyword","navigator","userAgent","updateStorage","sessionStorage","setItem","showNotice","clickFunction","noticeId","noticeClass","saveCookiesAndHideModal","cookieChoices","acceptCookies","modalElement","icon","privacyCookieExists","matches","cookieTypeNames","Element","msMatchesSelector","getItem","includes","ApplePaySetupFeature","safari","listItems","saveButton","acceptAllButton","tabElement","activeCookieType","selectedCookieType","toggleCookieDescription","attachCookieModalEvents","getCookie","cookieExists","getCookieValue","keyValue","decodeURI","userSelectedPreferences","oldAllowedCookieTypes","date","Date","setFullYear","getFullYear","expirationDate","cookiePreference","preference","join","cookieValue","toGMTString","encodeURI","allowedCookieTypes","eventData","createEvent","initCustomEvent","dispatchCookieAcceptedEvent","privacyCookie","privacyCookieValues","split","v","some","events","_events","listeners","once","onceEvents","_onceEvents","off","onceListeners","Unipointer","bindStartEvent","_bindStartEvent","unbindStartEvent","isAdd","bindMethod","startEvent","PointerEvent","getTouch","touches","touch","identifier","pointerIdentifier","onmousedown","button","_pointerDown","ontouchstart","changedTouches","onpointerdown","pointer","isPointerDown","pointerId","pointerDown","_bindPostStartEvents","postStartEvents","mousedown","touchstart","pointerdown","_boundPointerEvents","_unbindPostStartEvents","onmousemove","_pointerMove","onpointermove","ontouchmove","pointerMove","onmouseup","_pointerUp","onpointerup","ontouchend","_pointerDone","pointerUp","_pointerReset","pointerDone","onpointercancel","_pointerCancel","ontouchcancel","pointerCancel","getPointerPoint","pageX","y","pageY","getStyleSize","parseFloat","isNaN","logError","message","measurements","measurementsLength","getStyle","isBoxSizeOuter","isSetup","padding","borderStyle","borderWidth","boxSizing","round","setup","nodeType","display","innerHeight","getZeroSize","offsetWidth","offsetHeight","isBorderBox","measurement","paddingWidth","paddingLeft","paddingRight","paddingHeight","paddingTop","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","w","Error","noGlobal","arr","getProto","getPrototypeOf","flat","array","class2type","toString","hasOwn","fnToString","ObjectFunctionString","support","isFunction","item","isWindow","preservedScriptAttributes","nonce","noModule","DOMEval","code","doc","val","script","text","head","toType","context","fn","init","isArrayLike","jquery","toArray","pushStack","ret","merge","prevObject","first","eq","last","even","grep","_elem","odd","j","end","sort","copy","copyIsArray","clone","deep","isPlainObject","expando","random","isReady","msg","noop","Ctor","isEmptyObject","globalEval","results","inArray","second","invert","callbackExpect","arg","iterator","_i","Sizzle","Expr","getText","isXML","tokenize","compile","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pop","pushNative","booleans","whitespace","attributes","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","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","childNodes","els","seed","nid","groups","newSelector","newContext","ownerDocument","exec","qsa","test","testContext","scope","toSelector","qsaError","keys","cache","cacheLength","markFunction","assert","addHandle","attrs","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespaceURI","hasCompare","subWindow","defaultView","attachEvent","createComment","getById","getElementsByName","attrId","getAttributeNode","tag","tmp","input","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","start","useCache","lastChild","uniqueID","pseudo","setFilters","idx","matched","matcher","unmatched","lang","elemLang","location","hasFocus","selected","_matchIndexes","radio","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","not","self","rootjQuery","root","parseHTML","rparentsprev","guaranteedUnique","prev","sibling","has","targets","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","reverse","rnothtmlwhite","Identity","Thrower","ex","adoptValue","resolve","reject","noValue","promise","fail","then","Callbacks","_","flag","createOptions","firing","memory","fired","locked","queue","firingIndex","fire","stopOnFalse","empty","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","pipe","fns","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","completed","catch","readyWait","wait","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","configurable","set","hasData","dataPriv","dataUser","rbrace","rmultiDash","getData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","values","hide","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","wrapMap","thead","col","tr","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","optgroup","buildFragment","scripts","selection","ignored","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","types","one","origFn","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","handleObjIn","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","ctrlKey","eventPhase","metaKey","shiftKey","view","charCode","buttons","clientX","clientY","offsetX","offsetY","pointerType","screenX","screenY","targetTouches","toElement","which","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","prepend","before","after","replaceWith","replaceChild","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","swap","old","rboxStyle","curCSS","computed","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","trChild","trStyle","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","box","styles","computedVal","extra","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","margin","border","prefix","suffix","expand","expanded","parts","propHooks","run","eased","duration","pos","step","fx","scrollLeft","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","complete","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","time","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","bool","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","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","param","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","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","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","offsetParent","parentOffset","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","trim","_jQuery","_$","noConflict","require","initCarousels","defaultFlickityParams","lazyLoad","carousels","isGrouped","hasAttribute","isDraggable","autoPlayValue","autoPlay","config","matchesMethod","ElemProto","prefixes","side","transform","renderPosition","setDefaultTarget","marginProperty","sideOffset","adjustedX","getPositionValue","wrapShift","isOriginLeft","lastCell","lastMargin","applyDragForce","applySelectedAttraction","previousX","integratePhysics","positionSlider","settle","shiftWrapCells","setTranslateX","dispatchScrollEvent","is3d","translateX","firstSlide","positionX","isFreeScrolling","beforeGap","_shiftCells","afterGap","gap","cellShift","getFrictionFactor","force","dragForce","dragX","applyForce","Unidragger","draggable","dragThreshold","_touchActionValue","_createDrag","onActivateDrag","_uiChangeDrag","onDeactivateDrag","updateDraggable","handles","bindHandles","unbindHandles","bindDrag","unbindDrag","okayPointerDown","_pointerDownPreventDefault","pointerDownFocus","pointerDownBlur","pointerDownScroll","getScrollPosition","_pointerDownDefault","pointerDownPointer","focusNodes","INPUT","TEXTAREA","SELECT","isTouchStart","isTouchPointer","isFocusNode","hasDragStarted","moveVector","isTouchScrolling","_dragPointerUp","dragStart","dragStartPosition","_dragPointerMove","_dragMove","dragMove","previousDragX","direction","originBound","dragMoveTime","dragEnd","freeScroll","dragEndRestingSelect","restingX","getRestingPosition","dragEndBoostSelect","distance","getSlideDistance","positiveResting","_getClosestResting","negativeResting","minDistance","Infinity","condition","dist","minDist","isWrapAround","floor","staticClick","clickedCell","onscroll","scroll","scrollMoveX","scrollMoveY","_bindHandles","touchAction","cursorNodes","OPTION","clickTypes","isCursorNode","isClickType","isOkay","focused","_dragStart","_dragEnd","_staticClick","isPreventingClicks","onclick","isIgnoringMouseUp","svgURI","PrevNextButton","isEnabled","isPrevious","leftDirection","isLeft","svg","createSVG","update","createElementNS","shape","pathMovements","arrowShape","x0","x1","y1","x2","y2","x3","enable","lastIndex","boundIndex","prevNextButtons","_createPrevNextButtons","prevButton","nextButton","activatePrevNextButtons","deactivatePrevNextButtons","PageDots","holder","dots","handleClick","onClick","setDots","addDots","removeDots","newDots","dot","updateSelected","selectedDot","onTap","pageDots","_createPageDots","activatePageDots","updateSelectedPageDots","updatePageDots","deactivatePageDots","Player","onVisibilityChange","visibilityChange","onVisibilityPlay","visibilityPlay","play","clear","pause","unpause","pauseAutoPlayOnHover","_createPlayer","player","activatePlayer","stopPlayer","deactivatePlayer","playPlayer","pausePlayer","unpausePlayer","onmouseenter","onmouseleave","getCellsFragment","isAppend","insertCellElement","endCells","cellChange","minCellIndex","cellSizeChange","changedCellIndex","isPositioningSlider","prevSelectedElem","LazyLoader","img","flickity","_createLazyload","lazyImages","lazyCellImages","lazyloadAttr","srcAttr","srcsetAttr","imgs","getCellLazyImages","srcset","initLazyLoad","threshhold","lazyload","effect","$container","failure_limit","data_attribute","skip_invisible","appear","placeholder","counter","abovethetop","leftofbegin","belowthefold","rightoffold","failurelimit","effectspeed","effect_speed","$self","elements_left","appVersion","persisted","inviewport"],"mappings":"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","file":"main-f455cf8ce3a4d4fa1b8f.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 = 209);\n","/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n'use strict';\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) {\n return [];\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n clearTimeout( timeout );\n\n var args = arguments;\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( callback );\n } else {\n document.addEventListener( 'DOMContentLoaded', callback );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n var dashedNamespace = utils.toDashed( namespace );\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n var elems = utils.makeArray( dataAttrElems )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\n// ----- ----- //\n\nreturn utils;\n\n}));\n","// Flickity main\n/* eslint-disable max-params */\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './cell',\n './slide',\n './animate',\n ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\n return factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./cell'),\n require('./slide'),\n require('./animate')\n );\n } else {\n // browser global\n var _Flickity = window.Flickity;\n\n window.Flickity = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n _Flickity.Cell,\n _Flickity.Slide,\n _Flickity.animatePrototype\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize,\n utils, Cell, Slide, animatePrototype ) {\n\n/* eslint-enable max-params */\n'use strict';\n\n// vars\nvar jQuery = window.jQuery;\nvar getComputedStyle = window.getComputedStyle;\nvar console = window.console;\n\nfunction moveElements( elems, toElem ) {\n elems = utils.makeArray( elems );\n while ( elems.length ) {\n toElem.appendChild( elems.shift() );\n }\n}\n\n// -------------------------- Flickity -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Flickity intances\nvar instances = {};\n\nfunction Flickity( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // do not initialize twice on same element\n if ( this.element.flickityGUID ) {\n var instance = instances[ this.element.flickityGUID ];\n if ( instance ) instance.option( options );\n return instance;\n }\n\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // kick things off\n this._create();\n}\n\nFlickity.defaults = {\n accessibility: true,\n // adaptiveHeight: false,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075, // friction when free-scrolling\n friction: 0.28, // friction when selecting\n namespaceJQueryEvents: true,\n // initialIndex: 0,\n percentPosition: true,\n resize: true,\n selectedAttraction: 0.025,\n setGallerySize: true,\n // watchCSS: false,\n // wrapAround: false\n};\n\n// hash of methods triggered on _create()\nFlickity.createMethods = [];\n\nvar proto = Flickity.prototype;\n// inherit EventEmitter\nutils.extend( proto, EvEmitter.prototype );\n\nproto._create = function() {\n // add id for Flickity.data\n var id = this.guid = ++GUID;\n this.element.flickityGUID = id; // expando\n instances[ id ] = this; // associate via id\n // initial properties\n this.selectedIndex = 0;\n // how many frames slider has been in same position\n this.restingFrames = 0;\n // initial physics properties\n this.x = 0;\n this.velocity = 0;\n this.originSide = this.options.rightToLeft ? 'right' : 'left';\n // create viewport & slider\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n this._createSlider();\n\n if ( this.options.resize || this.options.watchCSS ) {\n window.addEventListener( 'resize', this );\n }\n\n // add listeners from on option\n for ( var eventName in this.options.on ) {\n var listener = this.options.on[ eventName ];\n this.on( eventName, listener );\n }\n\n Flickity.createMethods.forEach( function( method ) {\n this[ method ]();\n }, this );\n\n if ( this.options.watchCSS ) {\n this.watchCSS();\n } else {\n this.activate();\n }\n\n};\n\n/**\n * set options\n * @param {Object} opts - options to extend\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\nproto.activate = function() {\n if ( this.isActive ) {\n return;\n }\n this.isActive = true;\n this.element.classList.add('flickity-enabled');\n if ( this.options.rightToLeft ) {\n this.element.classList.add('flickity-rtl');\n }\n\n this.getSize();\n // move initial cell elements so they can be loaded as cells\n var cellElems = this._filterFindCellElements( this.element.children );\n moveElements( cellElems, this.slider );\n this.viewport.appendChild( this.slider );\n this.element.appendChild( this.viewport );\n // get cells from children\n this.reloadCells();\n\n if ( this.options.accessibility ) {\n // allow element to focusable\n this.element.tabIndex = 0;\n // listen for key presses\n this.element.addEventListener( 'keydown', this );\n }\n\n this.emitEvent('activate');\n this.selectInitialIndex();\n // flag for initial activation, for using initialIndex\n this.isInitActivated = true;\n // ready event. #493\n this.dispatchEvent('ready');\n};\n\n// slider positions the cells\nproto._createSlider = function() {\n // slider element does all the positioning\n var slider = document.createElement('div');\n slider.className = 'flickity-slider';\n slider.style[ this.originSide ] = 0;\n this.slider = slider;\n};\n\nproto._filterFindCellElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.cellSelector );\n};\n\n// goes through all children\nproto.reloadCells = function() {\n // collection of item elements\n this.cells = this._makeCells( this.slider.children );\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n};\n\n/**\n * turn elements into Flickity.Cells\n * @param {[Array, NodeList, HTMLElement]} elems - elements to make into cells\n * @returns {Array} items - collection of new Flickity Cells\n */\nproto._makeCells = function( elems ) {\n var cellElems = this._filterFindCellElements( elems );\n\n // create new Flickity for collection\n var cells = cellElems.map( function( cellElem ) {\n return new Cell( cellElem, this );\n }, this );\n\n return cells;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.getLastSlide = function() {\n return this.slides[ this.slides.length - 1 ];\n};\n\n// positions all cells\nproto.positionCells = function() {\n // size all cells\n this._sizeCells( this.cells );\n // position all cells\n this._positionCells( 0 );\n};\n\n/**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\nproto._positionCells = function( index ) {\n index = index || 0;\n // also measure maxCellHeight\n // start 0 if positioning all cells\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n var cellX = 0;\n // get cellX\n if ( index > 0 ) {\n var startCell = this.cells[ index - 1 ];\n cellX = startCell.x + startCell.size.outerWidth;\n }\n var len = this.cells.length;\n for ( var i = index; i < len; i++ ) {\n var cell = this.cells[i];\n cell.setPosition( cellX );\n cellX += cell.size.outerWidth;\n this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );\n }\n // keep track of cellX for wrap-around\n this.slideableWidth = cellX;\n // slides\n this.updateSlides();\n // contain slides target\n this._containSlides();\n // update slidesWidth\n this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n};\n\n/**\n * cell.getSize() on multiple cells\n * @param {Array} cells - cells to size\n */\nproto._sizeCells = function( cells ) {\n cells.forEach( function( cell ) {\n cell.getSize();\n } );\n};\n\n// -------------------------- -------------------------- //\n\nproto.updateSlides = function() {\n this.slides = [];\n if ( !this.cells.length ) {\n return;\n }\n\n var slide = new Slide( this );\n this.slides.push( slide );\n var isOriginLeft = this.originSide == 'left';\n var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\n\n var canCellFit = this._getCanCellFit();\n\n this.cells.forEach( function( cell, i ) {\n // just add cell if first cell in slide\n if ( !slide.cells.length ) {\n slide.addCell( cell );\n return;\n }\n\n var slideWidth = ( slide.outerWidth - slide.firstMargin ) +\n ( cell.size.outerWidth - cell.size[ nextMargin ] );\n\n if ( canCellFit.call( this, i, slideWidth ) ) {\n slide.addCell( cell );\n } else {\n // doesn't fit, new slide\n slide.updateTarget();\n\n slide = new Slide( this );\n this.slides.push( slide );\n slide.addCell( cell );\n }\n }, this );\n // last slide\n slide.updateTarget();\n // update .selectedSlide\n this.updateSelectedSlide();\n};\n\nproto._getCanCellFit = function() {\n var groupCells = this.options.groupCells;\n if ( !groupCells ) {\n return function() {\n return false;\n };\n } else if ( typeof groupCells == 'number' ) {\n // group by number. 3 -> [0,1,2], [3,4,5], ...\n var number = parseInt( groupCells, 10 );\n return function( i ) {\n return ( i % number ) !== 0;\n };\n }\n // default, group by width of slide\n // parse '75%\n var percentMatch = typeof groupCells == 'string' &&\n groupCells.match( /^(\\d+)%$/ );\n var percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;\n return function( i, slideWidth ) {\n /* eslint-disable-next-line no-invalid-this */\n return slideWidth <= ( this.size.innerWidth + 1 ) * percent;\n };\n};\n\n// alias _init for jQuery plugin .flickity()\nproto._init =\nproto.reposition = function() {\n this.positionCells();\n this.positionSliderAtSelected();\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n this.setCellAlign();\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\n};\n\nvar cellAlignShorthands = {\n // cell align, then based on origin side\n center: {\n left: 0.5,\n right: 0.5,\n },\n left: {\n left: 0,\n right: 1,\n },\n right: {\n right: 0,\n left: 1,\n },\n};\n\nproto.setCellAlign = function() {\n var shorthand = cellAlignShorthands[ this.options.cellAlign ];\n this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\n};\n\nproto.setGallerySize = function() {\n if ( this.options.setGallerySize ) {\n var height = this.options.adaptiveHeight && this.selectedSlide ?\n this.selectedSlide.height : this.maxCellHeight;\n this.viewport.style.height = height + 'px';\n }\n};\n\nproto._getWrapShiftCells = function() {\n // only for wrap-around\n if ( !this.options.wrapAround ) {\n return;\n }\n // unshift previous cells\n this._unshiftCells( this.beforeShiftCells );\n this._unshiftCells( this.afterShiftCells );\n // get before cells\n // initial gap\n var gapX = this.cursorPosition;\n var cellIndex = this.cells.length - 1;\n this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\n // get after cells\n // ending gap between last cell and end of gallery viewport\n gapX = this.size.innerWidth - this.cursorPosition;\n // start cloning at first cell, working forwards\n this.afterShiftCells = this._getGapCells( gapX, 0, 1 );\n};\n\nproto._getGapCells = function( gapX, cellIndex, increment ) {\n // keep adding cells until the cover the initial gap\n var cells = [];\n while ( gapX > 0 ) {\n var cell = this.cells[ cellIndex ];\n if ( !cell ) {\n break;\n }\n cells.push( cell );\n cellIndex += increment;\n gapX -= cell.size.outerWidth;\n }\n return cells;\n};\n\n// ----- contain ----- //\n\n// contain cell targets so no excess sliding\nproto._containSlides = function() {\n if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\n return;\n }\n var isRightToLeft = this.options.rightToLeft;\n var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\n var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\n var contentWidth = this.slideableWidth - this.getLastCell().size[ endMargin ];\n // content is less than gallery size\n var isContentSmaller = contentWidth < this.size.innerWidth;\n // bounds\n var beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];\n var endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\n // contain each cell target\n this.slides.forEach( function( slide ) {\n if ( isContentSmaller ) {\n // all cells fit inside gallery\n slide.target = contentWidth * this.cellAlign;\n } else {\n // contain to bounds\n slide.target = Math.max( slide.target, beginBound );\n slide.target = Math.min( slide.target, endBound );\n }\n }, this );\n};\n\n// ----- ----- //\n\n/**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\n if ( jQuery && this.$element ) {\n // default trigger with type if no event\n type += this.options.namespaceJQueryEvents ? '.flickity' : '';\n var $event = type;\n if ( event ) {\n // create jQuery event\n var jQEvent = new jQuery.Event( event );\n jQEvent.type = type;\n $event = jQEvent;\n }\n this.$element.trigger( $event, args );\n }\n};\n\n// -------------------------- select -------------------------- //\n\n/**\n * @param {Integer} index - index of the slide\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\n * @param {Boolean} isInstant - will immediately set position at selected cell\n */\nproto.select = function( index, isWrap, isInstant ) {\n if ( !this.isActive ) {\n return;\n }\n index = parseInt( index, 10 );\n this._wrapSelect( index );\n\n if ( this.options.wrapAround || isWrap ) {\n index = utils.modulo( index, this.slides.length );\n }\n // bail if invalid index\n if ( !this.slides[ index ] ) {\n return;\n }\n var prevIndex = this.selectedIndex;\n this.selectedIndex = index;\n this.updateSelectedSlide();\n if ( isInstant ) {\n this.positionSliderAtSelected();\n } else {\n this.startAnimation();\n }\n if ( this.options.adaptiveHeight ) {\n this.setGallerySize();\n }\n // events\n this.dispatchEvent( 'select', null, [ index ] );\n // change event if new index\n if ( index != prevIndex ) {\n this.dispatchEvent( 'change', null, [ index ] );\n }\n // old v1 event name, remove in v3\n this.dispatchEvent('cellSelect');\n};\n\n// wraps position for wrapAround, to move to closest slide. #113\nproto._wrapSelect = function( index ) {\n var len = this.slides.length;\n var isWrapping = this.options.wrapAround && len > 1;\n if ( !isWrapping ) {\n return index;\n }\n var wrapIndex = utils.modulo( index, len );\n // go to shortest\n var delta = Math.abs( wrapIndex - this.selectedIndex );\n var backWrapDelta = Math.abs( ( wrapIndex + len ) - this.selectedIndex );\n var forewardWrapDelta = Math.abs( ( wrapIndex - len ) - this.selectedIndex );\n if ( !this.isDragSelect && backWrapDelta < delta ) {\n index += len;\n } else if ( !this.isDragSelect && forewardWrapDelta < delta ) {\n index -= len;\n }\n // wrap position so slider is within normal area\n if ( index < 0 ) {\n this.x -= this.slideableWidth;\n } else if ( index >= len ) {\n this.x += this.slideableWidth;\n }\n};\n\nproto.previous = function( isWrap, isInstant ) {\n this.select( this.selectedIndex - 1, isWrap, isInstant );\n};\n\nproto.next = function( isWrap, isInstant ) {\n this.select( this.selectedIndex + 1, isWrap, isInstant );\n};\n\nproto.updateSelectedSlide = function() {\n var slide = this.slides[ this.selectedIndex ];\n // selectedIndex could be outside of slides, if triggered before resize()\n if ( !slide ) {\n return;\n }\n // unselect previous selected slide\n this.unselectSelectedSlide();\n // update new selected slide\n this.selectedSlide = slide;\n slide.select();\n this.selectedCells = slide.cells;\n this.selectedElements = slide.getCellElements();\n // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n // Remove in v3?\n this.selectedCell = slide.cells[0];\n this.selectedElement = this.selectedElements[0];\n};\n\nproto.unselectSelectedSlide = function() {\n if ( this.selectedSlide ) {\n this.selectedSlide.unselect();\n }\n};\n\nproto.selectInitialIndex = function() {\n var initialIndex = this.options.initialIndex;\n // already activated, select previous selectedIndex\n if ( this.isInitActivated ) {\n this.select( this.selectedIndex, false, true );\n return;\n }\n // select with selector string\n if ( initialIndex && typeof initialIndex == 'string' ) {\n var cell = this.queryCell( initialIndex );\n if ( cell ) {\n this.selectCell( initialIndex, false, true );\n return;\n }\n }\n\n var index = 0;\n // select with number\n if ( initialIndex && this.slides[ initialIndex ] ) {\n index = initialIndex;\n }\n // select instantly\n this.select( index, false, true );\n};\n\n/**\n * select slide from number or cell element\n * @param {[Element, Number]} value - zero-based index or element to select\n * @param {Boolean} isWrap - enables wrapping around for extra index\n * @param {Boolean} isInstant - disables slide animation\n */\nproto.selectCell = function( value, isWrap, isInstant ) {\n // get cell\n var cell = this.queryCell( value );\n if ( !cell ) {\n return;\n }\n\n var index = this.getCellSlideIndex( cell );\n this.select( index, isWrap, isInstant );\n};\n\nproto.getCellSlideIndex = function( cell ) {\n // get index of slides that has cell\n for ( var i = 0; i < this.slides.length; i++ ) {\n var slide = this.slides[i];\n var index = slide.cells.indexOf( cell );\n if ( index != -1 ) {\n return i;\n }\n }\n};\n\n// -------------------------- get cells -------------------------- //\n\n/**\n * get Flickity.Cell, given an Element\n * @param {Element} elem - matching cell element\n * @returns {Flickity.Cell} cell - matching cell\n */\nproto.getCell = function( elem ) {\n // loop through cells to get the one that matches\n for ( var i = 0; i < this.cells.length; i++ ) {\n var cell = this.cells[i];\n if ( cell.element == elem ) {\n return cell;\n }\n }\n};\n\n/**\n * get collection of Flickity.Cells, given Elements\n * @param {[Element, Array, NodeList]} elems - multiple elements\n * @returns {Array} cells - Flickity.Cells\n */\nproto.getCells = function( elems ) {\n elems = utils.makeArray( elems );\n var cells = [];\n elems.forEach( function( elem ) {\n var cell = this.getCell( elem );\n if ( cell ) {\n cells.push( cell );\n }\n }, this );\n return cells;\n};\n\n/**\n * get cell elements\n * @returns {Array} cellElems\n */\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n } );\n};\n\n/**\n * get parent cell from an element\n * @param {Element} elem - child element\n * @returns {Flickit.Cell} cell - parent cell\n */\nproto.getParentCell = function( elem ) {\n // first check if elem is cell\n var cell = this.getCell( elem );\n if ( cell ) {\n return cell;\n }\n // try to get parent cell elem\n elem = utils.getParent( elem, '.flickity-slider > *' );\n return this.getCell( elem );\n};\n\n/**\n * get cells adjacent to a slide\n * @param {Integer} adjCount - number of adjacent slides\n * @param {Integer} index - index of slide to start\n * @returns {Array} cells - array of Flickity.Cells\n */\nproto.getAdjacentCellElements = function( adjCount, index ) {\n if ( !adjCount ) {\n return this.selectedSlide.getCellElements();\n }\n index = index === undefined ? this.selectedIndex : index;\n\n var len = this.slides.length;\n if ( 1 + ( adjCount * 2 ) >= len ) {\n return this.getCellElements();\n }\n\n var cellElems = [];\n for ( var i = index - adjCount; i <= index + adjCount; i++ ) {\n var slideIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;\n var slide = this.slides[ slideIndex ];\n if ( slide ) {\n cellElems = cellElems.concat( slide.getCellElements() );\n }\n }\n return cellElems;\n};\n\n/**\n * select slide from number or cell element\n * @param {[Element, String, Number]} selector - element, selector string, or index\n * @returns {Flickity.Cell} - matching cell\n */\nproto.queryCell = function( selector ) {\n if ( typeof selector == 'number' ) {\n // use number as index\n return this.cells[ selector ];\n }\n if ( typeof selector == 'string' ) {\n // do not select invalid selectors from hash: #123, #/. #791\n if ( selector.match( /^[#.]?[\\d/]/ ) ) {\n return;\n }\n // use string as selector, get element\n selector = this.element.querySelector( selector );\n }\n // get cell from element\n return this.getCell( selector );\n};\n\n// -------------------------- events -------------------------- //\n\nproto.uiChange = function() {\n this.emitEvent('uiChange');\n};\n\n// keep focus on element when child UI elements are clicked\nproto.childUIPointerDown = function( event ) {\n // HACK iOS does not allow touch events to bubble up?!\n if ( event.type != 'touchstart' ) {\n event.preventDefault();\n }\n this.focus();\n};\n\n// ----- resize ----- //\n\nproto.onresize = function() {\n this.watchCSS();\n this.resize();\n};\n\nutils.debounceMethod( Flickity, 'onresize', 150 );\n\nproto.resize = function() {\n // #1177 disable resize behavior when animating or dragging for iOS 15\n if ( !this.isActive || this.isAnimating || this.isDragging ) {\n return;\n }\n this.getSize();\n // wrap values\n if ( this.options.wrapAround ) {\n this.x = utils.modulo( this.x, this.slideableWidth );\n }\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n this.emitEvent('resize');\n // update selected index for group slides, instant\n // TODO: position can be lost between groups of various numbers\n var selectedElement = this.selectedElements && this.selectedElements[0];\n this.selectCell( selectedElement, false, true );\n};\n\n// watches the :after property, activates/deactivates\nproto.watchCSS = function() {\n var watchOption = this.options.watchCSS;\n if ( !watchOption ) {\n return;\n }\n\n var afterContent = getComputedStyle( this.element, ':after' ).content;\n // activate if :after { content: 'flickity' }\n if ( afterContent.indexOf('flickity') != -1 ) {\n this.activate();\n } else {\n this.deactivate();\n }\n};\n\n// ----- keydown ----- //\n\n// go previous/next if left/right keys pressed\nproto.onkeydown = function( event ) {\n // only work if element is in focus\n var isNotFocused = document.activeElement && document.activeElement != this.element;\n if ( !this.options.accessibility || isNotFocused ) {\n return;\n }\n\n var handler = Flickity.keyboardHandlers[ event.keyCode ];\n if ( handler ) {\n handler.call( this );\n }\n};\n\nFlickity.keyboardHandlers = {\n // left arrow\n 37: function() {\n var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n this.uiChange();\n this[ leftMethod ]();\n },\n // right arrow\n 39: function() {\n var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n this.uiChange();\n this[ rightMethod ]();\n },\n};\n\n// ----- focus ----- //\n\nproto.focus = function() {\n // TODO remove scrollTo once focus options gets more support\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus ...\n // #Browser_compatibility\n var prevScrollY = window.pageYOffset;\n this.element.focus({ preventScroll: true });\n // hack to fix scroll jump after focus, #76\n if ( window.pageYOffset != prevScrollY ) {\n window.scrollTo( window.pageXOffset, prevScrollY );\n }\n};\n\n// -------------------------- destroy -------------------------- //\n\n// deactivate all Flickity functionality, but keep stuff available\nproto.deactivate = function() {\n if ( !this.isActive ) {\n return;\n }\n this.element.classList.remove('flickity-enabled');\n this.element.classList.remove('flickity-rtl');\n this.unselectSelectedSlide();\n // destroy cells\n this.cells.forEach( function( cell ) {\n cell.destroy();\n } );\n this.element.removeChild( this.viewport );\n // move child elements back into element\n moveElements( this.slider.children, this.element );\n if ( this.options.accessibility ) {\n this.element.removeAttribute('tabIndex');\n this.element.removeEventListener( 'keydown', this );\n }\n // set flags\n this.isActive = false;\n this.emitEvent('deactivate');\n};\n\nproto.destroy = function() {\n this.deactivate();\n window.removeEventListener( 'resize', this );\n this.allOff();\n this.emitEvent('destroy');\n if ( jQuery && this.$element ) {\n jQuery.removeData( this.element, 'flickity' );\n }\n delete this.element.flickityGUID;\n delete instances[ this.guid ];\n};\n\n// -------------------------- prototype -------------------------- //\n\nutils.extend( proto, animatePrototype );\n\n// -------------------------- extras -------------------------- //\n\n/**\n * get Flickity instance from element\n * @param {[Element, String]} elem - element or selector string\n * @returns {Flickity} - Flickity instance\n */\nFlickity.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.flickityGUID;\n return id && instances[ id ];\n};\n\nutils.htmlInit( Flickity, 'flickity' );\n\nif ( jQuery && jQuery.bridget ) {\n jQuery.bridget( 'flickity', Flickity );\n}\n\n// set internal jQuery, for Webpack + jQuery v3, #478\nFlickity.setJQuery = function( jq ) {\n jQuery = jq;\n};\n\nFlickity.Cell = Cell;\nFlickity.Slide = Slide;\n\nreturn Flickity;\n\n} ) );\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import './Styles/Current/main.scss';\r\nimport $ from 'jquery';\r\nglobal.$ = $;\r\nglobal.jQuery = $;\r\n// js\r\nimport './Scripts/current/index';\r\nimport './Styles/Umbraco/main.scss';\r\n","(function enableSearchMenu(d) {\r\n 'use strict';\r\n function isDescendant(parent, child) {\r\n var node = child.parentNode;\r\n while (node != null) {\r\n if (node == parent) {\r\n return true;\r\n }\r\n node = node.parentNode;\r\n }\r\n return false;\r\n }\r\n\r\n const search = document.getElementById('search-dropdown');\r\n const searchToggle = document.querySelector('#search-dropdown > a');\r\n const searchMenu = document.querySelector('#search-dropdown ul.dropdown-menu');\r\n\r\n if (!searchToggle || !searchMenu) {\r\n return;\r\n }\r\n\r\n document.addEventListener('click', event => {\r\n if (!isDescendant(search, event.target)) {\r\n searchMenu.classList.remove('show');\r\n }\r\n });\r\n}(document));\r\n\r\n// Puts tables in responsive containers\r\n(function makeTablesResponsive(d) {\r\n\r\n var CMS_PAGE_SELECTOR = '.cms-page';\r\n\r\n var cmsPage = d.querySelector(CMS_PAGE_SELECTOR);\r\n\r\n if (!cmsPage || !cmsPage.length) {\r\n return;\r\n }\r\n\r\n var tables = page.querySelectorAll('table.table');\r\n\r\n if (!tables || !tables.length) {\r\n return;\r\n }\r\n\r\n for (var i = 0; i < tables.length; i++) {\r\n (function (idx) {\r\n var table = tables[idx];\r\n var classList = table.parentElement && table.parentElement.classList;\r\n if (!classList.contains('table-responsive')) {\r\n classList.add('table-responsive');\r\n }\r\n }(i));\r\n }\r\n\r\n}(document));\r\n\r\n// Toggles navbar submenus\r\n(function toggleNavbarSubmenus(d) {\r\n 'use strict';\r\n let isSubmenuExpanded = false;\r\n\r\n /**\r\n * Toggles submenu visibility \r\n */\r\n function showMenu(element) {\r\n var parent = element.parentElement;\r\n var ul = parent.querySelector('ul');\r\n\r\n if (!ul) {\r\n return;\r\n }\r\n\r\n collapseOtherMenus(ul);\r\n\r\n ul.classList.toggle('show');\r\n // expand child menu if there is only one
  • child\r\n if (ul.children && ul.children.length === 1 && ul.children[0].tagName === 'LI') {\r\n showMenu(ul.children[0]);\r\n }\r\n\r\n isSubmenuExpanded = ul.classList.contains('show');\r\n }\r\n\r\n /**\r\n * Finds all dropdown menus in navbar and attaches click event listener\r\n */\r\n function attachNavigationClickEventListeners() {\r\n var dropdownMenus = d.querySelectorAll('nav.navbar ul>li'); //a+.dropdown-menu\r\n\r\n for (var i = 0; i < dropdownMenus.length; i++) {\r\n (function (l) {\r\n var togglingElement = dropdownMenus[i].querySelector('a');\r\n if (!togglingElement) {\r\n return;\r\n }\r\n\r\n togglingElement.addEventListener('click', function callShowMenu(event) {\r\n showMenu(togglingElement);\r\n });\r\n }(i))\r\n }\r\n\r\n attachOutsideMenuClickListener();\r\n }\r\n\r\n function attachOutsideMenuClickListener() {\r\n const navBarLinks = d.getElementById('navbar-menu');\r\n const navBarOpenButton = d.getElementById('expand-navbar');\r\n const primaryMenu = d.querySelector('nav.navbar ul.primary-menu');\r\n const userProfileMenu = d.getElementById('user-profile-menu');\r\n\r\n d.addEventListener('click', function (event) {\r\n if (!event.target) {\r\n collapseOtherMenus();\r\n navBarLinks.classList.remove('expand');\r\n isSubmenuExpanded = false;\r\n return;\r\n }\r\n\r\n if (navBarLinks && navBarOpenButton) {\r\n if (isSameElementOrChild(navBarOpenButton, event.target)) {\r\n navBarLinks.classList.toggle('expand');\r\n if (!navBarLinks.classList.contains('expand')) {\r\n\t\t\t\t\t\tuserProfileMenu.classList.remove('show');\r\n }\r\n return;\r\n }\r\n\r\n if (navBarLinks.classList.contains('expand') && !isSameElementOrChild(navBarLinks, event.target)) {\r\n navBarLinks.classList.remove('expand');\r\n userProfileMenu.classList.remove('show');\r\n return;\r\n }\r\n }\r\n\r\n if (isSubmenuExpanded && !isChildOf(primaryMenu, event.target)) {\r\n collapseOtherMenus();\r\n isSubmenuExpanded = false;\r\n }\r\n });\r\n }\r\n\r\n function collapseOtherMenus(excludedFromCollapseItem) {\r\n var elements = d.querySelectorAll('nav.navbar .primary-menu ul.show');\r\n var elementCount = elements.length;\r\n if (!elementCount) {\r\n return;\r\n }\r\n\r\n for (var i = 0; i < elementCount; i += 1) {\r\n (function (idx) {\r\n\r\n var element = elements[idx];\r\n\r\n if (element !== excludedFromCollapseItem) {\r\n\r\n if (!isChildOf(element, excludedFromCollapseItem)) {\r\n element.classList.remove('show');\r\n\r\n }\r\n\r\n }\r\n }(i));\r\n\r\n }\r\n }\r\n\r\n function isChildOf(parent, child) {\r\n var threshold = 10;\r\n var currentTest = child != null ? child.parentNode : null;\r\n while (threshold > 0 && currentTest !== null) {\r\n if (parent === currentTest) {\r\n return true;\r\n }\r\n\r\n currentTest = currentTest.parentNode;\r\n threshold -= 1;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function isSameElementOrChild(parent, child) {\r\n return parent === child || isChildOf(parent, child);\r\n }\r\n\r\n d.addEventListener('DOMContentLoaded', attachNavigationClickEventListeners);\r\n}(document));\r\n\r\n\r\n(function (d) {\r\n var content = '' +\r\n 'Browsing as: ({{cId}}) {{cNa}}' +\r\n '';\r\n\r\n var pck = 'partner_ID_override';\r\n var pnck = 'partner_ID_name_override';\r\n\r\n function gc(name) {\r\n var cookies = d.cookie;\r\n var cookieStartIndex = cookies.indexOf(name);\r\n\r\n if (cookieStartIndex === -1) {\r\n return null;\r\n }\r\n\r\n var cookieEndIndex = cookies.indexOf(';', cookieStartIndex);\r\n if (cookieEndIndex === -1) {\r\n cookieEndIndex = cookies.length;\r\n }\r\n\r\n var cookie = cookies.substr(cookieStartIndex, cookieEndIndex - cookieStartIndex);\r\n if (!cookie) {\r\n return null;\r\n }\r\n\r\n var valueStartIndex = cookie.indexOf('=') + 1;\r\n var cookieValue = cookie.substr(valueStartIndex);\r\n\r\n return cookieValue;\r\n }\r\n\r\n function init() {\r\n try {\r\n var pc = gc(pck);\r\n var pnc = gc(pnck);\r\n\r\n if (pc && pnc) {\r\n var list = d.querySelector('.nav.navbar-nav>li:last-child>ul');\r\n var el = d.createElement('li');\r\n var c = content.replace('{{cId}}', pc).replace('{{cNa}}', pnc);\r\n el.innerHTML = c;\r\n list.insertBefore(el, list.firstChild);\r\n }\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n d.addEventListener('DOMContentLoaded', init);\r\n\r\n}(document));\r\n","window.adjustIFrame = function adjustIFrame() {\r\n parent.$('body').trigger('adjustIframeHeightWithoutScrolling');\r\n};\r\n\r\nString.prototype.format = function () {\r\n\tvar content = this;\r\n\tfor (var i = 0; i < arguments.length; i++) {\r\n\t\tvar replacement = '{' + i + '}';\r\n\t\tcontent = content.replace(replacement, arguments[i]);\r\n\t}\r\n\treturn content;\r\n};\r\n\r\nString.prototype.hashCode = function(){\r\n\tvar hash = 0, i, character;\r\n\tif (this.length == 0) return hash;\r\n\tfor (i = 0; i < this.length; i++) {\r\n\t\tcharacter = this.charCodeAt(i);\r\n\t\thash = ((hash << 5) - hash) + character;\r\n\t\thash = hash & hash; // Convert to 32bit integer\r\n\t}\r\n\treturn hash;\r\n};\r\n\r\nfunction updateElementAttribute(element, selector, attribute, searchValue, replaceValue) {\r\n\t$(element).find(selector).each(function() {\r\n\t\tvar attributeValue = $(this).attr(attribute);\r\n\r\n\t\tif (attributeValue) {\r\n\t\t\tvar newValue = attributeValue.replace(searchValue, replaceValue);\r\n\t\t\t$(this).attr(attribute, newValue);\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction showSaveNotification(show) {\r\n if (show == true) {\r\n $('#save-notification').delay(10).toggle('slow', window.adjustIFrame);\r\n $('#save-notification').delay(5000).toggle('slow', window.adjustIFrame); //\r\n }\r\n}\r\n\r\nfunction showSaveNotificationPersistant(show, cssClass, text) {\r\n if (show == true) {\r\n $('#save-notification').stop(true, true).addClass(cssClass).removeAttr('style').html(text).delay(10).show('slow', window.adjustIFrame);\r\n }\r\n}\r\n\r\n\r\nfunction disableFormControls() {\r\n\r\n\tvar controlType;\r\n\tvar form = document.forms[0];\r\n\r\n\tfor (var i = 0; i < form.elements.length; i++) {\r\n\t\tvar control = form.elements[i];\r\n\t\tcontrolType = control.type;\r\n\t\tif (controlType == 'select-one') {\r\n\t\t\tcontrol.readOnly = true;\r\n\t\t\tcontrol.disabled = true;\r\n\t\t}\r\n\r\n\t\tif (controlType == 'text') {\r\n\t\t\tcontrol.readOnly = true;\r\n\r\n\t\t\tif (control.getAttribute('data-type') == 'date')\r\n\t\t\t\tcontrol.disabled = true;\r\n\t\t}\r\n\r\n\t\tif (controlType == 'button') {\r\n\t\t\tcontrol.disabled = true;\r\n\t\t}\r\n\r\n\t\tif (controlType == 'file') {\r\n\t\t\tcontrol.disabled = true;\r\n\t\t}\r\n\r\n\t\tif (controlType == 'checkbox') {\r\n\t\t\tcontrol.disabled = true;\r\n\t\t}\r\n\t\tif (controlType == 'textarea') {\r\n\t\t\tcontrol.readOnly = true;\r\n\t\t}\r\n\t\t\r\n\t\tif (controlType == 'span') {\r\n\t\t\tcontrol.readOnly = true;\r\n\t\t}\r\n\t}\r\n\r\n\t$('div.tab-content input[type=submit]').each(function () {\r\n\t this.disabled = true;\r\n\t});\r\n}\r\n\r\nfunction checkVoucher(url, hasDecimalPlaces) {\r\n\tvar formData = $('form').serialize();\r\n\t$.ajax({\r\n\t\turl: url, //supply totals because model won't return items\r\n\t\ttype: 'POST',\r\n\t\tcache: false,\r\n\t\tdata: formData,\r\n\t\tsuccess: function(data) {\r\n\t\t\t\r\n\t\t\tif (typeof hasDecimalPlaces === 'undefined') {\r\n\t\t\t\thasDecimalPlaces = true;\r\n\t\t\t}\r\n\r\n\t\t\tvar voucherValue;\r\n\t\t\tvar voucherPercentage;\r\n\t\t\tvar vatValue;\r\n\t\t\tif (data['VoucherValue']) {\r\n\t\t\t\t$('#voucher-value').attr('class', 'green');\r\n\t\t\t\tvoucherValue = data['VoucherValue'];\r\n\t\t\t\tvoucherPercentage = '%';\r\n\t\t\t\tvatValue = data['VatValue'];\r\n\r\n\t\t\t} else {\r\n\t\t\t\t$('#voucher-value').attr('class', 'red');\r\n\t\t\t\tvoucherValue = 'Voucher code is invalid';\r\n\t\t\t\tvoucherPercentage = '';\r\n\t\t\t\tvatValue = data['VatValue'];\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\tif (data['TransactionData']) {\r\n\t\t\t\t$('#tr_data').val(data['TransactionData']);\r\n\t\t\t}\r\n\r\n\t\t\t$('#label-total').fadeOut(100, function() {\r\n\t\t\t\tif (hasDecimalPlaces) {\r\n\t\t\t\t\t$(this).text(data['Total'].toFixed(2).toLocaleString()).fadeIn(100); //TODO: fix to show localized decimal separator\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$(this).text(data['Total']).fadeIn(100);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$('#voucher-value').fadeOut(100, function() {\r\n\t\t\t\t$(this).text(voucherValue).fadeIn(100);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t$('#vat-value').fadeOut(100, function() {\r\n\t\t\t\t$(this).text(vatValue.toFixed(2).toLocaleString()).fadeIn(100);\t//TODO: fix to show localized decimal separator\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t$('#voucher-percentage').fadeOut(100, function() {\r\n\t\t\t\t$(this).text(voucherPercentage).fadeIn(100);\r\n\t\t\t});\r\n\r\n\t\t\t$('#voucher-discount-details').show();\r\n\r\n\t\t\t$(document.body).trigger('total-changed', [{ model: data }]);\r\n\r\n\t\t}\r\n\t});\r\n\r\n}\r\n\r\n\r\nfunction checkVat(url) {\r\n\tvar formData = $('form').serialize();\r\n\t$.ajax({\r\n\t\turl: url, //supply totals because model won't return items\r\n\t\ttype: 'POST',\r\n\t\tcache: false,\r\n\t\tdata: formData,\r\n\t\tsuccess: function(data) {\r\n\t\t\tif (data == false) {\r\n\t\t\t\t$(document.body).trigger('vatIsNotValid');\r\n\t\t\t} else {\r\n\t\t\t\t$(document.body).trigger('vatIsValid');\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n}\r\n\r\n\r\nfunction checkTrialCoupon(url, hasDecimalPlaces) {\r\n\tvar formData = $('form').serialize();\r\n\t$.ajax({\r\n\t\turl: url, //supply totals because model won't return items\r\n\t\ttype: 'POST',\r\n\t\tcache: false,\r\n\t\tdata: formData,\r\n\t\tsuccess: function(data) {\r\n\t\t\tif (typeof hasDecimalPlaces === 'undefined') {\r\n\t\t\t\thasDecimalPlaces = true;\r\n\t\t\t}\r\n\r\n\t\t\tvar totalVoucherValue;\r\n\t\t\tvar voucherDiscountClicks;\r\n\t\t\tvar voucherRemainingClicks;\r\n\t\t\tvar vatValue;\r\n\t\t\tvar clicksBalance;\r\n\t\t\tvar total;\r\n\t\t\t\r\n\t\t\tif ((data['ClicksBalance'] && data['VoucherDiscountClicksValue'] && data['VoucherRemainingClicksValue'])\r\n\t\t\t\t\t|| (data['VoucherDiscountClicksValue'] + data['VoucherRemainingClicksValue']) > 0) {\r\n\t\t\t\t$('#voucher-value').removeClass('red invalid-voucher');\r\n\t\t\t\tclicksBalance = data['ClicksBalance'];\r\n\t\t\t\ttotal = data['Total'];\r\n\t\t\t\tvoucherDiscountClicks = data['VoucherDiscountClicksValue'] + ' Clicks';\r\n\t\t\t\tvoucherRemainingClicks = data['VoucherRemainingClicksValue'] + ' Clicks';\r\n\t\t\t\ttotalVoucherValue = (data['VoucherDiscountClicksValue'] + data['VoucherRemainingClicksValue']) + ' Clicks';\r\n\t\t\t\tvatValue = data['VatValue'];\r\n\t\t\t\t\r\n\t\t\t\tif (total <= clicksBalance) {\r\n\t\t\t\t\t$('.clicks-error').addClass('non-displayed-element');\r\n\t\t\t\t\t$('.clicks-after-confirm').removeClass('non-displayed-element');\r\n\t\t\t\t\t$('#confirm').removeClass('invisible-element');\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$('.clicks-error').removeClass('non-displayed-element');\r\n\t\t\t\t\t$('.clicks-after-confirm').addClass('non-displayed-element');\r\n\t\t\t\t\t$('#confirm').addClass('invisible-element');\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t$('#voucher-value').addClass('red invalid-voucher');\r\n\t\t\t\tvoucherDiscountClicks = '';\r\n\t\t\t\tvoucherRemainingClicks = '';\r\n\t\t\t\ttotalVoucherValue = 'Voucher code is invalid';\r\n\t\t\t\tvatValue = data['VatValue'];\r\n\t\t\t}\r\n\t\t\t\r\n\r\n\t\t\t$('#label-total').fadeOut(100, function() {\r\n\t\t\t\tif (hasDecimalPlaces) {\r\n\t\t\t\t\t$(this).text(data['Total'].toFixed(2).toLocaleString()).fadeIn(100); //TODO: fix to show localized decimal separator\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$(this).text(data['Total']).fadeIn(100);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\r\n\t\t\t$('#voucher-discount-value').fadeOut(100, function() {\r\n\t\t\t\t$(this).text(voucherDiscountClicks).fadeIn(100);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t$('#voucher-remaining-value').fadeOut(100, function() {\r\n\t\t\t\t$(this).text(voucherRemainingClicks).fadeIn(100);\r\n\t\t\t});\r\n\r\n\t\t\t$('#voucher-value').fadeOut(100, function() {\r\n\t\t\t\t$(this).text(totalVoucherValue).fadeIn(100);\r\n\t\t\t});\r\n\r\n\t\t\t$('#vat-value').fadeOut(100, function() {\r\n\t\t\t\t$(this).text(vatValue.toFixed(2).toLocaleString()).fadeIn(100);\t//TODO: fix to show localized decimal separator\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n}\r\n\r\nfunction statesDropdown(countryDropdown, countryFieldId, stateField) {\r\n\tvar hasStates = $(countryDropdown).find('option:selected').attr('data-has-state');\r\n\tvar country = $(countryDropdown).find('option:selected').attr('value');\r\n\t$(countryDropdown).parent().find('#' + countryFieldId).val(country);\r\n\t\tif (hasStates == 'True') {\r\n\t\t\tvar procemessage = '';\r\n\t\t\t$(stateField + ' .states').html(procemessage).show();\r\n\t\t\t$.ajax({\r\n\t\t\t\turl: '/User/FieldsDropDownStates',\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tcountryId: country\r\n\t\t\t\t},\r\n\t\t\t\tdataType: 'html',\r\n\t\t\t\tcache: false,\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tsuccess: function (data) {\r\n\t\t\t\t\t$(stateField).removeClass('hidden');\r\n\t\t\t\t\t$(stateField + ' .states').html(data).show();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t$(stateField + ' .states option').remove();\r\n\t\t\t$(stateField).addClass('hidden');\r\n\t\t}\r\n}\r\n\r\nfunction checkVatForCountry(countryDropdown, countryFieldId, vatField) {\r\n\tvar country = $(countryDropdown).find('option:selected').attr('value');\r\n\t$(countryDropdown).parent().find('#' + countryFieldId).val(country);\r\n\t$.ajax({\r\n\t\turl: '/User/IsVatRequired',\r\n\t\tdata: {\r\n\t\t\tcountryId: country\r\n\t\t},\r\n\t\tdataType: 'JSON',\r\n\t\tcache: false,\r\n\t\ttype: 'POST',\r\n\t\tsuccess: function (result) {\r\n\t\t\tif (result.isVatNotRequired) {\r\n\t\t\t\t$(vatField).addClass('hidden');\r\n\t\t\t} else {\r\n\t\t\t\t$(vatField).removeClass('hidden');\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction showSubmitButtons() {\r\n\tvar submitButtons = $('[name=SaveTask], [name=SubmitTask]').not('.hidden_submit_button');\r\n\t$(submitButtons).show();\r\n}\r\n\r\nfunction hideSubmitButtons() {\r\n\tvar submitButtons = $('[name=SaveTask], [name=SubmitTask]').not('.hidden_submit_button');\r\n\t$(submitButtons).hide();\r\n}\r\n\r\nfunction changeAttributes(divclass, fromAttr, toAttr) {\r\n\tvar urlHref = $(divclass).attr(fromAttr);\r\n\t$(divclass).attr(toAttr, urlHref);\r\n\t$(divclass).removeAttr(fromAttr);\r\n}\r\n\r\nexport {\r\n changeAttributes\r\n};\r\nglobal.showSaveNotification = showSaveNotification;","(function($, comm100) {\r\n $(document).ready(function () {\r\n function initChat() {\r\n const chatElement = document.getElementById('comm100-button-44');\r\n if (!chatElement) {\r\n return;\r\n }\r\n\r\n comm100 = comm100 || new Object;\r\n comm100.chat_buttons = comm100.chat_buttons || [];\r\n var comm100ChatButton = new Object;\r\n comm100ChatButton.code_plan = 44;\r\n comm100ChatButton.div_id = 'comm100-button-44';\r\n comm100.chat_buttons.push(comm100ChatButton);\r\n comm100.site_id = 194542;\r\n comm100.main_code_plan = 44;\r\n\r\n var comm100Lc = document.createElement('script');\r\n comm100Lc.async = true;\r\n comm100Lc.src = 'https://chatserver.comm100.com/livechat.ashx?siteId=' + Comm100API.site_id;\r\n var comm100S = document.getElementsByTagName('script')[0];\r\n comm100S.parentNode.insertBefore(comm100Lc, comm100S);\r\n\r\n setTimeout(function () {\r\n if (!Comm100API.loaded) {\r\n var lc = document.createElement('script');\r\n lc.async = true;\r\n lc.src = 'https://hostedmax.comm100.com/chatserver/livechat.ashx?siteId=' + Comm100API.site_id;\r\n var s = document.getElementsByTagName('script')[0];\r\n s.parentNode.insertBefore(lc, s);\r\n }\r\n }, 5000);\r\n\r\n $('body').on('click', '#comm100-float-button-2', function () {\r\n var chatWindow = $('#comm100-chat-window');\r\n chatWindow.css({\r\n 'max-width': 400,\r\n 'max-height': '80%',\r\n 'top': '',\r\n 'bottom': 0,\r\n 'right': 0,\r\n 'left': '',\r\n 'width': '95%'\r\n });\r\n });\r\n }\r\n\r\n OCFPrivacySettings.executeFunctionalityScriptIfAllowed(initChat);\r\n });\r\n}(jQuery, window.Comm100API = window.Comm100API || new Object));\r\n\r\n","\r\nfunction sendEvent(action, category, label, value) {\r\n\t// if \"!gtag\" is used, it throws: \"uncaught referenceerror is not defined\" when gtag is not initialized\r\n\tif (typeof gtag === 'undefined') {\r\n\t\treturn;\r\n\t}\r\n\r\n\tgtag('event', action,\r\n\t\t{\r\n\t\t\t'event_category': category,\r\n\t\t\t'event_label': label,\r\n\t\t\t'value': value ? value : 0\r\n\t\t});\r\n}\r\n\r\n// Ex.: event.detail.path = '/faq/questions/1567/1653'\r\nfunction sendPageVisitedEvent(event) {\r\n\t// if \"!gtag\" is used, it throws: \"uncaught referenceerror is not defined\" when gtag is not initialized\r\n\tif (typeof gtag === 'undefined' || !event || !event.detail || !event.detail.path) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tgtag('config', 'UA-11790540-1', { // for DEV purposes use: UA-11790540-3\r\n\t\t'page_path': event.detail.path\r\n\t});\r\n}\r\n\r\nfunction createAndSendEvent(event) {\r\n\tsendEvent(event.detail.Action, event.detail.Category, event.detail.Label, event.detail.Value);\r\n}\r\n\r\ndocument.addEventListener('analyticsEvent', createAndSendEvent);\r\ndocument.addEventListener('analyticsPageview', sendPageVisitedEvent);\r\n","(function() {\r\n\tconst agreementCheckboxes = document.getElementsByClassName('umbraco-form-agreement-checkbox');\r\n\tif (!agreementCheckboxes || !agreementCheckboxes.length || agreementCheckboxes.length === 0) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfor (let id = 0; id < agreementCheckboxes.length; id++) {\r\n\t\tagreementCheckboxes[id].addEventListener('click', checkbox => toggleSubmitButtonAvailability(checkbox.target));\r\n\t}\r\n})();\r\n\r\n\r\nfunction toggleSubmitButtonAvailability(checkbox) {\r\n\tconst formId = checkbox.getAttribute('data-form-id');\r\n\tif (!formId) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst submitButton = document.getElementById(`form-submit-${formId}`); //Find the button which is enabled/disabled by the checkbox\r\n\tif (!submitButton) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (checkbox.checked) {\r\n\t\tsubmitButton.removeAttribute('disabled');\r\n\t} else {\r\n\t\tsubmitButton.setAttribute('disabled', 'true');\r\n\t}\r\n}\r\n","const menus = {\r\n\tprimary: {\r\n\t\tHTML_ID: 'menu-primary',\r\n\t\tTYPE: 'Primary menu (white)'\r\n\t},\r\n\tsecondary: {\r\n\t\tHTML_ID: 'menu-secondary',\r\n\t\tTYPE: 'Secondary menu (green)'\r\n\t}\r\n};\r\n\r\nhandleNavigationMenuClick({\r\n\tmenuElementId: menus.primary.HTML_ID,\r\n\tmenuType: menus.primary.TYPE\r\n});\r\n\r\nhandleNavigationMenuClick({\r\n\tmenuElementId: menus.secondary.HTML_ID,\r\n\tmenuType: menus.secondary.TYPE\r\n});\r\n\r\nfunction handleNavigationMenuClick({ menuElementId, menuType }) {\r\n\tconst menu = document.getElementById(menuElementId);\r\n\tconst links = menu.querySelectorAll('a');\r\n\tArray\r\n\t\t.from(links)\r\n\t\t.filter(({ href }) => !!href)\r\n\t\t.forEach(link => link.addEventListener('click', () => logNavigationInGoogleAnalytics({ menuType })));\r\n}\r\n\r\nfunction logNavigationInGoogleAnalytics({ menuType }) {\r\n\tconst eventDetails = {\r\n\t\t'detail': {\r\n\t\t\t'Category': 'Menu navigation',\r\n\t\t\t'Label': menuType,\r\n\t\t\t'Action': 'Clicked link'\r\n\t\t}\r\n\t};\r\n\tconst event = new CustomEvent('analyticsEvent', eventDetails);\r\n\tdocument.dispatchEvent(event);\r\n}","import $ from 'jquery';\r\n\r\nconst $body = $('body'),\r\n $window = $('window');\r\n\r\nlet resizeTimeout;\r\n\r\nfunction getIFrame() {\r\n return $('iframe#legacy-content-iframe');\r\n}\r\n\r\nfunction adjustIframeHeightAndKeepPosition() {\r\n const scrollPosition = $body.scrollTop();\r\n\r\n adjustIframeHeight.call(this);\r\n\r\n $body.scrollTop(scrollPosition);\r\n}\r\n\r\n// Starts interactive tour with IntroJs\r\nfunction adjustIframeHeight() {\r\n const $this = $(this);\r\n $this.height('');\r\n const pageHeight = $this.contents().height();\r\n $this.height(pageHeight);\r\n}\r\n\r\n$('iframe#legacy-content-iframe').on('load', function () {\r\n const me = this;\r\n const $this = $(this);\r\n $this.contents().on('accordionactivate', function () {\r\n setTimeout(adjustIframeHeightAndKeepPosition.bind(me), 50);\r\n });\r\n $this.contents().find('.collapsible-panel-header').on('click', adjustIframeHeight.bind(me));\r\n\r\n adjustIframeHeight.call(this);\r\n\r\n $window.on('resize', function () {\r\n if (resizeTimeout) {\r\n window.clearTimeout(resizeTimeout);\r\n }\r\n resizeTimeout = window.setTimeout(adjustIframeHeight.bind(me), 200);\r\n });\r\n});\r\n\r\n$body.on('afterStepChange ajax-body-appened', adjustIframeHeight.bind(getIFrame()));\r\n$body.on('adjustIframeHeightWithoutScrolling ajax-body-appened', adjustIframeHeightAndKeepPosition.bind(getIFrame()));\r\n\r\n","import $ from 'jquery';\r\n\r\nconst $document = $(document);\r\n\r\nfunction transmuteTdToTh(header, td) {\r\n // Pre-select current element and create new table header cell (TH)\r\n const th = $('');\r\n\r\n // Copy content from body cell to header cell\r\n th.html(td.html());\r\n\r\n // Append newly created header cell to thead's first row\r\n th.appendTo(header);\r\n}\r\n\r\n// Add bootstrap table formatting to umbraco content\r\nfunction addCmsTableFormatting() {\r\n // Select the tables that do not have bootstrap classes\r\n const tablesInContent = $('.cms-page table:not(.table)');\r\n\r\n if (!tablesInContent.length) {\r\n return;\r\n }\r\n\r\n // Add bootstrap css table classes\r\n tablesInContent.addClass('table table-striped');\r\n\r\n tablesInContent.each(function () {\r\n // If table has no thead, move first tbody row to thead\r\n let table = $(this),\r\n tableHeader = table.find('thead'),\r\n tableHeaderLines = table.find('thead>tr'),\r\n\r\n // Get first body row and detach it from DOM\r\n firstBodyRow = table.find('tbody>tr:first').detach(),\r\n\r\n // Get all first row's cells\r\n firstRowElements = firstBodyRow.find('td'),\r\n tableParent = table.parent();\r\n\r\n if (!tableParent.hasClass('table-responsive')) {\r\n table.wrap('
    ');\r\n }\r\n\r\n\r\n if (!tableHeaderLines.length) {\r\n // If table has no thead, create one with tr inside\r\n if (!tableHeader.length) {\r\n tableHeader = $('');\r\n table.append(tableHeader);\r\n tableHeaderLines = table.find('thead>tr');\r\n } else if (!tableHeaderLines.length) {\r\n tableHeader.append($(''));\r\n tableHeaderLines = table.find('thead>tr');\r\n }\r\n\r\n firstRowElements.each(function () {\r\n transmuteTdToTh(tableHeaderLines, $(this));\r\n });\r\n\r\n }\r\n\r\n // add hover only on the tables that have more than two rows (including header)\r\n const tableRowsCount = table.find('tr').length;\r\n if (tableRowsCount > 2) {\r\n table.addClass('table-hover');\r\n }\r\n });\r\n}\r\n\r\n$document.on('faqLoaded', function () {\r\n addCmsTableFormatting.call(this);\r\n});\r\n\r\n$(function () {\r\n addCmsTableFormatting();\r\n});","import { acceptCookies, privacyCookieExists, getAcceptedCookieTypes } from './cookies';\r\n\r\nconst COOKIE_MODAL = {\r\n class: 'cookie-modal',\r\n id: 'cookie-notice-modal'\r\n};\r\n\r\nconst COOKIE_NOTICE = {\r\n class: 'cookie-notice',\r\n id: 'cookie-notice'\r\n};\r\n\r\nconst OUTDATED_BROWSER_NOTICE = {\r\n name: 'OutdatedBrowser',\r\n guid: 'b08d3161-3956-4558-b2f1-d63f8888354d',\r\n id: 'outdated-browser-notice',\r\n class: 'outdated-browser-notice'\r\n};\r\n\r\nconst EDIT_COOKIES_BUTTON_ID = 'manage-cookies';\r\n\r\nfunction showCookieModal(cookieNotice) {\r\n const modal = document.getElementById(COOKIE_MODAL.id);\r\n if (!modal) {\r\n return;\r\n }\r\n\r\n setCheckboxValues(modal);\r\n modal.removeAttribute('hidden');\r\n modal.classList.add(`show-${COOKIE_MODAL.class}`);\r\n hideScroll();\r\n\r\n // hide bottom cookie notice\r\n hideNotice(cookieNotice.id, cookieNotice.class);\r\n}\r\n\r\nfunction handleCookieDismiss(notice, event) {\r\n if (!event.target) {\r\n return;\r\n }\r\n\r\n if (event.target.matches('button.show-modal')) {\r\n showCookieModal(notice);\r\n } else if (event.target.matches('button.accept-all')) {\r\n acceptCookies(OCFPrivacySettings.cookieTypeNames.map(type => ({ type, value: true })));\r\n hideNotice(notice.id, notice.class);\r\n }\r\n}\r\n\r\nfunction agentHasKeyword(keyword) {\r\n\treturn navigator.userAgent.toLowerCase().search(keyword.toLowerCase()) > -1;\r\n}\r\n\r\nfunction isSafari() {\r\n\tconst isSafariAccordingToFeatures = !!window.ApplePaySetupFeature || !!window.safari;\r\n // User agent check is needed, because Chrome Mobile also supports Apple Pay\r\n const isSafariAccordingToUserAgent = agentHasKeyword('Safari') && !agentHasKeyword('Chrome') && !agentHasKeyword('CriOS');\r\n\r\n return isSafariAccordingToFeatures && isSafariAccordingToUserAgent;\r\n}\r\n\r\nfunction showNoticeIfUnsupportedBrowser(notice) {\r\n if (sessionStorage.getItem(notice.name) || (Array.prototype.includes && !isSafari())) {\r\n return;\r\n }\r\n\r\n showNotice(notice, updateStorage);\r\n}\r\n\r\nfunction updateStorage(notice) {\r\n sessionStorage.setItem(notice.name, notice.guid);\r\n\r\n hideNotice(notice.id, notice.class);\r\n}\r\n\r\nfunction showNotice(notice, clickFunction) {\r\n const element = document.getElementById(notice.id);\r\n if (!element) {\r\n return;\r\n }\r\n element.removeAttribute('hidden');\r\n element.classList.add(`show-${notice.class}`);\r\n element.querySelector('.dismiss').addEventListener('click', (e) => clickFunction(notice, e));\r\n}\r\n\r\nfunction hideNotice(noticeId, noticeClass) {\r\n const element = document.getElementById(noticeId);\r\n if (!element) {\r\n return;\r\n }\r\n element.setAttribute('hidden', '');\r\n element.classList.remove(`show-${noticeClass}`);\r\n}\r\n\r\n\r\n//#region Modal functionality\r\nfunction setCheckboxValues(modal) {\r\n const checkboxes = modal.querySelectorAll('input[type=checkbox]:not(:disabled)');\r\n const acceptedCookieTypes = getAcceptedCookieTypes();\r\n\r\n if (!acceptedCookieTypes) {\r\n return;\r\n }\r\n\r\n Array.prototype.forEach.call(checkboxes, (checkbox) => {\r\n if (acceptedCookieTypes.indexOf(checkbox.id) > -1) {\r\n checkbox.checked = true;\r\n toggleIcon(modal, checkbox);\r\n }\r\n }); \r\n}\r\n\r\nfunction attachCookieModalEvents() {\r\n const modal = document.getElementById(COOKIE_MODAL.id);\r\n if (!modal) {\r\n return;\r\n }\r\n\r\n const listItems = modal.querySelectorAll('li');\r\n const saveButton = modal.querySelector('#save-button');\r\n const acceptAllButton = modal.querySelector('#accept-button');\r\n const checkboxes = modal.querySelectorAll('input[type=checkbox]:not(:disabled)');\r\n\r\n // Equivalent to listItems.forEach(...)\r\n // IE11 does not support NodeList.forEach()\r\n Array.prototype.forEach.call(listItems, (element) => {\r\n element.addEventListener('click', () => { toggleCookieDescription(modal, element); });\r\n });\r\n\r\n Array.prototype.forEach.call(checkboxes, (checkbox) => {\r\n checkbox.addEventListener('click', () => { toggleIcon(modal, checkbox); });\r\n });\r\n\r\n acceptAllButton.addEventListener('click', () => {\r\n const allCookies = OCFPrivacySettings.cookieTypeNames.map(type => ({ type, value: true }));\r\n saveCookiesAndHideModal(allCookies);\r\n });\r\n\r\n saveButton.addEventListener('click', () => {\r\n const checkboxValues = OCFPrivacySettings.cookieTypeNames.map(type => {\r\n const isCookieCheckboxChecked = modal.querySelector('#' + type).checked;\r\n return { type, value: isCookieCheckboxChecked };\r\n });\r\n\r\n saveCookiesAndHideModal(checkboxValues);\r\n });\r\n}\r\n\r\n/** @param {{type: string, value: boolean}[]} cookieChoices */\r\nfunction saveCookiesAndHideModal(cookieChoices) {\r\n acceptCookies(cookieChoices);\r\n\tshowScroll();\r\n\thideNotice(COOKIE_MODAL.id, COOKIE_MODAL.class);\r\n}\r\n\r\nfunction toggleCookieDescription(modalElement, tabElement) {\r\n const activeElement = modalElement.querySelector('li.active');\r\n const activeCookieType = activeElement.getAttribute('data-cookie-type');\r\n const activeDescription = modalElement.querySelector(`.${activeCookieType}`);\r\n\r\n activeDescription.setAttribute('hidden', '');\r\n activeElement.classList.remove('active');\r\n\r\n tabElement.classList.add('active');\r\n const selectedCookieType = tabElement.getAttribute('data-cookie-type');\r\n modalElement.querySelector(`.${selectedCookieType}`).removeAttribute('hidden');\r\n}\r\n\r\nfunction toggleIcon(modalElement, checkbox) {\r\n const icon = modalElement.querySelector(`li[data-cookie-type=${checkbox.id}] i`);\r\n\r\n if (checkbox.checked) {\r\n icon.classList.remove('fa-times');\r\n icon.classList.add('fa-check');\r\n } else {\r\n icon.classList.remove('fa-check');\r\n icon.classList.add('fa-times');\r\n }\r\n}\r\n\r\n/**\r\n * Do not allow to scroll and make sure background view does not change (https://css-tricks.com/prevent-page-scrolling-when-a-modal-is-open/)\r\n */\r\nfunction hideScroll() {\r\n const documentElement = document.documentElement;\r\n const scrollY = (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0);\r\n\r\n documentElement.style.position = 'fixed';\r\n documentElement.style.width = '100%';\r\n documentElement.style.top = `-${scrollY}px`;\r\n documentElement.style.overflowY = 'scroll';\r\n}\r\n\r\n/**\r\n * Return scroll and remove added styles (https://css-tricks.com/prevent-page-scrolling-when-a-modal-is-open/)\r\n */\r\nfunction showScroll() {\r\n const documentElement = document.documentElement;\r\n const scrollY = documentElement.style.top;\r\n documentElement.style.position = '';\r\n documentElement.style.top = '';\r\n window.scrollTo(0, parseInt(scrollY || '0') * -1);\r\n}\r\n\r\n//#endregion\r\n\r\nfunction attachCookieButtonEvent() {\r\n const cookieEditButton = document.getElementById(EDIT_COOKIES_BUTTON_ID);\r\n if (!cookieEditButton) {\r\n return;\r\n }\r\n\r\n cookieEditButton.addEventListener('click', showCookieModal);\r\n}\r\n\r\nif (!privacyCookieExists()) {\r\n showNotice(COOKIE_NOTICE, handleCookieDismiss);\r\n\r\n // special if for IE 11. matches is needed for 'handleCookieDismiss' function\r\n if (!Element.prototype.matches) {\r\n Element.prototype.matches = Element.prototype.msMatchesSelector;\r\n }\r\n}\r\nshowNoticeIfUnsupportedBrowser(OUTDATED_BROWSER_NOTICE);\r\nattachCookieButtonEvent();\r\nattachCookieModalEvents();","export const PRIVACY_COOKIE_KEY = '1ClickFactoryCookiePolicy';\r\nconst PRIVACY_COOKIE_GUID = '6AE527BA-EE1A-4218-8DE1-A0D6A5C1F966';\r\n\r\nfunction getCookie(name) {\r\n return document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');\r\n}\r\n\r\nexport function cookieExists(name) {\r\n return !!getCookie(name) || null;\r\n}\r\n\r\nexport function getCookieValue(name) {\r\n const keyValue = getCookie(name);\r\n return keyValue ? decodeURI(keyValue[2]) : null;\r\n}\r\n\r\nexport function setCookie(name, value, expirationDate) {\r\n document.cookie = encodeURI(name) + '=' + encodeURI(value) + '; expires=' + expirationDate + '; path=/';\r\n}\r\n\r\nfunction dispatchCookieAcceptedEvent(oldAllowedCookieTypes, allowedCookieTypes) {\r\n const eventData = { oldAllowedCookieTypes, allowedCookieTypes };\r\n let event;\r\n if (typeof CustomEvent === 'function') {\r\n event = new CustomEvent('cookiesAccepted', { detail: eventData });\r\n } else {\r\n event = document.createEvent('CustomEvent');\r\n event.initCustomEvent('cookiesAccepted', false, false, eventData);\r\n }\r\n document.dispatchEvent(event);\r\n}\r\n\r\nexport function acceptCookies(userSelectedPreferences) {\r\n const oldAllowedCookieTypes = getAcceptedCookieTypes();\r\n const date = new Date();\r\n date.setFullYear(date.getFullYear() + 2);\r\n\r\n const cookiePreference = userSelectedPreferences.map(preference => `&${preference.type}=${preference.value}`).join('');\r\n const cookieValue = `guid=${PRIVACY_COOKIE_GUID}${cookiePreference}`;\r\n setCookie(PRIVACY_COOKIE_KEY, cookieValue, date.toGMTString());\r\n\r\n const allowedCookieTypes = userSelectedPreferences.filter(preference => preference.value).map(preference => preference.type);\r\n dispatchCookieAcceptedEvent(oldAllowedCookieTypes, allowedCookieTypes);\r\n}\r\n\r\nexport function getAcceptedCookieTypes() {\r\n const privacyCookie = getCookieValue(PRIVACY_COOKIE_KEY);\r\n if (!privacyCookie) {\r\n return [];\r\n }\r\n\r\n const privacyCookieValues = privacyCookie.split('&');\r\n\r\n if (!privacyCookieValues) {\r\n return [];\r\n }\r\n\r\n return privacyCookieValues.filter(v => {\r\n const keyValue = v.split('=');\r\n return OCFPrivacySettings.cookieTypeNames.some(type => type === keyValue[0]) && keyValue[1] === 'true';\r\n }).map(keyValue => keyValue.split('=')[0]);\r\n}\r\n\r\nexport function privacyCookieExists() {\r\n const cookie = getCookieValue(PRIVACY_COOKIE_KEY);\r\n return cookie != null &&\r\n !OCFPrivacySettings.cookieTypeNames.some(type => cookie.indexOf(type) === -1) &&\r\n cookie.indexOf(PRIVACY_COOKIE_GUID) > -1;\r\n}","/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\"use strict\";\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( listeners.indexOf( listener ) == -1 ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n var index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( var i=0; i < listeners.length; i++ ) {\n var listener = listeners[i]\n var isOnce = onceListeners && onceListeners[ listener ];\n if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n","/*!\n * Unipointer v2.4.0\n * base class for doing one thing with pointer event\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*global define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter'\n ], function( EvEmitter ) {\n return factory( window, EvEmitter );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter')\n );\n } else {\n // browser global\n window.Unipointer = factory(\n window,\n window.EvEmitter\n );\n }\n\n}( window, function factory( window, EvEmitter ) {\n\n'use strict';\n\nfunction noop() {}\n\nfunction Unipointer() {}\n\n// inherit EvEmitter\nvar proto = Unipointer.prototype = Object.create( EvEmitter.prototype );\n\nproto.bindStartEvent = function( elem ) {\n this._bindStartEvent( elem, true );\n};\n\nproto.unbindStartEvent = function( elem ) {\n this._bindStartEvent( elem, false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd - remove if falsey\n */\nproto._bindStartEvent = function( elem, isAdd ) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n\n // default to mouse events\n var startEvent = 'mousedown';\n if ( 'ontouchstart' in window ) {\n // HACK prefer Touch Events as you can preventDefault on touchstart to\n // disable scroll in iOS & mobile Chrome metafizzy/flickity#1177\n startEvent = 'touchstart';\n } else if ( window.PointerEvent ) {\n // Pointer Events\n startEvent = 'pointerdown';\n }\n elem[ bindMethod ]( startEvent, this );\n};\n\n// trigger handler methods for events\nproto.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// returns the touch that we're keeping track of\nproto.getTouch = function( touches ) {\n for ( var i=0; i < touches.length; i++ ) {\n var touch = touches[i];\n if ( touch.identifier == this.pointerIdentifier ) {\n return touch;\n }\n }\n};\n\n// ----- start event ----- //\n\nproto.onmousedown = function( event ) {\n // dismiss clicks from right or middle buttons\n var button = event.button;\n if ( button && ( button !== 0 && button !== 1 ) ) {\n return;\n }\n this._pointerDown( event, event );\n};\n\nproto.ontouchstart = function( event ) {\n this._pointerDown( event, event.changedTouches[0] );\n};\n\nproto.onpointerdown = function( event ) {\n this._pointerDown( event, event );\n};\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto._pointerDown = function( event, pointer ) {\n // dismiss right click and other pointers\n // button = 0 is okay, 1-4 not\n if ( event.button || this.isPointerDown ) {\n return;\n }\n\n this.isPointerDown = true;\n // save pointer identifier to match up touch events\n this.pointerIdentifier = pointer.pointerId !== undefined ?\n // pointerId for pointer events, touch.indentifier for touch events\n pointer.pointerId : pointer.identifier;\n\n this.pointerDown( event, pointer );\n};\n\nproto.pointerDown = function( event, pointer ) {\n this._bindPostStartEvents( event );\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// hash of events to be bound after start event\nvar postStartEvents = {\n mousedown: [ 'mousemove', 'mouseup' ],\n touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],\n pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],\n};\n\nproto._bindPostStartEvents = function( event ) {\n if ( !event ) {\n return;\n }\n // get proper events to match start event\n var events = postStartEvents[ event.type ];\n // bind events to node\n events.forEach( function( eventName ) {\n window.addEventListener( eventName, this );\n }, this );\n // save these arguments\n this._boundPointerEvents = events;\n};\n\nproto._unbindPostStartEvents = function() {\n // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\n if ( !this._boundPointerEvents ) {\n return;\n }\n this._boundPointerEvents.forEach( function( eventName ) {\n window.removeEventListener( eventName, this );\n }, this );\n\n delete this._boundPointerEvents;\n};\n\n// ----- move event ----- //\n\nproto.onmousemove = function( event ) {\n this._pointerMove( event, event );\n};\n\nproto.onpointermove = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerMove( event, event );\n }\n};\n\nproto.ontouchmove = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerMove( event, touch );\n }\n};\n\n/**\n * pointer move\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerMove = function( event, pointer ) {\n this.pointerMove( event, pointer );\n};\n\n// public\nproto.pointerMove = function( event, pointer ) {\n this.emitEvent( 'pointerMove', [ event, pointer ] );\n};\n\n// ----- end event ----- //\n\n\nproto.onmouseup = function( event ) {\n this._pointerUp( event, event );\n};\n\nproto.onpointerup = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerUp( event, event );\n }\n};\n\nproto.ontouchend = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerUp( event, touch );\n }\n};\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerUp = function( event, pointer ) {\n this._pointerDone();\n this.pointerUp( event, pointer );\n};\n\n// public\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n};\n\n// ----- pointer done ----- //\n\n// triggered on pointer up & pointer cancel\nproto._pointerDone = function() {\n this._pointerReset();\n this._unbindPostStartEvents();\n this.pointerDone();\n};\n\nproto._pointerReset = function() {\n // reset properties\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n};\n\nproto.pointerDone = noop;\n\n// ----- pointer cancel ----- //\n\nproto.onpointercancel = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerCancel( event, event );\n }\n};\n\nproto.ontouchcancel = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerCancel( event, touch );\n }\n};\n\n/**\n * pointer cancel\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerCancel = function( event, pointer ) {\n this._pointerDone();\n this.pointerCancel( event, pointer );\n};\n\n// public\nproto.pointerCancel = function( event, pointer ) {\n this.emitEvent( 'pointerCancel', [ event, pointer ] );\n};\n\n// ----- ----- //\n\n// utility function for getting x/y coords from event\nUnipointer.getPointerPoint = function( pointer ) {\n return {\n x: pointer.pageX,\n y: pointer.pageY\n };\n};\n\n// ----- ----- //\n\nreturn Unipointer;\n\n}));\n","/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n /* jshint strict: false */ /* globals define, module */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n }\n\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\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 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 = \"\" +\n\t\t\t\t\"\";\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 = \"\" +\n\t\t\t\t\"\";\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: ) 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 = \"\";\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 = \"\";\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 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// 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 = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\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 or other required elements.\n\tthead: [ 1, \"\", \"
    \" ],\n\tcol: [ 2, \"\", \"
    \" ],\n\ttr: [ 2, \"\", \"
    \" ],\n\ttd: [ 3, \"\", \"
    \" ],\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, \"\" ];\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 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 = /\\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( \"