{"version":3,"sources":["bundle.js"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","factory","jQuery","Zepto","define","amd","$","Mask","el","mask","options","invalid","getCaret","sel","pos","ctrl","get","dSel","document","selection","cSelStart","selectionStart","navigator","appVersion","indexOf","createRange","moveStart","val","text","setCaret","is","range","setSelectionRange","createTextRange","collapse","moveEnd","select","events","on","data","keyCode","which","maskDigitPosMapOld","maskDigitPosMap","jMaskGlobals","useInput","behaviour","setTimeout","keydown","keyup","oldValue","trigger","selectOnFocus","target","clearIfNotMatch","regexMask","test","getRegexMask","translation","pattern","optional","recursive","oRecursive","maskChunks","jMask","charAt","toString","replace","push","digit","join","RegExp","destroyEvents","off","v","isInput","method","arguments","calculateCaretPosition","oldVal","newVal","getMasked","caretPosNew","caretPosOld","newValL","oldValL","maskDigitsBeforeCaret","maskDigitsAfterCaret","maskDigitsBeforeCaretAll","maskDigitsBeforeCaretAllOld","caretPos","window","event","inArray","byPassKeys","keyStrokeCompensation","callbacks","skipMaskChars","lastMaskChar","check","buf","value","undefined","m","maskLen","valLen","offset","addMethod","resetPos","maskDigitCount","maskDigitPosArr","reverse","lastUntranslatedMaskChar","maskDigit","valDigit","match","fallback","lastMaskCharDigit","mapMaskdigitPositions","maskDiff","changed","defaultArgs","callback","name","criteria","args","apply","this","remove","caret","placeholder","removeAttr","getCleanVal","getMaskedVal","init","onlyMask","extend","attr","maxlength","maskWatchers","HTMLAttributes","input","prefix","notSameMaskObject","field","maskObject","stringify","JSON","fn","selector","globals","interval","watchInterval","watchInputs","maskFunction","each","clearInterval","setInterval","find","masked","unmask","dataMask","removeData","cleanVal","applyDataMask","maskElements","filter","dataMaskAttr","userAgent","eventName","isSupported","createElement","setAttribute","watchDataMask","0","9","#","A","S","jquery","2","validate","debug","console","warn","validator","settings","onsubmit","submitButton","currentTarget","hasClass","cancelSubmit","handle","hidden","result","submitHandler","formSubmitted","appendTo","currentForm","preventDefault","form","pendingRequest","focusInvalid","valid","errorList","element","concat","rules","command","argument","staticRules","existingRules","param","filtered","isContentEditable","closest","normalizeRule","messages","split","index","normalizeRules","classRules","attributeRules","dataRules","required","remote","expr","pseudos","blank","trim","filled","unchecked","prop","defaults","format","source","params","makeArray","unshift","constructor","Array","slice","groups","errorClass","pendingClass","validClass","errorElement","focusCleanup","errorContainer","errorLabelContainer","ignore","ignoreTitle","onfocusin","lastActive","unhighlight","hideThese","errorsFor","onfocusout","checkable","submitted","onkeyup","excludedKeys","elementValue","onclick","parentNode","highlight","type","findByName","addClass","removeClass","setDefaults","email","url","date","dateISO","number","digits","equalTo","minlength","rangelength","max","min","step","autoCreateRanges","prototype","delegate","eventType","labelContainer","errorContext","containers","add","valueCache","pending","reset","key","invalidHandler","checkForm","errorMap","triggerHandler","showErrors","prepareForm","elements","currentElements","rs","group","cleanElement","clean","checkElement","validationTargetFor","prepareElement","testgroup","numberOfInvalids","toHide","errors","map","message","successList","grep","defaultShowErrors","resetForm","hideErrors","resetElements","objectLength","obj","count","not","addWrapper","hide","size","findLastActive","focus","rulesCache","error","resetInternals","toShow","idx","$element","validity","badInput","substr","lastIndexOf","rule","normalizer","rulesCount","dependencyMismatch","parameters","methods","formatAndAdd","log","id","TypeError","customDataMessage","toUpperCase","substring","toLowerCase","customMessage","String","findDefined","defaultMessage","title","theregex","toToggle","wrapper","parent","showLabel","success","validElements","show","invalidElements","place","errorID","elementID","idOrName","describedBy","html","wrap","append","errorPlacement","insertAfter","parents","escapeCssMeta","describer","string","getLength","nodeName","depend","dependTypes","boolean","function","startRequest","stopRequest","submit","previousValue","old","destroy","classRuleSettings","creditcard","addClassRules","className","classes","normalizeAttributeRule","Number","isNaN","getAttribute","depends","keepRule","parameter","isFunction","parts","isArray","transformed","called","Date","decimals","errorMessage","supportedTypes","re","notSupported","decimalPlaces","num","toInt","Math","round","pow","optionDataString","previous","originalMessage","ajax","mode","port","dataType","context","response","pendingRequests","ajaxPrefilter","_","xhr","abort","ajaxSettings","3","global","w","noGlobal","DOMEval","doc","node","script","preservedScriptAttributes","head","appendChild","removeChild","toType","class2type","isArrayLike","isWindow","elem","winnow","qualifier","nodeType","sibling","cur","dir","createOptions","object","rnothtmlwhite","flag","Identity","Thrower","ex","adoptValue","resolve","reject","noValue","promise","done","fail","then","completed","removeEventListener","ready","fcamelCase","all","letter","camelCase","rmsPrefix","rdashAlpha","Data","expando","uid","getData","rbrace","parse","dataAttr","rmultiDash","dataUser","set","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","css","initial","unit","cssNumber","initialInUnit","rcssNum","exec","style","start","end","getDefaultDisplay","temp","ownerDocument","display","defaultDisplayMap","body","showHide","values","dataPriv","isHiddenWithinTree","getAll","tag","ret","getElementsByTagName","querySelectorAll","merge","setGlobalEval","elems","refElements","l","buildFragment","scripts","ignored","tmp","contains","j","fragment","createDocumentFragment","nodes","rhtml","rtagName","wrapMap","_default","innerHTML","htmlPrefilter","lastChild","childNodes","firstChild","textContent","createTextNode","rscriptType","returnTrue","returnFalse","safeActiveElement","activeElement","err","types","one","origFn","guid","manipulationTarget","content","children","disableScript","restoreScript","removeAttribute","cloneCopyEvent","src","dest","pdataOld","pdataCur","udataOld","udataCur","hasData","access","fixInput","rcheckableType","checked","defaultValue","domManip","collection","first","hasScripts","iNoClone","valueIsFunction","support","checkClone","rchecked","self","eq","clone","_evalUrl","rcleanScript","keepData","cleanData","curCSS","computed","width","minWidth","maxWidth","getStyles","getPropertyValue","pixelBoxStyles","rnumnonpx","rboxStyle","addGetHookIf","conditionFn","hookFn","vendorPropName","emptyStyle","capName","cssPrefixes","finalPropName","cssProps","setPositiveNumber","subtract","matches","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","cssExpand","ceil","getWidthOrHeight","valueIsBorderBox","boxSizingReliable","parseFloat","Tween","easing","schedule","inProgress","requestAnimationFrame","fx","tick","createFxNow","fxNow","now","genFx","includeWidth","attrs","height","opacity","createTween","animation","Animation","tweeners","defaultPrefilter","props","opts","toggle","hooks","oldfire","propTween","restoreDisplay","isBox","anim","orig","dataShow","queue","_queueHooks","unqueued","empty","fire","always","rfxtypes","isEmptyObject","overflow","overflowX","overflowY","propFilter","specialEasing","cssHooks","expand","properties","stopped","prefilters","deferred","Deferred","currentTime","remaining","startTime","duration","percent","tweens","run","notifyWith","resolveWith","originalProperties","originalOptions","stop","gotoEnd","rejectWith","bind","progress","complete","timer","stripAndCollapse","getClass","classesToArray","buildParams","traditional","rbracket","addToPrefiltersOrTransports","structure","dataTypeExpression","func","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspect","selected","inspected","prefilterOrFactory","dataTypeOrTransport","seekingTransport","transports","ajaxExtend","deep","flatOptions","ajaxHandleResponses","s","responses","ct","finalDataType","firstDataType","contents","shift","mimeType","getResponseHeader","converters","ajaxConvert","isSuccess","conv2","current","conv","prev","responseFields","dataFilter","throws","state","arr","getProto","Object","getPrototypeOf","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","noModule","rtrim","toArray","pushStack","prevObject","last","len","sort","splice","copy","copyIsArray","isPlainObject","random","isReady","msg","noop","proto","Ctor","globalEval","results","second","invert","callbackExpect","arg","Symbol","iterator","Sizzle","seed","nid","newSelector","newContext","preferredDoc","setDocument","documentIsHTML","rquickExpr","getElementById","getElementsByClassName","qsa","compilerCache","rbuggyQSA","rcssescape","fcssescape","tokenize","toSelector","rsibling","testContext","qsaError","createCache","cache","keys","Expr","cacheLength","markFunction","assert","addHandle","handler","attrHandle","siblingCheck","b","diff","sourceIndex","nextSibling","createDisabledPseudo","disabled","isDisabled","disabledAncestor","createPositionalPseudo","matchIndexes","setFilters","tokens","addCombinator","matcher","combinator","base","skip","next","checkNonElements","doneName","xml","oldCache","uniqueCache","outerCache","newCache","dirruns","uniqueID","elementMatcher","matchers","multipleContexts","contexts","condense","unmatched","newUnmatched","mapped","setMatcher","preFilter","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","relative","implicitRelative","matchContext","matchAnyContext","outermostContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","pop","uniqueSort","getText","isXML","compile","sortInput","hasDuplicate","docElem","rbuggyMatches","classCache","tokenCache","sortOrder","push_native","list","booleans","whitespace","identifier","attributes","rwhitespace","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","runescape","funescape","escaped","escapedWhitespace","high","fromCharCode","ch","asCodePoint","charCodeAt","unloadHandler","els","documentElement","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","createComment","getById","getElementsByName","attrId","getAttributeNode","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","specified","escape","duplicates","detectDuplicates","sortStable","nodeValue","selectors","createPseudo",">"," ","+","~","excess","unquoted","nodeNameSelector","operator","what","simple","forward","ofType","nodeIndex","useCache","pseudo","matched","has","innerText","lang","elemLang","hash","location","root","hasFocus","href","tabIndex","enabled","selectedIndex","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","filters","parseOnly","soFar","preFilters","cached","token","compiled","unique","isXMLDoc","escapeSelector","until","truncate","siblings","rneedsContext","rsingleTag","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","targets","prevAll","addBack","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","Callbacks","firing","memory","fired","locked","firingIndex","once","stopOnFalse","disable","lock","fireWith","tuples","catch","pipe","fns","newDefer","tuple","returned","notify","onFulfilled","onRejected","onProgress","depth","special","that","mightThrow","maxDepth","process","exceptionHook","stackTrace","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","readyException","readyList","readyWait","wait","readyState","doScroll","chainable","emptyGet","raw","bulk","acceptData","owner","defineProperty","configurable","_data","_removeData","dequeue","startLength","setter","clearQueue","defer","pnum","swap","option","thead","col","tr","td","optgroup","tbody","tfoot","colgroup","caption","th","div","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","handleObjIn","eventHandle","handleObj","handlers","namespaces","origType","elemData","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","stopPropagation","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","Event","enumerable","originalEvent","writable","load","noBubble","blur","click","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","stopImmediatePropagation","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","mouseenter","mouseleave","pointerenter","pointerleave","related","rxhtmlTag","rnoInnerhtml","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","prepend","insertBefore","before","after","replaceWith","replaceChild","prependTo","replaceAll","original","insert","opener","getComputedStyle","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","backgroundClip","clearCloneStyle","pixelPosition","reliableMarginLeft","scrollboxSize","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","origName","isCustomProp","setProperty","isFinite","getClientRects","getBoundingClientRect","left","margin","padding","border","suffix","expanded","propHooks","eased","scrollTop","scrollLeft","linear","swing","cos","PI","rrun","*","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","removeProp","propFix","tabindex","parseInt","for","class","curValue","clazz","finalValue","toggleClass","stateVal","isValidValue","classNames","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","isTrigger","parentWindow","simulate","attaches","nonce","rquery","parseXML","DOMParser","parseFromString","rCRLF","rsubmitterTypes","rsubmittable","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","allTypes","originAnchor","active","lastModified","etag","isLocal","protocol","processData","async","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","ajaxTransport","status","nativeStatusText","headers","modified","statusText","timeoutTimer","transport","responseHeadersString","ifModified","cacheURL","callbackContext","statusCode","fireGlobals","globalEventContext","completeDeferred","responseHeaders","urlAnchor","uncached","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","overrideMimeType","finalText","crossDomain","host","hasContent","beforeSend","send","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","offsetHeight","XMLHttpRequest","xhrSuccessStatus","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","text script","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","hover","fnOver","fnOut","unbind","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","noConflict","4","Sweetalert2","_typeof","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","_extends","assign","_inherits","subClass","superClass","create","_setPrototypeOf","_getPrototypeOf","setPrototypeOf","__proto__","isNativeReflectConstruct","Reflect","construct","sham","Proxy","_construct","Parent","Class","Function","_assertThisInitialized","ReferenceError","_possibleConstructorReturn","_superPropBase","property","_get","receiver","desc","getOwnPropertyDescriptor","Swal","_len","_key","withNoNewKeyword","ParentSwal","NoNewKeywordSwal","mixin","mixinParams","_this","MixinSwal","hideLoading","innerParams","privateProps","domCache","showConfirmButton","confirmButton","showCancelButton","actions","popup","swalClasses","loading","cancelButton","getInput","inputType","getChildByClass","querySelector","enableButtons","disableButtons","enableConfirmButton","disableConfirmButton","enableInput","radiosContainer","radios","disableInput","showValidationMessage","error$$1","validationMessage","popupComputedStyle","marginRight","focusInput","inputerror","resetValidationMessage","resetValidationError","warnOnce","showValidationError","getProgressSteps$1","progressSteps","setProgressSteps","updatedParams","renderProgressSteps","showProgressSteps","hideProgressSteps","setParameters","inputValidator","defaultInputValidators","forEach","expectRejections","adaptInputValidator","extraParams","oldPopup","getPopup","targetElement","background","popupBackgroundColor","successIconParts","backgroundColor","getContainer","closeButton","getCloseButton","footer","getFooter","renderTitle","renderContent","backdrop","allowOutsideClick","center","grow","growClass","showCloseButton","closeButtonAriaLabel","toast","modal","customClass","renderIcon","renderImage","renderActions","parseHtmlToContainer","noanimation","showLoaderOnConfirm","preConfirm","_main","userParams","showWarningsForParams","defaultParams","freeze","globalState","restoreFocusTimeout","getContent","getActions","getConfirmButton","getCancelButton","getValidationMessage","getProgressSteps","Promise","succeedWith","closePopup","onClose","onAfterClose","useRejections","dismissWith","dismiss","errorWith","Timer","getInputValue","files","inputAutoTrim","confirm","showLoading","preConfirmPromise","preConfirmValue","isVisible","onButtonEvent","targetedConfirm","targetedCancel","inputValue","validationPromise","DismissReason","cancel","onmouseover","onmouseout","onmousedown","close","ignoreOutsideClick","onmouseup","callIfFunction","reverseButtons","setFocus","increment","focusableElements","getFocusableElements","focusCancel","_i","keydownHandler","stopKeydownPropagation","arrowKeys","isComposing","btnIndex","_i2","allowEscapeKey","esc","outerHTML","clickConfirm","keydownHandlerAdded","keydownTarget","capture","keydownListenerCapture","inputTypes","_i3","inputClass","inputContainer","attrName","inputAttributes","populateInputOptions","inputPlaceholder","rangeInput","rangeOutput","inputOptions","inputOption","optionValue","optionLabel","radioLabel","radioInput","radioLabelElement","label","checkboxInput","Boolean","textarea","processInputOptions","formatInputOptions","isThenable","openPopup","allowEnterKey","focusConfirm","SweetAlert","currentInstance","outerParams","argsToParams","defineProperties","uniqueArray","nodeList","Map","previousWarnOnceMessages","legacyValidator","items","iconTypes","states","previousBodyPadding","classList","addOrRemoveClass","elementByClass","getIcons","icon","getTitle","getImage","progresssteps","getButtonsWrapper","focusableElementsWithTabindex","otherFocusableElements","isModal","isToast","isLoading","hasAttribute","isNodeEnv","sweetHTML","question","warning","info","oldInputVal","oninput","onchange","animationEndEvent","testEl","transEndEventNames","WebkitAnimation","OAnimation","measureScrollbar","msMaxTouchPoints","scrollDiv","scrollbarWidth","clientWidth","removeProperty","confirmButtonText","cancelButtonText","confirmButtonAriaLabel","cancelButtonAriaLabel","confirmButtonClass","cancelButtonClass","buttonsStyling","styled","confirmButtonColor","cancelButtonColor","confirmButtonBackgroundColor","borderLeftColor","borderRightColor","icons","imageUrl","imageAlt","imageWidth","imageHeight","imageClass","progressStepsContainer","currentProgressStep","getQueueStep","circle","progresscircle","activeprogressstep","line","progressline","progressStepsDistance","titleText","fixScrollbar","scrollHeight","innerHeight","paddingRight","undoScrollbar","iOSfix","MSStream","iosfix","undoIOSfix","setAriaHidden","unsetAriaHidden","restoreActiveElement","x","scrollX","y","scrollY","previousActiveElement","removePopupAndResetState","shown","swalCloseEventFinished","isVisible$1","clickCancel","heightAuto","onBeforeOpen","onOpen","deprecatedParams","toastIncompatibleParams","isValidParameter","paramName","isDeprecatedParameter","deprecationWarning","currentSteps","steps","swal","resetQueue","queueResult","insertQueueStep","deleteQueueStep","getTimerLeft","staticMethods","closeModal","closeToast","enableLoading","_Symbol","floor","idCounter","WeakMap$1","WeakMap","dP","hOP","delete","started","running","fade","instanceMethods","disableLoading","finally","onFinally","_currentInstance","version","SwalWithGlobalDefaults","_ParentSwal","_swalDefaults","default","sweetAlert","styleSheet","5","bindInputLabels","checkFieldLabel","$input","bindCheckboxes","$this","$checkLabel","bindBirthdayMask","$index","accept","cep","validacep","isValid","dados","localidade","validaCep","plan","$relatives","hasSpouse","kinship","splitDate","currDate","currTime","getTime","currAge","Status","Message","sectionsCount","$template","newId","$radio","jquery-mask-plugin","jquery-validation","sweetalert2"],"mappings":"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","file":"bundle.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 0) {\n if (el[method]() !== v) {\n el[method](v);\n }\n r = el;\n } else {\n r = el[method]();\n }\n\n return r;\n },\n calculateCaretPosition: function() {\n var oldVal = el.data('mask-previus-value') || '',\n newVal = p.getMasked(),\n caretPosNew = p.getCaret();\n if (oldVal !== newVal) {\n var caretPosOld = el.data('mask-previus-caret-pos') || 0,\n newValL = newVal.length,\n oldValL = oldVal.length,\n maskDigitsBeforeCaret = 0,\n maskDigitsAfterCaret = 0,\n maskDigitsBeforeCaretAll = 0,\n maskDigitsBeforeCaretAllOld = 0,\n i = 0;\n\n for (i = caretPosNew; i < newValL; i++) {\n if (!p.maskDigitPosMap[i]) {\n break;\n }\n maskDigitsAfterCaret++;\n }\n\n for (i = caretPosNew - 1; i >= 0; i--) {\n if (!p.maskDigitPosMap[i]) {\n break;\n }\n maskDigitsBeforeCaret++;\n }\n\n for (i = caretPosNew - 1; i >= 0; i--) {\n if (p.maskDigitPosMap[i]) {\n maskDigitsBeforeCaretAll++;\n }\n }\n\n for (i = caretPosOld - 1; i >= 0; i--) {\n if (p.maskDigitPosMapOld[i]) {\n maskDigitsBeforeCaretAllOld++;\n }\n }\n\n // if the cursor is at the end keep it there\n if (caretPosNew > oldValL) {\n caretPosNew = newValL * 10;\n } else if (caretPosOld >= caretPosNew && caretPosOld !== oldValL) {\n if (!p.maskDigitPosMapOld[caretPosNew]) {\n var caretPos = caretPosNew;\n caretPosNew -= maskDigitsBeforeCaretAllOld - maskDigitsBeforeCaretAll;\n caretPosNew -= maskDigitsBeforeCaret;\n if (p.maskDigitPosMap[caretPosNew]) {\n caretPosNew = caretPos;\n }\n }\n }\n else if (caretPosNew > caretPosOld) {\n caretPosNew += maskDigitsBeforeCaretAll - maskDigitsBeforeCaretAllOld;\n caretPosNew += maskDigitsAfterCaret;\n }\n }\n return caretPosNew;\n },\n behaviour: function(e) {\n e = e || window.event;\n p.invalid = [];\n\n var keyCode = el.data('mask-keycode');\n\n if ($.inArray(keyCode, jMask.byPassKeys) === -1) {\n var newVal = p.getMasked(),\n caretPos = p.getCaret();\n\n // this is a compensation to devices/browsers that don't compensate\n // caret positioning the right way\n setTimeout(function() {\n p.setCaret(p.calculateCaretPosition());\n }, $.jMaskGlobals.keyStrokeCompensation);\n\n p.val(newVal);\n p.setCaret(caretPos);\n return p.callbacks(e);\n }\n },\n getMasked: function(skipMaskChars, val) {\n var buf = [],\n value = val === undefined ? p.val() : val + '',\n m = 0, maskLen = mask.length,\n v = 0, valLen = value.length,\n offset = 1, addMethod = 'push',\n resetPos = -1,\n maskDigitCount = 0,\n maskDigitPosArr = [],\n lastMaskChar,\n check;\n\n if (options.reverse) {\n addMethod = 'unshift';\n offset = -1;\n lastMaskChar = 0;\n m = maskLen - 1;\n v = valLen - 1;\n check = function () {\n return m > -1 && v > -1;\n };\n } else {\n lastMaskChar = maskLen - 1;\n check = function () {\n return m < maskLen && v < valLen;\n };\n }\n\n var lastUntranslatedMaskChar;\n while (check()) {\n var maskDigit = mask.charAt(m),\n valDigit = value.charAt(v),\n translation = jMask.translation[maskDigit];\n\n if (translation) {\n if (valDigit.match(translation.pattern)) {\n buf[addMethod](valDigit);\n if (translation.recursive) {\n if (resetPos === -1) {\n resetPos = m;\n } else if (m === lastMaskChar && m !== resetPos) {\n m = resetPos - offset;\n }\n\n if (lastMaskChar === resetPos) {\n m -= offset;\n }\n }\n m += offset;\n } else if (valDigit === lastUntranslatedMaskChar) {\n // matched the last untranslated (raw) mask character that we encountered\n // likely an insert offset the mask character from the last entry; fall\n // through and only increment v\n maskDigitCount--;\n lastUntranslatedMaskChar = undefined;\n } else if (translation.optional) {\n m += offset;\n v -= offset;\n } else if (translation.fallback) {\n buf[addMethod](translation.fallback);\n m += offset;\n v -= offset;\n } else {\n p.invalid.push({p: v, v: valDigit, e: translation.pattern});\n }\n v += offset;\n } else {\n if (!skipMaskChars) {\n buf[addMethod](maskDigit);\n }\n\n if (valDigit === maskDigit) {\n maskDigitPosArr.push(v);\n v += offset;\n } else {\n lastUntranslatedMaskChar = maskDigit;\n maskDigitPosArr.push(v + maskDigitCount);\n maskDigitCount++;\n }\n\n m += offset;\n }\n }\n\n var lastMaskCharDigit = mask.charAt(lastMaskChar);\n if (maskLen === valLen + 1 && !jMask.translation[lastMaskCharDigit]) {\n buf.push(lastMaskCharDigit);\n }\n\n var newVal = buf.join('');\n p.mapMaskdigitPositions(newVal, maskDigitPosArr, valLen);\n return newVal;\n },\n mapMaskdigitPositions: function(newVal, maskDigitPosArr, valLen) {\n var maskDiff = options.reverse ? newVal.length - valLen : 0;\n p.maskDigitPosMap = {};\n for (var i = 0; i < maskDigitPosArr.length; i++) {\n p.maskDigitPosMap[maskDigitPosArr[i] + maskDiff] = 1;\n }\n },\n callbacks: function (e) {\n var val = p.val(),\n changed = val !== oldValue,\n defaultArgs = [val, e, el, options],\n callback = function(name, criteria, args) {\n if (typeof options[name] === 'function' && criteria) {\n options[name].apply(this, args);\n }\n };\n\n callback('onChange', changed === true, defaultArgs);\n callback('onKeyPress', changed === true, defaultArgs);\n callback('onComplete', val.length === mask.length, defaultArgs);\n callback('onInvalid', p.invalid.length > 0, [val, e, el, p.invalid, options]);\n }\n };\n\n el = $(el);\n var jMask = this, oldValue = p.val(), regexMask;\n\n mask = typeof mask === 'function' ? mask(p.val(), undefined, el, options) : mask;\n\n // public methods\n jMask.mask = mask;\n jMask.options = options;\n jMask.remove = function() {\n var caret = p.getCaret();\n if (jMask.options.placeholder) {\n el.removeAttr('placeholder');\n }\n if (el.data('mask-maxlength')) {\n el.removeAttr('maxlength');\n }\n p.destroyEvents();\n p.val(jMask.getCleanVal());\n p.setCaret(caret);\n return el;\n };\n\n // get value without mask\n jMask.getCleanVal = function() {\n return p.getMasked(true);\n };\n\n // get masked value without the value being in the input or element\n jMask.getMaskedVal = function(val) {\n return p.getMasked(false, val);\n };\n\n jMask.init = function(onlyMask) {\n onlyMask = onlyMask || false;\n options = options || {};\n\n jMask.clearIfNotMatch = $.jMaskGlobals.clearIfNotMatch;\n jMask.byPassKeys = $.jMaskGlobals.byPassKeys;\n jMask.translation = $.extend({}, $.jMaskGlobals.translation, options.translation);\n\n jMask = $.extend(true, {}, jMask, options);\n\n regexMask = p.getRegexMask();\n\n if (onlyMask) {\n p.events();\n p.val(p.getMasked());\n } else {\n if (options.placeholder) {\n el.attr('placeholder' , options.placeholder);\n }\n\n // this is necessary, otherwise if the user submit the form\n // and then press the \"back\" button, the autocomplete will erase\n // the data. Works fine on IE9+, FF, Opera, Safari.\n if (el.data('mask')) {\n el.attr('autocomplete', 'off');\n }\n\n // detect if is necessary let the user type freely.\n // for is a lot faster than forEach.\n for (var i = 0, maxlength = true; i < mask.length; i++) {\n var translation = jMask.translation[mask.charAt(i)];\n if (translation && translation.recursive) {\n maxlength = false;\n break;\n }\n }\n\n if (maxlength) {\n el.attr('maxlength', mask.length).data('mask-maxlength', true);\n }\n\n p.destroyEvents();\n p.events();\n\n var caret = p.getCaret();\n p.val(p.getMasked());\n p.setCaret(caret);\n }\n };\n\n jMask.init(!el.is('input'));\n };\n\n $.maskWatchers = {};\n var HTMLAttributes = function () {\n var input = $(this),\n options = {},\n prefix = 'data-mask-',\n mask = input.attr('data-mask');\n\n if (input.attr(prefix + 'reverse')) {\n options.reverse = true;\n }\n\n if (input.attr(prefix + 'clearifnotmatch')) {\n options.clearIfNotMatch = true;\n }\n\n if (input.attr(prefix + 'selectonfocus') === 'true') {\n options.selectOnFocus = true;\n }\n\n if (notSameMaskObject(input, mask, options)) {\n return input.data('mask', new Mask(this, mask, options));\n }\n },\n notSameMaskObject = function(field, mask, options) {\n options = options || {};\n var maskObject = $(field).data('mask'),\n stringify = JSON.stringify,\n value = $(field).val() || $(field).text();\n try {\n if (typeof mask === 'function') {\n mask = mask(value);\n }\n return typeof maskObject !== 'object' || stringify(maskObject.options) !== stringify(options) || maskObject.mask !== mask;\n } catch (e) {}\n },\n eventSupported = function(eventName) {\n var el = document.createElement('div'), isSupported;\n\n eventName = 'on' + eventName;\n isSupported = (eventName in el);\n\n if ( !isSupported ) {\n el.setAttribute(eventName, 'return;');\n isSupported = typeof el[eventName] === 'function';\n }\n el = null;\n\n return isSupported;\n };\n\n $.fn.mask = function(mask, options) {\n options = options || {};\n var selector = this.selector,\n globals = $.jMaskGlobals,\n interval = globals.watchInterval,\n watchInputs = options.watchInputs || globals.watchInputs,\n maskFunction = function() {\n if (notSameMaskObject(this, mask, options)) {\n return $(this).data('mask', new Mask(this, mask, options));\n }\n };\n\n $(this).each(maskFunction);\n\n if (selector && selector !== '' && watchInputs) {\n clearInterval($.maskWatchers[selector]);\n $.maskWatchers[selector] = setInterval(function(){\n $(document).find(selector).each(maskFunction);\n }, interval);\n }\n return this;\n };\n\n $.fn.masked = function(val) {\n return this.data('mask').getMaskedVal(val);\n };\n\n $.fn.unmask = function() {\n clearInterval($.maskWatchers[this.selector]);\n delete $.maskWatchers[this.selector];\n return this.each(function() {\n var dataMask = $(this).data('mask');\n if (dataMask) {\n dataMask.remove().removeData('mask');\n }\n });\n };\n\n $.fn.cleanVal = function() {\n return this.data('mask').getCleanVal();\n };\n\n $.applyDataMask = function(selector) {\n selector = selector || $.jMaskGlobals.maskElements;\n var $selector = (selector instanceof $) ? selector : $(selector);\n $selector.filter($.jMaskGlobals.dataMaskAttr).each(HTMLAttributes);\n };\n\n var globals = {\n maskElements: 'input,td,span,div',\n dataMaskAttr: '*[data-mask]',\n dataMask: true,\n watchInterval: 300,\n watchInputs: true,\n keyStrokeCompensation: 10,\n // old versions of chrome dont work great with input event\n useInput: !/Chrome\\/[2-4][0-9]|SamsungBrowser/.test(window.navigator.userAgent) && eventSupported('input'),\n watchDataMask: false,\n byPassKeys: [9, 16, 17, 18, 36, 37, 38, 39, 40, 91],\n translation: {\n '0': {pattern: /\\d/},\n '9': {pattern: /\\d/, optional: true},\n '#': {pattern: /\\d/, recursive: true},\n 'A': {pattern: /[a-zA-Z0-9]/},\n 'S': {pattern: /[a-zA-Z]/}\n }\n };\n\n $.jMaskGlobals = $.jMaskGlobals || {};\n globals = $.jMaskGlobals = $.extend(true, {}, globals, $.jMaskGlobals);\n\n // looking for inputs with data-mask attribute\n if (globals.dataMask) {\n $.applyDataMask();\n }\n\n setInterval(function() {\n if ($.jMaskGlobals.watchDataMask) {\n $.applyDataMask();\n }\n }, globals.watchInterval);\n}, window.jQuery, window.Zepto));\n\n},{\"jquery\":3}],2:[function(require,module,exports){\n/*!\r\n * jQuery Validation Plugin v1.18.0\r\n *\r\n * https://jqueryvalidation.org/\r\n *\r\n * Copyright (c) 2018 Jörn Zaefferer\r\n * Released under the MIT license\r\n */\r\n(function( factory ) {\r\n\tif ( typeof define === \"function\" && define.amd ) {\r\n\t\tdefine( [\"jquery\"], factory );\r\n\t} else if (typeof module === \"object\" && module.exports) {\r\n\t\tmodule.exports = factory( require( \"jquery\" ) );\r\n\t} else {\r\n\t\tfactory( jQuery );\r\n\t}\r\n}(function( $ ) {\r\n\r\n$.extend( $.fn, {\n\n\t// https://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\n\t\t\t\t// Track the used submit button to properly handle scripted\n\t\t\t\t// submits later.\n\t\t\t\tvalidator.submitButton = event.currentTarget;\n\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Validate the form on submit\n\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\n\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden, result;\n\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t// The hidden input is inserted in two cases:\n\t\t\t\t\t// - A user defined a `submitHandler`\n\t\t\t\t\t// - There was a pending request due to `remote` method and `stopRequest()`\n\t\t\t\t\t// was called to submit the form in case it's valid\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\n\t\t\t\t\t\thidden = $( \"\" )\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( hidden ) {\n\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn validator;\n\t},\n\n\t// https://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator, errorList;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\terrorList = [];\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\tif ( !valid ) {\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\n\t// https://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\tif ( element == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !element.form && element.isContentEditable ) {\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\n\t\t\telement.name = this.attr( \"name\" );\n\t\t}\n\n\t\tif ( element.form == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t} );\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// Make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t}\n\n\t\t// Make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param } );\n\t\t}\n\n\t\treturn data;\n\t}\n} );\n\n// Custom selectors\n$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n\t// https://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !$.trim( \"\" + $( a ).val() );\n\t},\n\n\t// https://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\tvar val = $( a ).val();\n\t\treturn val !== null && !!$.trim( \"\" + val );\n\t},\n\n\t// https://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n} );\n\n// Constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// https://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( params === undefined ) {\n\t\treturn source;\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t} );\n\t} );\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tpendingClass: \"pending\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusCleanup: false,\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t// Shift => 16\n\t\t\t// Ctrl => 17\n\t\t\t// Alt => 18\n\t\t\t// Caps lock => 20\n\t\t\t// End => 35\n\t\t\t// Home => 36\n\t\t\t// Left arrow => 37\n\t\t\t// Up arrow => 38\n\t\t\t// Right arrow => 39\n\t\t\t// Down arrow => 40\n\t\t\t// Insert => 45\n\t\t\t// Num lock => 144\n\t\t\t// AltGr key => 225\n\t\t\tvar excludedKeys = [\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t];\n\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\n\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// Or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar currentForm = this.currentForm,\n\t\t\t\tgroups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t} );\n\n\t\t\tfunction delegate( event ) {\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( !this.form && this.isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\n\t\t\t\t}\n\n\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\n\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\n\t\t\t\tif ( currentForm !== this.form ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\n\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tv = this,\n\t\t\t\tresult = true,\n\t\t\t\trs, group;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t// containing a value\n\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\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\trs = this.check( checkElement ) !== false;\n\t\t\t\tresult = result && rs;\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tif ( !this.numberOfInvalids() ) {\n\n\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\n\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\tvar validator = this;\n\n\t\t\t\t// Add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.invalid = {};\n\t\t\tthis.submitted = {};\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\n\n\t\t\tthis.resetElements( elements );\n\t\t},\n\n\t\tresetElements: function( elements ) {\n\t\t\tvar i;\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t}\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\n\t\t\t\t// This check allows counting elements with empty error\n\t\t\t\t// message as invalid elements\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\n\t\thideThese: function( errors ) {\n\t\t\terrors.not( this.containers ).text( \"\" );\n\t\t\tthis.addWrapper( errors ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.focus()\n\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t} ).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $( this.currentForm )\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter( function() {\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( this.isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = name;\n\t\t\t\t}\n\n\t\t\t\t// Ignore elements that belong to other/nested forms\n\t\t\t\tif ( this.form !== validator.currentForm ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ name ] = true;\n\t\t\t\treturn true;\n\t\t\t} );\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\tresetInternals: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.resetInternals();\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar $element = $( element ),\n\t\t\t\ttype = element.type,\n\t\t\t\tval, idx;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t}\n\n\t\t\tif ( element.isContentEditable ) {\n\t\t\t\tval = $element.text();\n\t\t\t} else {\n\t\t\t\tval = $element.val();\n\t\t\t}\n\n\t\t\tif ( type === \"file\" ) {\n\n\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t}\n\n\t\t\t\t// Legacy browsers\n\t\t\t\t// Unix-based path\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Windows-based path\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Just the file name\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t} ).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule, normalizer;\n\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = rules.normalizer;\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = this.settings.normalizer;\n\t\t\t}\n\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\n\t\t\t// of using the real one.\n\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\tif ( normalizer ) {\n\t\t\t\tval = normalizer.call( element, val );\n\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\n\t\t\t\tdelete rules.normalizer;\n\t\t\t}\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// Return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// Return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t},\n\n\t\t// Return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t// of the following form:\n\t\t// rule = {\n\t\t// method: \"method name\",\n\t\t// parameters: \"the given method parameters\"\n\t\t// }\n\t\t//\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t// old code, and will be removed in the next major release.\n\t\tdefaultMessage: function( element, rule ) {\n\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\trule = { method: rule };\n\t\t\t}\n\n\t\t\tvar message = this.findDefined(\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\n\t\t\t\t),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule );\n\n\t\t\tthis.errorList.push( {\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t} );\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\treturn this.element;\n\t\t\t} );\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place, group, errorID, v,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\n\t\t\tif ( error.length ) {\n\n\t\t\t\t// Refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// Replace message on existing label\n\t\t\t\terror.html( message );\n\t\t\t} else {\n\n\t\t\t\t// Create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass )\n\t\t\t\t\t.html( message || \"\" );\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\n\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\terrorID = error.attr( \"id\" );\n\n\t\t\t\t\t// Respect existing non-error aria-describedby\n\t\t\t\t\tif ( !describedBy ) {\n\t\t\t\t\t\tdescribedBy = errorID;\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\n\t\t\t\t\t\t// Add to end of list if not already present\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t\t\t}\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\tv = this;\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\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\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t// as a literal part of a name/id or any selector.\n\t\tescapeCssMeta: function( string ) {\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\n\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name );\n\t\t\t}\n\n\t\t\t// Always apply ignore filter\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\n\t\t\t\t$( this.currentForm ).submit();\n\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\n\t\t\t\t// to ensure that the value of the used submit button is passed on\n\t\t\t\t// for scripted submits triggered by this method\n\t\t\t\tif ( this.submitButton ) {\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\n\t\t\t\t}\n\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element, method ) {\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t} );\n\t\t},\n\n\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\tdestroy: function() {\n\t\t\tthis.resetForm();\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.off( \".validate\" )\n\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\n\t\t\t\t.find( \".validate-lessThan-blur\" )\n\t\t\t\t\t.off( \".validate-lessThan\" )\n\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\n\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-lessThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThan-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThan\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t// allows type=\"date\" and others to be compared as strings\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\tvalue = Number( value );\n\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\tif ( isNaN( value ) ) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( value || value === 0 ) {\n\t\t\trules[ method ] = value;\n\t\t} else if ( type === method && type !== \"range\" ) {\n\n\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t// does not test for the html5 'range' type\n\t\t\trules[ method ] = true;\n\t\t}\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// Support for in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\n\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\n\t\t\t// Cast empty attributes like `data-rule-required` to `true`\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = true;\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\n\t\t// Handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = $.isFunction( parameter ) && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t} );\n\n\t\t// Clean number parameters\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t} );\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( $.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\n\t\t\t// Auto-create ranges\n\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t} );\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\n\tmethods: {\n\n\t\t// https://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\n\t\t\t// Check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn value !== undefined && value !== null && value.length > 0;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t// modified to allow protocol-relative URLs\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})).?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/date-method/\n\t\tdate: ( function() {\n\t\t\tvar called = false;\n\n\t\t\treturn function( value, element ) {\n\t\t\t\tif ( !called ) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\n\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\n\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\n\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\n\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t\t};\n\t\t}() ),\n\n\t\t// https://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/step-method/\n\t\tstep: function( value, element, param ) {\n\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t},\n\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t},\n\t\t\t\tvalid = true,\n\t\t\t\tdecimals;\n\n\t\t\t// Works only for text, number and range input types\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\tif ( notSupported ) {\n\t\t\t\tthrow new Error( errorMessage );\n\t\t\t}\n\n\t\t\tdecimals = decimalPlaces( param );\n\n\t\t\t// Value can't have too many decimals\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\treturn this.optional( element ) || valid;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param, method ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\tvalidator, data, optionDataString;\n\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\tif ( previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: \"validate\" + element.name,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.resetInternals();\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\t}\n\n} );\n\r\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = xhr;\n\t\t}\n\t} );\n} else {\n\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\treturn pendingRequests[ port ];\n\t\t}\n\t\treturn ajax.apply( this, arguments );\n\t};\n}\nreturn $;\r\n}));\n},{\"jquery\":3}],3:[function(require,module,exports){\n/*!\n * jQuery JavaScript Library v3.3.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2018-01-20T17:24Z\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 document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\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 // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, doc, node ) {\n\t\tdoc = doc || document;\n\n\t\tvar i,\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\t\t\t\tif ( node[ i ] ) {\n\t\t\t\t\tscript[ i ] = node[ i ];\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.3.1\",\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\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\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\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\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( 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\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && Array.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\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\n\t\t/* eslint-disable no-unused-vars */\n\t\t// See https://github.com/eslint/eslint/issues/6125\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 global context\n\tglobalEval: function( code ) {\n\t\tDOMEval( code );\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// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\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[ 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 concat.apply( [], 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( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\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.3\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-08-08\n */\n(function( window ) {\n\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\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\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\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|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// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\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\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\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 + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\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)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\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 + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\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-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\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 ) + \"\\\\\" + ch.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\tdisabledAncestor = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && (\"form\" in elem || \"label\" in elem);\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\t// Support: Android<4.0\n\t// Detect silently failing push.apply\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\tpush_native.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\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\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\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!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\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 + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\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\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\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\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\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\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\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\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\t\tdisabledAncestor( 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\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\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\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\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\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/* 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\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\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\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// 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\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// 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\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\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\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(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\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\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\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\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\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\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\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ 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\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\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}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\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\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\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\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\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\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\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\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] || match[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\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\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] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\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\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\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() { return true; } :\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 + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\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\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};\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\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\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\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\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 ] || (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\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\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\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\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 || elem.innerText || 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\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 && (!document.hasFocus || document.hasFocus()) && !!(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\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) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\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\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\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 || attr.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 ? argument + length : argument;\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\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\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\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\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 ] || (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\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( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\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\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\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\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\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\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\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).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\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\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\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\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\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\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\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( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\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\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].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\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 ) || context\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\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\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\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 return 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 if ( nodeName( elem, \"iframe\" ) ) {\n return elem.contentDocument;\n }\n\n // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n if ( nodeName( elem, \"template\" ) ) {\n elem = elem.content || elem;\n }\n\n return 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 master Deferred\n\t\t\tmaster = 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\tmaster.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, master.done( updateFunc( i ) ).resolve, master.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 ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.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 ), master.reject );\n\t\t}\n\n\t\treturn master.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\tvalue :\n\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 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\tjQuery.contains( elem.ownerDocument, elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\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.apply( elem, args || [] );\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\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 = ( 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// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"\" ],\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\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\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, contains, 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\tcontains = jQuery.contains( elem.ownerDocument, 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 ( contains ) {\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\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} )();\nvar documentElement = document.documentElement;\n\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 only\n// See #13393 for more info\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// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\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 = {};\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\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ 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// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.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\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\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\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn nodeName( event.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\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\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\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\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/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\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, pdataCur, 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.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.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 = concat.apply( [], 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 ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\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, \"\" ), doc, node );\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 && jQuery.contains( node.ownerDocument, 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.replace( rxhtmlTag, \"<$1>\" );\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 = jQuery.contains( elem.ownerDocument, 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 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\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = div.offsetWidth === 36 || \"absolute\";\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\treliableMarginLeftVal,\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\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 === \"\" && !jQuery.contains( elem.ownerDocument, 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\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\n\tcssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style;\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\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 property mapped along what jQuery.cssProps suggests or to\n// a vendor prefixed property.\nfunction finalPropName( name ) {\n\tvar ret = jQuery.cssProps[ name ];\n\tif ( !ret ) {\n\t\tret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;\n\t}\n\treturn ret;\n}\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\t\t) );\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\t\tval = curCSS( elem, dimension, styles ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox;\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\t// Check for style in case a browser which returns unreliable values\n\t// for getComputedStyle silently falls back to the reliable elem.style\n\tvalueIsBorderBox = valueIsBorderBox &&\n\t\t( support.boxSizingReliable() || val === elem.style[ dimension ] );\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\tif ( val === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) {\n\n\t\tval = elem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ];\n\n\t\t// offsetWidth/offsetHeight provide border-box values\n\t\tvalueIsBorderBox = true;\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\"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\tif ( type === \"number\" ) {\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\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\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\t\t\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra && boxModelAdjustment(\n\t\t\t\t\telem,\n\t\t\t\t\tdimension,\n\t\t\t\t\textra,\n\t\t\t\t\tisBorderBox,\n\t\t\t\t\tstyles\n\t\t\t\t);\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 && support.scrollboxSize() === styles.position ) {\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\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\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\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/* 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\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\t\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 && type !== false ) {\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\"\" :\n\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\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\" ) || {} )[ 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\t\t\t\tvar doc = this.ownerDocument || 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,\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 = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\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\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\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\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} )\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} )\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\toriginAnchor.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\t\tjQuery( callbackContext ) :\n\t\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() ] = 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;\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++ ) + uncached;\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// 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\n\njQuery._evalUrl = function( url ) {\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\t\t\"throws\": true\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 requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"