{"version":3,"sources":["webpack:///./node_modules/stimulus/dist/stimulus.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.esm.js","webpack:///./node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js"],"names":["_slicedToArray","arr","i","Array","isArray","_arrayWithHoles","r","l","t","Symbol","iterator","e","n","u","a","f","o","call","next","Object","done","push","value","length","return","_iterableToArrayLimit","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","len","arr2","EventListener","eventTarget","eventName","eventOptions","this","unorderedBindings","Set","connect","addEventListener","disconnect","removeEventListener","bindingConnected","binding","add","bindingDisconnected","delete","handleEvent","event","extendedEvent","stopImmediatePropagation","assign","immediatePropagationStopped","extendEvent","bindings","hasBindings","size","sort","left","right","leftIndex","index","rightIndex","Dispatcher","application","eventListenerMaps","Map","started","start","eventListeners","forEach","eventListener","stop","values","reduce","listeners","map","concat","fetchEventListenerForBinding","clearEventListeners","arguments","undefined","clearEventListenersForBinding","handleError","error","message","detail","removeMappedEventListenerFor","eventListenerMap","fetchEventListenerMapForEventTarget","cacheKey","fetchEventListener","get","createEventListener","set","parts","keys","key","join","defaultActionDescriptorFilters","_ref","stopPropagation","prevent","_ref2","preventDefault","self","_ref3","element","target","descriptorPattern","parseEventTarget","eventTargetName","window","document","camelize","replace","_","char","toUpperCase","namespaceCamelize","capitalize","charAt","dasherize","toLowerCase","isSomething","object","hasProperty","property","hasOwnProperty","allModifiers","Action","descriptor","schema","tagName","defaultEventNames","getDefaultEventNameForElement","identifier","methodName","keyFilter","forToken","token","descriptorString","matches","trim","match","includes","split","options","parseActionDescriptorString","content","eventFilter","shouldIgnoreKeyboardEvent","filters","keyFilterDissatisfied","standardFilter","filter","keyMappings","shouldIgnoreMouseEvent","params","pattern","RegExp","_ref4","attributes","typecast","_allModifiers$map2","modifier","meta","ctrl","alt","shift","metaKey","ctrlKey","altKey","shiftKey","button","form","details","input","getAttribute","select","textarea","Error","JSON","parse","o_O","Binding","context","action","actionEvent","prepareActionEvent","willBeInvokedByEvent","applyEventModifiers","invokeWithEvent","method","controller","actionDescriptorFilters","passes","_ref5","entries","_ref6","currentTarget","logDebugActivity","KeyboardEvent","MouseEvent","Element","contains","scope","containsElement","ElementObserver","delegate","mutationObserverInit","childList","subtree","elements","mutationObserver","MutationObserver","mutations","processMutations","observe","refresh","pause","callback","takeRecords","matchElementsInTree","has","removeElement","addElement","mutation","processMutation","type","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","elementAttributeChanged","matchElement","nodes","node","elementFromNode","processTree","elementIsActive","tree","processor","nodeType","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","selector","hasAttribute","querySelectorAll","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","fetch","del","prune","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","_ref7","_ref8","_ref9","_ref10","SelectorObserver","_selector","matchesByElement","selectorMatchElement","selectorMatched","selectors","selectorUnmatched","_attributeName","matchedBefore","StringMapObserver","stringMap","attributeOldValue","knownAttributeNames","refreshAttribute","oldValue","getStringMapKeyForAttribute","stringMapKeyAdded","stringMapValueChanged","stringMapKeyRemoved","currentAttributeNames","recordedAttributeNames","attribute","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","_this$refreshTokensFo2","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokens","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","Math","max","zip","findIndex","_ref11","_ref12","previousToken","currentToken","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","connectAction","disconnectAction","clear","ValueObserver","receiver","stringMapObserver","valueDescriptorMap","invokeChangedCallbacksForDefaultValues","invokeChangedCallback","writer","defaultValue","valueDescriptorNameMap","_ref13","valueDescriptors","data","rawValue","rawOldValue","changedMethodName","changedMethod","reader","descriptors","hasMethodName","TargetObserver","targetsByName","disconnectAllTargets","_ref14","connectTarget","_ref15","disconnectTarget","_a","targetConnected","targetDisconnected","readInheritableStaticArrayValues","propertyName","ancestors","getAncestorsForConstructor","definition","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","getPrototypeOf","reverse","OutletObserver","outletsByName","outletElementsByName","selectorObserverMap","attributeObserverMap","outletDefinitions","outletName","setupSelectorObserverForOutlet","setupAttributeObserverForOutlet","dependentContexts","observer","disconnectAllOutlets","stopSelectorObservers","stopAttributeObservers","_ref16","outlet","getOutlet","connectOutlet","_ref17","getOutletFromMap","disconnectOutlet","_ref18","hasOutlet","hasOutletController","controllerAttribute","_element","getOutletNameFromOutletAttributeName","updateSelectorObserverForOutlet","outletConnected","outletDisconnected","selectorObserver","body","attributeNameForOutletName","outlets","getSelectorForOutletName","outletAttributeForScope","find","outletDependencies","dependencies","router","modules","module","controllerConstructor","dependentControllerIdentifiers","identifiers","contexts","getControllerForElementAndIdentifier","Context","_this","functionName","bindingObserver","dispatcher","valueObserver","targetObserver","outletObserver","initialize","parentElement","invokeControllerMethod","_len","args","_key2","bless","properties","shadowConstructor","extend","shadowProperties","getOwnKeys","shadowingDescriptor","getOwnPropertyDescriptor","getShadowedDescriptor","getShadowProperties","defineProperties","shadow","blessings","blessedProperties","blessing","getBlessedProperties","getOwnPropertySymbols","getOwnPropertyNames","extendWithReflect","extended","Reflect","construct","create","setPrototypeOf","b","testReflectExtension","Module","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","ClassMap","getDataKey","getAll","getAttributeName","getAttributeNameForKey","DataMap","setAttribute","removeAttribute","Guide","logger","warnedKeysByObject","warn","warnedKeys","attributeValueContainsToken","TargetSet","targetName","_len2","targetNames","_key3","findTarget","findLegacyTarget","findAll","_len3","_key4","targets","findAllTargets","findAllLegacyTargets","getSelectorForTargetName","findElement","findAllElements","targetAttributeForScope","getLegacySelectorForTargetName","deprecate","targetDescriptor","targetAttribute","revisedAttributeName","guide","OutletSet","controllerElement","_len4","outletNames","_key5","findOutlet","_len5","_key6","findAllOutlets","queryElements","matchesElement","Scope","classes","closest","controllerSelector","documentScope","isDocumentScope","documentElement","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","parseValueForElementAndIdentifier","scopesByIdentifier","fetchScopesByIdentifierForElement","createScopeForElementAndIdentifier","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","loadDefinition","unloadIdentifier","connectModule","afterLoad","disconnectModule","getContextForElementAndIdentifier","proposeToConnectScopeForElementAndIdentifier","console","defaultSchema","enter","tab","esc","space","up","down","home","end","page_up","page_down","objectFromEntries","c","array","memo","_ref19","_ref20","k","v","Application","_this2","debug","logFormattedMessage","Promise","resolve","readyState","register","load","registerActionOption","head","_len6","rest","_key7","shouldLoad","unload","_len7","_key8","controllers","onerror","groupCollapsed","log","groupEnd","getOutletController","getControllerAndEnsureConnectedScope","outletController","parseValueDefinitionPair","_ref21","_ref22","payload","typeDefinition","typeObject","typeFromObject","hasType","hasDefault","default","fullObject","onlyType","onlyDefault","parseValueTypeConstant","typeFromDefaultValue","parseValueTypeDefault","parseValueTypeObject","typeFromConstant","propertyPath","parseValueTypeDefinition","constant","defaultValuesByType","constantFromType","defaultValueForDefinition","hasCustomDefaultValue","readers","writers","valueDescriptorForTokenAndTypeDefinition","Boolean","Number","String","boolean","number","string","writeJSON","stringify","Controller","_identifier","_application","dispatch","_ref23","_ref23$target","_ref23$detail","_ref23$prefix","prefix","_ref23$bubbles","bubbles","_ref23$cancelable","cancelable","CustomEvent","dispatchEvent","classDefinition","targetDefinition","valueDefinitionPairs","propertyDescriptorMap","result","valueDefinitionPair","valueDescriptor","read","write","propertiesForValueDefinitionPair","outletDefinition","camelizedName","outletElement","propertiesForOutletDefinition","global","factory","exports","w","noGlobal","getProto","flat","apply","indexOf","class2type","hasOwn","fnToString","ObjectFunctionString","support","isFunction","obj","item","isWindow","preservedScriptAttributes","src","nonce","noModule","DOMEval","code","doc","val","script","createElement","text","appendChild","parentNode","removeChild","toType","version","rhtmlSuffix","jQuery","fn","init","isArrayLike","nodeName","elem","jquery","toArray","num","pushStack","elems","ret","merge","prevObject","each","first","eq","last","even","grep","_elem","odd","j","splice","copy","copyIsArray","clone","deep","isPlainObject","expando","random","isReady","msg","noop","proto","Ctor","isEmptyObject","globalEval","textContent","nodeValue","makeArray","results","inArray","isXMLDoc","namespace","namespaceURI","docElem","ownerDocument","second","invert","callbackExpect","arg","guid","_i","pop","whitespace","rtrimCSS","bup","compareDocumentPosition","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","escapeSelector","sel","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","fromCharCode","unloadHandler","setDocument","inDisabledFieldset","addCombinator","disabled","dir","childNodes","els","seed","m","nid","groups","newSelector","newContext","exec","getElementById","id","getElementsByTagName","getElementsByClassName","testContext","tokenize","toSelector","qsaError","cache","cacheLength","markFunction","assert","el","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","subWindow","webkitMatchesSelector","msMatchesSelector","defaultView","top","getById","getElementsByName","disconnectedMatch","cssHas","querySelector","attrId","getAttributeNode","tag","className","innerHTML","compare","sortDetached","expr","matchesSelector","attr","attrHandle","uniqueSort","duplicates","sortStable","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","operator","check","what","_argument","simple","forward","ofType","_context","xml","outerCache","nodeIndex","parent","useCache","diff","firstChild","lastChild","pseudo","setFilters","idx","matched","not","matcher","compile","unmatched","lang","elemLang","hash","location","root","focus","activeElement","err","safeActiveElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","nextSibling","header","_matchIndexes","lt","gt","nth","radio","checkbox","file","password","image","submit","reset","parseOnly","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","matcherOut","preMap","postMap","preexisting","multipleContexts","matcherIn","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","unique","getText","isXML","until","truncate","is","siblings","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","cur","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","rnothtmlwhite","Identity","Thrower","ex","adoptValue","reject","noValue","promise","fail","then","Callbacks","flag","createOptions","firing","memory","fired","locked","list","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","handler","special","that","mightThrow","notifyWith","resolveWith","process","exceptionHook","rejectWith","getErrorHook","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","asyncError","stack","readyException","readyList","completed","catch","readyWait","wait","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","owner","Data","uid","defineProperty","configurable","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","getData","removeData","_data","_removeData","attrs","dequeue","startLength","hooks","_queueHooks","unshift","setter","clearQueue","tmp","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","show","hide","toggle","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","option","wrapMap","thead","col","tr","td","_default","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","rhtml","buildFragment","scripts","selection","ignored","wrap","attached","fragment","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","on","types","one","origFn","off","leverageNative","isSetup","saved","isTrigger","delegateType","trigger","isImmediatePropagationStopped","handleObjIn","eventHandle","events","handleObj","handlers","namespaces","origType","elemData","handle","triggered","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","Event","enumerable","originalEvent","writable","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","Date","now","isSimulated","changedTouches","eventPhase","pageX","pageY","view","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","focusMappedHandler","documentMode","simulate","attaches","dataHolder","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","rcustomProp","getStyles","opener","getComputedStyle","swap","old","rboxStyle","curCSS","computed","width","minWidth","maxWidth","isCustomProp","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","height","parseInt","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","marginDelta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","aspectRatio","borderImageSlice","columnCount","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","origName","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","margin","padding","border","suffix","expand","expanded","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","bind","complete","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","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","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","addClass","classNames","curValue","finalValue","removeClass","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","triggerHandler","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","undelegate","hover","fnOver","fnOut","rtrim","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","_jQuery","_$","$","noConflict","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","loadCSPNonce","ref","cspNonce","mozMatchesSelector","oMatchesSelector","setData","isContentEditable","isEditable","csrfParam","csrfToken","CSRFProtection","refreshCSRFTokens","createEvent","initCustomEvent","stopEverything","eventType","AcceptHeaders","createXHR","prepareOptions","processResponse","floor","OPENED","accept","withCredentials","DONE","parser","isCrossDomain","serializeElement","additionalParam","inputs","formElements","allowAction","handleConfirm","confirm","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","originalText","handleMethod","formContent","link","isRemote","handleRemote","enctype","FormData","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","rails","_rails_loaded","sparkMd5","undefined$1","hex_chr","md5cycle","x","d","md5blk","md5blks","md5blk_array","md51","tail","lo","hi","substring","md51_array","subarray","Uint8Array","rhex","hex","toUtf8","str","unescape","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arrayBuffer2Utf8Str","concatenateArrayBuffers","byteLength","buffer","hexToBinaryString","bytes","substr","SparkMD5","clamp","min","targetArray","sourceArray","begin","appendBinary","_buff","_length","_hash","_finish","getState","setState","destroy","hashBinary","fileSlice","File","mozSlice","webkitSlice","FileChecksum","chunkSize","chunkCount","chunkIndex","md5Buffer","fileReader","FileReader","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","btoa","readAsArrayBuffer","eventInit","initEvent","BlobRecord","checksum","filename","content_type","byte_size","getMetaValue","requestDidLoad","requestDidError","_this$xhr","blob","direct_upload","directUploadData","toJSON","BlobUpload","_blob$directUploadDat","_this$xhr2","DirectUpload","upload","messages","DirectUploadController","directUpload","hiddenInput","insertAdjacentElement","dispatchError","signed_id","uploadRequestDidProgress","loaded","total","alert","directUploadWillCreateBlobWithXHR","directUploadWillStoreFileWithXHR","DirectUploadsController","files","createDirectUploadControllers","startNextController","processingAttribute","submitButtonsByForm","didClick","didSubmitForm","didSubmitRemoteElement","handleFormSubmissionEvent","enable","submitForm","ActiveStorage","definitionsFromContext","logicalName","identifierForContextKey","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey"],"mappings":"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","file":"js/vendors~admin~application-b125679875534099bf51.chunk.js","sourcesContent":["function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/*\nStimulus 3.2.1\nCopyright © 2023 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index,\n rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n const stopImmediatePropagation = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n }\n });\n }\n}\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(eventListener => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(eventListener => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding) {\n let clearEventListeners = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners) this.clearEventListenersForBinding(binding);\n }\n handleError(error, message) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0) this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions).sort().forEach(key => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\nconst defaultActionDescriptorFilters = {\n stop(_ref) {\n let event = _ref.event,\n value = _ref.value;\n if (value) event.stopPropagation();\n return true;\n },\n prevent(_ref2) {\n let event = _ref2.event,\n value = _ref2.value;\n if (value) event.preventDefault();\n return true;\n },\n self(_ref3) {\n let event = _ref3.event,\n value = _ref3.value,\n element = _ref3.element;\n if (value) {\n return element === event.target;\n } else {\n return true;\n }\n }\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[2];\n let keyFilter = matches[3];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName,\n eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n identifier: matches[5],\n methodName: matches[6],\n keyFilter: matches[1] || keyFilter\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n } else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions.split(\":\").reduce((options, token) => Object.assign(options, {\n [token.replace(/^!/, \"\")]: !/^!/.test(token)\n }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\nfunction isSomething(object) {\n return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n shouldIgnoreKeyboardEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = this.keyFilter.split(\"+\");\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n const standardFilter = filters.filter(key => !allModifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!hasProperty(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n shouldIgnoreMouseEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = [this.keyFilter];\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n return false;\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const _ref4 of Array.from(this.element.attributes)) {\n const name = _ref4.name;\n const value = _ref4.value;\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n keyFilterDissatisfied(event, filters) {\n const _allModifiers$map = allModifiers.map(modifier => filters.includes(modifier)),\n _allModifiers$map2 = _slicedToArray(_allModifiers$map, 4),\n meta = _allModifiers$map2[0],\n ctrl = _allModifiers$map2[1],\n alt = _allModifiers$map2[2],\n shift = _allModifiers$map2[3];\n return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: e => e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\",\n select: () => \"change\",\n textarea: () => \"input\"\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n } catch (o_O) {\n return value;\n }\n}\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n const actionEvent = this.prepareActionEvent(event);\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n this.invokeWithEvent(actionEvent);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const element = this.action.element;\n const actionDescriptorFilters = this.context.application.actionDescriptorFilters;\n const controller = this.context.controller;\n let passes = true;\n for (const _ref5 of Object.entries(this.eventOptions)) {\n var _ref6 = _slicedToArray(_ref5, 2);\n const name = _ref6[0];\n const value = _ref6[1];\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({\n name,\n value,\n event,\n element,\n controller\n });\n } else {\n continue;\n }\n }\n return passes;\n }\n prepareActionEvent(event) {\n return Object.assign(event, {\n params: this.action.params\n });\n }\n invokeWithEvent(event) {\n const target = event.target,\n currentTarget = event.currentTarget;\n try {\n this.method.call(this.controller, event);\n this.context.logDebugActivity(this.methodName, {\n event,\n target,\n currentTarget,\n action: this.methodName\n });\n } catch (error) {\n const identifier = this.identifier,\n controller = this.controller,\n element = this.element,\n index = this.index;\n const detail = {\n identifier,\n controller,\n element,\n index,\n event\n };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n return false;\n }\n if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n } else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = {\n attributes: true,\n childList: true,\n subtree: true\n };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver(mutations => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n } else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(element, attributeName) {\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n } else {\n this.removeElement(element);\n }\n } else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree() {\n let tree = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.element;\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some(set => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey).filter(_ref7 => {\n let _ref8 = _slicedToArray(_ref7, 2),\n _key = _ref8[0],\n values = _ref8[1];\n return values.has(value);\n }).map(_ref9 => {\n let _ref10 = _slicedToArray(_ref9, 2),\n key = _ref10[0],\n _values = _ref10[1];\n return key;\n });\n }\n}\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\nclass SelectorObserver {\n constructor(element, selector, delegate, details) {\n this._selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n get selector() {\n return this._selector;\n }\n set selector(selector) {\n this._selector = selector;\n this.refresh();\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const selector = this.selector;\n if (selector) {\n const matches = element.matches(selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n } else {\n return false;\n }\n }\n matchElementsInTree(tree) {\n const selector = this.selector;\n if (selector) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(selector)).filter(match => this.matchElement(match));\n return match.concat(matches);\n } else {\n return [];\n }\n }\n elementMatched(element) {\n const selector = this.selector;\n if (selector) {\n this.selectorMatched(element, selector);\n }\n }\n elementUnmatched(element) {\n const selectors = this.matchesByElement.getKeysForValue(element);\n for (const selector of selectors) {\n this.selectorUnmatched(element, selector);\n }\n }\n elementAttributeChanged(element, _attributeName) {\n const selector = this.selector;\n if (selector) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(selector, element);\n if (matches && !matchedBefore) {\n this.selectorMatched(element, selector);\n } else if (!matches && matchedBefore) {\n this.selectorUnmatched(element, selector);\n }\n }\n }\n selectorMatched(element, selector) {\n this.delegate.selectorMatched(element, selector, this.details);\n this.matchesByElement.add(selector, element);\n }\n selectorUnmatched(element, selector) {\n this.delegate.selectorUnmatched(element, selector, this.details);\n this.matchesByElement.delete(selector, element);\n }\n}\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver(mutations => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n attributeOldValue: true\n });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue) this.stringMapKeyRemoved(key, attributeName, oldValue);\n } else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map(attribute => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const _this$refreshTokensFo = this.refreshTokensForElement(element),\n _this$refreshTokensFo2 = _slicedToArray(_this$refreshTokensFo, 2),\n unmatchedTokens = _this$refreshTokensFo2[0],\n matchedTokens = _this$refreshTokensFo2[1];\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach(token => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach(token => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(_ref11 => {\n let _ref12 = _slicedToArray(_ref11, 2),\n previousToken = _ref12[0],\n currentToken = _ref12[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n if (firstDifferingIndex == -1) {\n return [[], []];\n } else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(content => content.length).map((content, index) => ({\n element,\n attributeName,\n content,\n index\n }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({\n length\n }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const element = token.element;\n const _this$fetchParseResul = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul.value;\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const element = token.element;\n const _this$fetchParseResul2 = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul2.value;\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return {\n value\n };\n } catch (error) {\n return {\n error\n };\n }\n }\n}\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach(binding => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null) return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n } else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const _ref13 of this.valueDescriptors) {\n const key = _ref13.key;\n const name = _ref13.name;\n const defaultValue = _ref13.defaultValue;\n const writer = _ref13.writer;\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n } catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const valueDescriptorMap = this.valueDescriptorMap;\n return Object.keys(valueDescriptorMap).map(key => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach(key => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched(_ref14) {\n let element = _ref14.element,\n name = _ref14.content;\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched(_ref15) {\n let element = _ref15.element,\n name = _ref15.content;\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach(name => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map(key => [key, definition[key]]) : [];\n}\nclass OutletObserver {\n constructor(context, delegate) {\n this.started = false;\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n this.attributeObserverMap = new Map();\n }\n start() {\n if (!this.started) {\n this.outletDefinitions.forEach(outletName => {\n this.setupSelectorObserverForOutlet(outletName);\n this.setupAttributeObserverForOutlet(outletName);\n });\n this.started = true;\n this.dependentContexts.forEach(context => context.refresh());\n }\n }\n refresh() {\n this.selectorObserverMap.forEach(observer => observer.refresh());\n this.attributeObserverMap.forEach(observer => observer.refresh());\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.disconnectAllOutlets();\n this.stopSelectorObservers();\n this.stopAttributeObservers();\n }\n }\n stopSelectorObservers() {\n if (this.selectorObserverMap.size > 0) {\n this.selectorObserverMap.forEach(observer => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n stopAttributeObservers() {\n if (this.attributeObserverMap.size > 0) {\n this.attributeObserverMap.forEach(observer => observer.stop());\n this.attributeObserverMap.clear();\n }\n }\n selectorMatched(element, _selector, _ref16) {\n let outletName = _ref16.outletName;\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, _ref17) {\n let outletName = _ref17.outletName;\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, _ref18) {\n let outletName = _ref18.outletName;\n const selector = this.selector(outletName);\n const hasOutlet = this.hasOutlet(element, outletName);\n const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n if (selector) {\n return hasOutlet && hasOutletController && element.matches(selector);\n } else {\n return false;\n }\n }\n elementMatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementAttributeValueChanged(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementUnmatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n updateSelectorObserverForOutlet(outletName) {\n const observer = this.selectorObserverMap.get(outletName);\n if (observer) {\n observer.selector = this.selector(outletName);\n }\n }\n setupSelectorObserverForOutlet(outletName) {\n const selector = this.selector(outletName);\n const selectorObserver = new SelectorObserver(document.body, selector, this, {\n outletName\n });\n this.selectorObserverMap.set(outletName, selectorObserver);\n selectorObserver.start();\n }\n setupAttributeObserverForOutlet(outletName) {\n const attributeName = this.attributeNameForOutletName(outletName);\n const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n this.attributeObserverMap.set(outletName, attributeObserver);\n attributeObserver.start();\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n attributeNameForOutletName(outletName) {\n return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n }\n getOutletNameFromOutletAttributeName(attributeName) {\n return this.outletDefinitions.find(outletName => this.attributeNameForOutletName(outletName) === attributeName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach(module => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach(outlet => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter(context => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find(outlet => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get schema() {\n return this.context.schema;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\nclass Context {\n constructor(module, scope) {\n var _this = this;\n this.logDebugActivity = function (functionName) {\n let detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const identifier = _this.identifier,\n controller = _this.controller,\n element = _this.element;\n detail = Object.assign({\n identifier,\n controller,\n element\n }, detail);\n _this.application.logDebugActivity(_this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const identifier = this.identifier,\n controller = this.controller,\n element = this.element;\n detail = Object.assign({\n identifier,\n controller,\n element\n }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key2 = 1; _key2 < _len; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n controller[methodName](...args);\n }\n }\n}\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, {\n [key]: descriptor\n });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return object => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n } else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: {\n value: extended\n }\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () {};\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n } catch (error) {\n return constructor => class extended extends constructor {};\n }\n})();\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor)\n };\n}\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n } else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find() {\n for (var _len2 = arguments.length, targetNames = new Array(_len2), _key3 = 0; _key3 < _len2; _key3++) {\n targetNames[_key3] = arguments[_key3];\n }\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll() {\n for (var _len3 = arguments.length, targetNames = new Array(_len3), _key4 = 0; _key4 < _len3; _key4++) {\n targetNames[_key4] = arguments[_key4];\n }\n return targetNames.reduce((targets, targetName) => [...targets, ...this.findAllTargets(targetName), ...this.findAllLegacyTargets(targetName)], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map(element => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const identifier = this.identifier;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` + `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find() {\n for (var _len4 = arguments.length, outletNames = new Array(_len4), _key5 = 0; _key5 < _len4; _key5++) {\n outletNames[_key5] = arguments[_key5];\n }\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll() {\n for (var _len5 = arguments.length, outletNames = new Array(_len5), _key6 = 0; _key6 < _len5; _key6++) {\n outletNames[_key6] = arguments[_key6];\n }\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector) return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter(element => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter(element => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = element => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [...(this.element.matches(selector) ? [this.element] : []), ...this.queryElements(selector).filter(this.containsElement)];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope ? this : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const element = token.element,\n identifier = token.content;\n return this.parseValueForElementAndIdentifier(element, identifier);\n }\n parseValueForElementAndIdentifier(element, identifier) {\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find(context => context.element == element);\n }\n }\n proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n if (scope) {\n this.scopeObserver.elementMatchedValue(scope.element, scope);\n } else {\n console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(scope => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(scope => module.disconnectContextForScope(scope));\n }\n}\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: identifier => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({\n enter: \"Enter\",\n tab: \"Tab\",\n esc: \"Escape\",\n space: \" \",\n up: \"ArrowUp\",\n down: \"ArrowDown\",\n left: \"ArrowLeft\",\n right: \"ArrowRight\",\n home: \"Home\",\n end: \"End\",\n page_up: \"PageUp\",\n page_down: \"PageDown\"\n }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map(c => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map(n => [n, n])))\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, _ref19) => {\n let _ref20 = _slicedToArray(_ref19, 2),\n k = _ref20[0],\n v = _ref20[1];\n return Object.assign(Object.assign({}, memo), {\n [k]: v\n });\n }, {});\n}\nclass Application {\n constructor() {\n var _this2 = this;\n let element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.documentElement;\n let schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultSchema;\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = function (identifier, functionName) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (_this2.debug) {\n _this2.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({\n identifier,\n controllerConstructor\n });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head) {\n for (var _len6 = arguments.length, rest = new Array(_len6 > 1 ? _len6 - 1 : 0), _key7 = 1; _key7 < _len6; _key7++) {\n rest[_key7 - 1] = arguments[_key7];\n }\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach(definition => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head) {\n for (var _len7 = arguments.length, rest = new Array(_len7 > 1 ? _len7 - 1 : 0), _key8 = 1; _key8 < _len7; _key8++) {\n rest[_key8 - 1] = arguments[_key8];\n }\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach(identifier => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map(context => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n detail = Object.assign({\n application: this\n }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise(resolve => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n } else {\n resolve();\n }\n });\n}\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const classes = this.classes;\n if (classes.has(key)) {\n return classes.get(key);\n } else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n }\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n }\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n }\n }\n };\n}\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n let outletController = getOutletController(controller, element, outletName);\n if (outletController) return outletController;\n controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n outletController = getOutletController(controller, element, outletName);\n if (outletController) return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController) return outletController;\n throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n }\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets.map(outletElement => {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController) return outletController;\n console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n }).filter(controller => controller);\n }\n return [];\n }\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n return outletElement;\n } else {\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n }\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n }\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n }\n }\n };\n}\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n } else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n }\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n }\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n }\n }\n };\n}\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, {\n [attributeName]: valueDescriptor\n });\n }, {});\n }\n }\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const key = definition.key,\n name = definition.name,\n read = definition.reader,\n write = definition.writer;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n } else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n } else {\n this.data.set(key, write(value));\n }\n }\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n }\n }\n };\n}\nfunction parseValueDefinitionPair(_ref21, controller) {\n let _ref22 = _slicedToArray(_ref21, 2),\n token = _ref22[0],\n typeDefinition = _ref22[1];\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue)) return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\") return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const controller = payload.controller,\n token = payload.token,\n typeObject = payload.typeObject;\n const hasType = isSomething(typeObject.type);\n const hasDefault = isSomething(typeObject.default);\n const fullObject = hasType && hasDefault;\n const onlyType = hasType && !hasDefault;\n const onlyDefault = !hasType && hasDefault;\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n if (onlyType) return typeFromObject;\n if (onlyDefault) return typeFromDefaultValue;\n if (typeFromObject !== typeFromDefaultValue) {\n const propertyPath = controller ? `${controller}.${token}` : token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n }\n if (fullObject) return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const controller = payload.controller,\n token = payload.token,\n typeDefinition = payload.typeDefinition;\n const typeObject = {\n controller,\n token,\n typeObject: typeDefinition\n };\n const typeFromObject = parseValueTypeObject(typeObject);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type) return type;\n const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant) return defaultValuesByType[constant];\n const hasDefault = hasProperty(typeDefinition, \"default\");\n const hasType = hasProperty(typeDefinition, \"type\");\n const typeObject = typeDefinition;\n if (hasDefault) return typeObject.default;\n if (hasType) {\n const type = typeObject.type;\n const constantFromType = parseValueTypeConstant(type);\n if (constantFromType) return defaultValuesByType[constantFromType];\n }\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const token = payload.token,\n typeDefinition = payload.typeDefinition;\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\"\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value.replace(/_/g, \"\"));\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n }\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {}\n connect() {}\n disconnect() {}\n dispatch(eventName) {\n let _ref23 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref23$target = _ref23.target,\n target = _ref23$target === void 0 ? this.element : _ref23$target,\n _ref23$detail = _ref23.detail,\n detail = _ref23$detail === void 0 ? {} : _ref23$detail,\n _ref23$prefix = _ref23.prefix,\n prefix = _ref23$prefix === void 0 ? this.identifier : _ref23$prefix,\n _ref23$bubbles = _ref23.bubbles,\n bubbles = _ref23$bubbles === void 0 ? true : _ref23$bubbles,\n _ref23$cancelable = _ref23.cancelable,\n cancelable = _ref23$cancelable === void 0 ? true : _ref23$cancelable;\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, {\n detail,\n bubbles,\n cancelable\n });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing, OutletPropertiesBlessing];\nController.targets = [];\nController.outlets = [];\nController.values = {};\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };","/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n(function (global, factory) {\n \"use strict\";\n\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\n // For CommonJS and CommonJS-like environments where a proper `window`\n // is present, execute the factory and get jQuery.\n // For environments that do not have a `window` with a `document`\n // (such as Node.js), expose a factory as module.exports.\n // This accentuates the need for the creation of a real `window`.\n // e.g. var jQuery = require(\"jquery\")(window);\n // See ticket trac-14549 for more info.\n module.exports = global.document ? factory(global, true) : function (w) {\n if (!w.document) {\n throw new Error(\"jQuery requires a window with a document\");\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n\n // Pass this if window is not defined yet\n})(typeof window !== \"undefined\" ? window : this, function (window, noGlobal) {\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\n var arr = [];\n var getProto = Object.getPrototypeOf;\n var slice = arr.slice;\n var flat = arr.flat ? function (array) {\n return arr.flat.call(array);\n } : function (array) {\n return arr.concat.apply([], array);\n };\n var push = arr.push;\n var indexOf = arr.indexOf;\n var class2type = {};\n var toString = class2type.toString;\n var hasOwn = class2type.hasOwnProperty;\n var fnToString = hasOwn.toString;\n var ObjectFunctionString = fnToString.call(Object);\n var support = {};\n var isFunction = function isFunction(obj) {\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 // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n // Plus for old WebKit, typeof returns \"function\" for HTML collections\n // (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\" && typeof obj.item !== \"function\";\n };\n var isWindow = function isWindow(obj) {\n return obj != null && obj === obj.window;\n };\n var document = window.document;\n var preservedScriptAttributes = {\n type: true,\n src: true,\n nonce: true,\n noModule: true\n };\n function DOMEval(code, node, doc) {\n doc = doc || document;\n var i,\n val,\n script = doc.createElement(\"script\");\n script.text = code;\n if (node) {\n for (i in preservedScriptAttributes) {\n // Support: Firefox 64+, Edge 18+\n // Some browsers don't support the \"nonce\" property on scripts.\n // On the other hand, just using `getAttribute` is not enough as\n // the `nonce` attribute is reset to an empty string whenever it\n // becomes browsing-context connected.\n // See https://github.com/whatwg/html/issues/2369\n // See https://html.spec.whatwg.org/#nonce-attributes\n // The `node.getAttribute` check was added for the sake of\n // `jQuery.globalEval` so that it can fake a nonce-containing node\n // via an object.\n val = node[i] || node.getAttribute && node.getAttribute(i);\n if (val) {\n script.setAttribute(i, val);\n }\n }\n }\n doc.head.appendChild(script).parentNode.removeChild(script);\n }\n function toType(obj) {\n if (obj == null) {\n return obj + \"\";\n }\n\n // Support: Android <=2.3 only (functionish RegExp)\n return typeof obj === \"object\" || typeof obj === \"function\" ? class2type[toString.call(obj)] || \"object\" : typeof 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 var version = \"3.7.1\",\n rhtmlSuffix = /HTML$/i,\n // Define a local copy of jQuery\n jQuery = function (selector, context) {\n // The jQuery object is actually just the init constructor 'enhanced'\n // Need init if jQuery is called (just allow error to be thrown if not included)\n return new jQuery.fn.init(selector, context);\n };\n jQuery.fn = jQuery.prototype = {\n // The current version of jQuery being used\n jquery: version,\n constructor: jQuery,\n // The default length of a jQuery object is 0\n length: 0,\n toArray: function () {\n return slice.call(this);\n },\n // Get the Nth element in the matched element set OR\n // Get the whole matched element set as a clean array\n get: function (num) {\n // Return all the elements in a clean array\n if (num == null) {\n return slice.call(this);\n }\n\n // Return just the one element from the set\n return num < 0 ? this[num + this.length] : this[num];\n },\n // Take an array of elements and push it onto the stack\n // (returning the new matched element set)\n pushStack: function (elems) {\n // Build a new jQuery matched element set\n var ret = jQuery.merge(this.constructor(), elems);\n\n // Add the old object onto the stack (as a reference)\n ret.prevObject = this;\n\n // Return the newly-formed element set\n return ret;\n },\n // Execute a callback for every element in the matched set.\n each: function (callback) {\n return jQuery.each(this, callback);\n },\n map: function (callback) {\n return this.pushStack(jQuery.map(this, function (elem, i) {\n return callback.call(elem, i, elem);\n }));\n },\n slice: function () {\n return this.pushStack(slice.apply(this, arguments));\n },\n first: function () {\n return this.eq(0);\n },\n last: function () {\n return this.eq(-1);\n },\n even: function () {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return (i + 1) % 2;\n }));\n },\n odd: function () {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return i % 2;\n }));\n },\n eq: function (i) {\n var len = this.length,\n j = +i + (i < 0 ? len : 0);\n return this.pushStack(j >= 0 && j < len ? [this[j]] : []);\n },\n end: function () {\n return this.prevObject || this.constructor();\n },\n // For internal use only.\n // Behaves like an Array's method, not like a jQuery method.\n push: push,\n sort: arr.sort,\n splice: arr.splice\n };\n jQuery.extend = jQuery.fn.extend = function () {\n var options,\n name,\n src,\n copy,\n copyIsArray,\n clone,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length,\n deep = false;\n\n // Handle a deep copy situation\n if (typeof target === \"boolean\") {\n deep = target;\n\n // Skip the boolean and the target\n target = arguments[i] || {};\n i++;\n }\n\n // Handle case when target is a string or something (possible in deep copy)\n if (typeof target !== \"object\" && !isFunction(target)) {\n target = {};\n }\n\n // Extend jQuery itself if only one argument is passed\n if (i === length) {\n target = this;\n i--;\n }\n for (; i < length; i++) {\n // Only deal with non-null/undefined values\n if ((options = arguments[i]) != null) {\n // Extend the base object\n for (name in options) {\n copy = options[name];\n\n // Prevent Object.prototype pollution\n // Prevent never-ending loop\n if (name === \"__proto__\" || target === copy) {\n continue;\n }\n\n // Recurse if we're merging plain objects or arrays\n if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {\n src = target[name];\n\n // Ensure proper type for the source value\n if (copyIsArray && !Array.isArray(src)) {\n clone = [];\n } else if (!copyIsArray && !jQuery.isPlainObject(src)) {\n clone = {};\n } else {\n clone = src;\n }\n copyIsArray = false;\n\n // Never move original objects, clone them\n target[name] = jQuery.extend(deep, clone, copy);\n\n // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n\n // Return the modified object\n return target;\n };\n jQuery.extend({\n // Unique for each copy of jQuery on the page\n expando: \"jQuery\" + (version + Math.random()).replace(/\\D/g, \"\"),\n // Assume jQuery is ready without the ready module\n isReady: true,\n error: function (msg) {\n throw new Error(msg);\n },\n noop: function () {},\n isPlainObject: function (obj) {\n var proto, Ctor;\n\n // Detect obvious negatives\n // Use toString instead of jQuery.type to catch host objects\n if (!obj || toString.call(obj) !== \"[object Object]\") {\n return false;\n }\n proto = getProto(obj);\n\n // Objects with no prototype (e.g., `Object.create( null )`) are plain\n if (!proto) {\n return true;\n }\n\n // Objects with prototype are plain iff they were constructed by a global Object function\n Ctor = hasOwn.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && fnToString.call(Ctor) === ObjectFunctionString;\n },\n isEmptyObject: function (obj) {\n var name;\n for (name in obj) {\n return false;\n }\n return true;\n },\n // Evaluates a script in a provided context; falls back to the global one\n // if not specified.\n globalEval: function (code, options, doc) {\n DOMEval(code, {\n nonce: options && options.nonce\n }, doc);\n },\n each: function (obj, callback) {\n var length,\n i = 0;\n if (isArrayLike(obj)) {\n length = obj.length;\n for (; i < length; i++) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n }\n return obj;\n },\n // Retrieve the text value of an array of DOM nodes\n text: function (elem) {\n var node,\n ret = \"\",\n i = 0,\n nodeType = elem.nodeType;\n if (!nodeType) {\n // If no nodeType, this is expected to be an array\n while (node = elem[i++]) {\n // Do not traverse comment nodes\n ret += jQuery.text(node);\n }\n }\n if (nodeType === 1 || nodeType === 11) {\n return elem.textContent;\n }\n if (nodeType === 9) {\n return elem.documentElement.textContent;\n }\n if (nodeType === 3 || nodeType === 4) {\n return elem.nodeValue;\n }\n\n // Do not include comment or processing instruction nodes\n\n return ret;\n },\n // results is for internal usage only\n makeArray: function (arr, results) {\n var ret = results || [];\n if (arr != null) {\n if (isArrayLike(Object(arr))) {\n jQuery.merge(ret, typeof arr === \"string\" ? [arr] : arr);\n } else {\n push.call(ret, arr);\n }\n }\n return ret;\n },\n inArray: function (elem, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, elem, i);\n },\n isXMLDoc: function (elem) {\n var namespace = elem && elem.namespaceURI,\n docElem = elem && (elem.ownerDocument || elem).documentElement;\n\n // Assume HTML when documentElement doesn't yet exist, such as inside\n // document fragments.\n return !rhtmlSuffix.test(namespace || docElem && docElem.nodeName || \"HTML\");\n },\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n merge: function (first, second) {\n var len = +second.length,\n j = 0,\n i = first.length;\n for (; j < len; j++) {\n first[i++] = second[j];\n }\n first.length = i;\n return first;\n },\n grep: function (elems, callback, invert) {\n var callbackInverse,\n matches = [],\n i = 0,\n length = elems.length,\n callbackExpect = !invert;\n\n // Go through the array, only saving the items\n // that pass the validator function\n for (; i < length; i++) {\n callbackInverse = !callback(elems[i], i);\n if (callbackInverse !== callbackExpect) {\n matches.push(elems[i]);\n }\n }\n return matches;\n },\n // arg is for internal usage only\n map: function (elems, callback, arg) {\n var length,\n value,\n i = 0,\n ret = [];\n\n // Go through the array, translating each of the items to their new values\n if (isArrayLike(elems)) {\n length = elems.length;\n for (; i < length; i++) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret.push(value);\n }\n }\n\n // Go through every key on the object,\n } else {\n for (i in elems) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret.push(value);\n }\n }\n }\n\n // Flatten any nested arrays\n return flat(ret);\n },\n // A global GUID counter for objects\n guid: 1,\n // jQuery.support is not used in Core but other projects attach their\n // properties to it so it needs to exist.\n support: support\n });\n if (typeof Symbol === \"function\") {\n jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];\n }\n\n // Populate the class2type map\n jQuery.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"), function (_i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n function isArrayLike(obj) {\n // Support: real iOS 8.2 only (not reproducible in simulator)\n // `in` check used to prevent JIT error (gh-2145)\n // hasOwn isn't used here due to false negatives\n // regarding Nodelist length in IE\n var length = !!obj && \"length\" in obj && obj.length,\n type = toType(obj);\n if (isFunction(obj) || isWindow(obj)) {\n return false;\n }\n return type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && length - 1 in obj;\n }\n function nodeName(elem, name) {\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n }\n var pop = arr.pop;\n var sort = arr.sort;\n var splice = arr.splice;\n var whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n var rtrimCSS = new RegExp(\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\");\n\n // Note: an element does not contain itself\n jQuery.contains = function (a, b) {\n var bup = b && b.parentNode;\n return a === bup || !!(bup && bup.nodeType === 1 && (\n // Support: IE 9 - 11+\n // IE doesn't have `contains` on SVG.\n a.contains ? a.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));\n };\n\n // CSS string/identifier serialization\n // https://drafts.csswg.org/cssom/#common-serializing-idioms\n var rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n function fcssescape(ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === \"\\0\") {\n return \"\\uFFFD\";\n }\n\n // Control characters and (dependent upon position) numbers get escaped as code points\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16) + \" \";\n }\n\n // Other potentially-special ASCII characters get backslash-escaped\n return \"\\\\\" + ch;\n }\n jQuery.escapeSelector = function (sel) {\n return (sel + \"\").replace(rcssescape, fcssescape);\n };\n var preferredDoc = document,\n pushNative = push;\n (function () {\n var i,\n Expr,\n outermostContext,\n sortInput,\n hasDuplicate,\n push = pushNative,\n // Local document vars\n document,\n documentElement,\n documentIsHTML,\n rbuggyQSA,\n matches,\n // Instance-specific data\n expando = jQuery.expando,\n dirruns = 0,\n done = 0,\n classCache = createCache(),\n tokenCache = createCache(),\n compilerCache = createCache(),\n nonnativeSelectorCache = createCache(),\n sortOrder = function (a, b) {\n if (a === b) {\n hasDuplicate = true;\n }\n return 0;\n },\n booleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" + \"loop|multiple|open|readonly|required|scoped\",\n // Regular expressions\n\n // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n identifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n // Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n attributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n // Operator (capture 2)\n \"*([*^$|!~]?=)\" + whitespace +\n // \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n \"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace + \"*\\\\]\",\n pseudos = \":(\" + identifier + \")(?:\\\\((\" +\n // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n // 1. quoted (capture 3; capture 4 or capture 5)\n \"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n // 2. simple (capture 6)\n \"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n // 3. anything else (capture 2)\n \".*\" + \")\\\\)|)\",\n // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n rwhitespace = new RegExp(whitespace + \"+\", \"g\"),\n rcomma = new RegExp(\"^\" + whitespace + \"*,\" + whitespace + \"*\"),\n rleadingCombinator = new RegExp(\"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\"),\n rdescend = new RegExp(whitespace + \"|>\"),\n rpseudo = new RegExp(pseudos),\n ridentifier = new RegExp(\"^\" + identifier + \"$\"),\n matchExpr = {\n ID: new RegExp(\"^#(\" + identifier + \")\"),\n CLASS: new RegExp(\"^\\\\.(\" + identifier + \")\"),\n TAG: new RegExp(\"^(\" + identifier + \"|[*])\"),\n ATTR: new RegExp(\"^\" + attributes),\n PSEUDO: new RegExp(\"^\" + pseudos),\n CHILD: new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\"),\n bool: new RegExp(\"^(?:\" + booleans + \")$\", \"i\"),\n // For use in libraries implementing .is()\n // We use this for POS matching in `select`\n needsContext: new RegExp(\"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\")\n },\n rinputs = /^(?:input|select|textarea|button)$/i,\n rheader = /^h\\d$/i,\n // Easily-parseable/retrievable ID or TAG or CLASS selectors\n rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n rsibling = /[+~]/,\n // CSS escapes\n // https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n runescape = new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\"),\n funescape = function (escape, nonHex) {\n var high = \"0x\" + escape.slice(1) - 0x10000;\n if (nonHex) {\n // Strip the backslash prefix from a non-hex escape sequence\n return nonHex;\n }\n\n // Replace a hexadecimal escape sequence with the encoded Unicode code point\n // Support: IE <=11+\n // For values outside the Basic Multilingual Plane (BMP), manually construct a\n // surrogate pair\n return high < 0 ? String.fromCharCode(high + 0x10000) : String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);\n },\n // Used for iframes; see `setDocument`.\n // Support: IE 9 - 11+, Edge 12 - 18+\n // Removing the function wrapper causes a \"Permission Denied\"\n // error in IE/Edge.\n unloadHandler = function () {\n setDocument();\n },\n inDisabledFieldset = addCombinator(function (elem) {\n return elem.disabled === true && nodeName(elem, \"fieldset\");\n }, {\n dir: \"parentNode\",\n next: \"legend\"\n });\n\n // Support: IE <=9 only\n // Accessing document.activeElement can throw unexpectedly\n // https://bugs.jquery.com/ticket/13393\n function safeActiveElement() {\n try {\n return document.activeElement;\n } catch (err) {}\n }\n\n // Optimize for push.apply( _, NodeList )\n try {\n push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes);\n\n // Support: Android <=4.0\n // Detect silently failing push.apply\n // eslint-disable-next-line no-unused-expressions\n arr[preferredDoc.childNodes.length].nodeType;\n } catch (e) {\n push = {\n apply: function (target, els) {\n pushNative.apply(target, slice.call(els));\n },\n call: function (target) {\n pushNative.apply(target, slice.call(arguments, 1));\n }\n };\n }\n function find(selector, context, results, seed) {\n var m,\n i,\n elem,\n nid,\n match,\n groups,\n newSelector,\n newContext = context && context.ownerDocument,\n // nodeType defaults to 9, since context defaults to document\n nodeType = context ? context.nodeType : 9;\n results = results || [];\n\n // Return early from calls with invalid selector or context\n if (typeof selector !== \"string\" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {\n return results;\n }\n\n // Try to shortcut find operations (as opposed to filters) in HTML documents\n if (!seed) {\n setDocument(context);\n context = context || document;\n if (documentIsHTML) {\n // If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n // (excepting DocumentFragment context, where the methods don't exist)\n if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {\n // ID selector\n if (m = match[1]) {\n // Document context\n if (nodeType === 9) {\n if (elem = context.getElementById(m)) {\n // Support: IE 9 only\n // getElementById can match elements by name instead of ID\n if (elem.id === m) {\n push.call(results, elem);\n return results;\n }\n } else {\n return results;\n }\n\n // Element context\n } else {\n // Support: IE 9 only\n // getElementById can match elements by name instead of ID\n if (newContext && (elem = newContext.getElementById(m)) && find.contains(context, elem) && elem.id === m) {\n push.call(results, elem);\n return results;\n }\n }\n\n // Type selector\n } else if (match[2]) {\n push.apply(results, context.getElementsByTagName(selector));\n return results;\n\n // Class selector\n } else if ((m = match[3]) && context.getElementsByClassName) {\n push.apply(results, context.getElementsByClassName(m));\n return results;\n }\n }\n\n // Take advantage of querySelectorAll\n if (!nonnativeSelectorCache[selector + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(selector))) {\n newSelector = selector;\n newContext = context;\n\n // qSA considers elements outside a scoping root when evaluating child or\n // descendant combinators, which is not what we want.\n // In such cases, we work around the behavior by prefixing every selector in the\n // list with an ID selector referencing the scope context.\n // The technique has to be used as well when a leading combinator is used\n // as such selectors are not recognized by querySelectorAll.\n // Thanks to Andrew Dupont for this technique.\n if (nodeType === 1 && (rdescend.test(selector) || rleadingCombinator.test(selector))) {\n // Expand context for sibling selectors\n newContext = rsibling.test(selector) && testContext(context.parentNode) || context;\n\n // We can use :scope instead of the ID hack if the browser\n // supports it & if we're not changing the context.\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when\n // strict-comparing two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (newContext != context || !support.scope) {\n // Capture the context ID, setting it first if necessary\n if (nid = context.getAttribute(\"id\")) {\n nid = jQuery.escapeSelector(nid);\n } else {\n context.setAttribute(\"id\", nid = expando);\n }\n }\n\n // Prefix every selector in the list\n groups = tokenize(selector);\n i = groups.length;\n while (i--) {\n groups[i] = (nid ? \"#\" + nid : \":scope\") + \" \" + toSelector(groups[i]);\n }\n newSelector = groups.join(\",\");\n }\n try {\n push.apply(results, newContext.querySelectorAll(newSelector));\n return results;\n } catch (qsaError) {\n nonnativeSelectorCache(selector, true);\n } finally {\n if (nid === expando) {\n context.removeAttribute(\"id\");\n }\n }\n }\n }\n }\n\n // All others\n return select(selector.replace(rtrimCSS, \"$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 */\n function createCache() {\n var keys = [];\n function cache(key, value) {\n // Use (key + \" \") to avoid collision with native prototype properties\n // (see https://github.com/jquery/sizzle/issues/157)\n if (keys.push(key + \" \") > Expr.cacheLength) {\n // Only keep the most recent entries\n delete cache[keys.shift()];\n }\n return cache[key + \" \"] = value;\n }\n return cache;\n }\n\n /**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\n function markFunction(fn) {\n fn[expando] = true;\n return fn;\n }\n\n /**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\n function assert(fn) {\n var el = document.createElement(\"fieldset\");\n try {\n return !!fn(el);\n } catch (e) {\n return false;\n } finally {\n // Remove from its parent by default\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // release memory in IE\n el = null;\n }\n }\n\n /**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\n function createInputPseudo(type) {\n return function (elem) {\n return nodeName(elem, \"input\") && elem.type === type;\n };\n }\n\n /**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\n function createButtonPseudo(type) {\n return function (elem) {\n return (nodeName(elem, \"input\") || nodeName(elem, \"button\")) && elem.type === type;\n };\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 */\n function createDisabledPseudo(disabled) {\n // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n return function (elem) {\n // Only certain elements can match :enabled or :disabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n if (\"form\" in elem) {\n // Check for inherited disabledness on relevant non-disabled elements:\n // * listed form-associated elements in a disabled fieldset\n // https://html.spec.whatwg.org/multipage/forms.html#category-listed\n // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n // * option elements in a disabled optgroup\n // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n // All such elements have a \"form\" property.\n if (elem.parentNode && elem.disabled === false) {\n // Option elements defer to a parent optgroup if present\n if (\"label\" in elem) {\n if (\"label\" in elem.parentNode) {\n return elem.parentNode.disabled === disabled;\n } else {\n return elem.disabled === disabled;\n }\n }\n\n // Support: IE 6 - 11+\n // Use the isDisabled shortcut property to check for disabled fieldset ancestors\n return elem.isDisabled === disabled ||\n // Where there is no isDisabled, check manually\n elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;\n }\n return elem.disabled === disabled;\n\n // Try to winnow out elements that can't be disabled before trusting the disabled property.\n // Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n // even exist on them, let alone have a boolean value.\n } else if (\"label\" in elem) {\n return elem.disabled === disabled;\n }\n\n // Remaining elements are neither :enabled nor :disabled\n return false;\n };\n }\n\n /**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\n function createPositionalPseudo(fn) {\n return markFunction(function (argument) {\n argument = +argument;\n return markFunction(function (seed, matches) {\n var j,\n matchIndexes = fn([], seed.length, argument),\n i = matchIndexes.length;\n\n // Match elements found at the specified indexes\n while (i--) {\n if (seed[j = matchIndexes[i]]) {\n seed[j] = !(matches[j] = seed[j]);\n }\n }\n });\n });\n }\n\n /**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\n function testContext(context) {\n return context && typeof context.getElementsByTagName !== \"undefined\" && context;\n }\n\n /**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\n function setDocument(node) {\n var subWindow,\n doc = node ? node.ownerDocument || node : preferredDoc;\n\n // Return early if doc is invalid or already selected\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (doc == document || doc.nodeType !== 9 || !doc.documentElement) {\n return document;\n }\n\n // Update global variables\n document = doc;\n documentElement = document.documentElement;\n documentIsHTML = !jQuery.isXMLDoc(document);\n\n // Support: iOS 7 only, IE 9 - 11+\n // Older browsers didn't support unprefixed `matches`.\n matches = documentElement.matches || documentElement.webkitMatchesSelector || documentElement.msMatchesSelector;\n\n // Support: IE 9 - 11+, Edge 12 - 18+\n // Accessing iframe documents after unload throws \"permission denied\" errors\n // (see trac-13936).\n // Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n // all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n if (documentElement.msMatchesSelector &&\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n preferredDoc != document && (subWindow = document.defaultView) && subWindow.top !== subWindow) {\n // Support: IE 9 - 11+, Edge 12 - 18+\n subWindow.addEventListener(\"unload\", unloadHandler);\n }\n\n // Support: IE <10\n // Check if getElementById returns elements by name\n // The broken getElementById methods don't pick up programmatically-set names,\n // so use a roundabout getElementsByName test\n support.getById = assert(function (el) {\n documentElement.appendChild(el).id = jQuery.expando;\n return !document.getElementsByName || !document.getElementsByName(jQuery.expando).length;\n });\n\n // Support: IE 9 only\n // Check to see if it's possible to do matchesSelector\n // on a disconnected node.\n support.disconnectedMatch = assert(function (el) {\n return matches.call(el, \"*\");\n });\n\n // Support: IE 9 - 11+, Edge 12 - 18+\n // IE/Edge don't support the :scope pseudo-class.\n support.scope = assert(function () {\n return document.querySelectorAll(\":scope\");\n });\n\n // Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n // Make sure the `:has()` argument is parsed unforgivingly.\n // We include `*` in the test to detect buggy implementations that are\n // _selectively_ forgiving (specifically when the list includes at least\n // one valid selector).\n // Note that we treat complete lack of support for `:has()` as if it were\n // spec-compliant support, which is fine because use of `:has()` in such\n // environments will fail in the qSA path and fall back to jQuery traversal\n // anyway.\n support.cssHas = assert(function () {\n try {\n document.querySelector(\":has(*,:jqfake)\");\n return false;\n } catch (e) {\n return true;\n }\n });\n\n // ID filter and find\n if (support.getById) {\n Expr.filter.ID = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n return elem.getAttribute(\"id\") === attrId;\n };\n };\n Expr.find.ID = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var elem = context.getElementById(id);\n return elem ? [elem] : [];\n }\n };\n } else {\n Expr.filter.ID = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n var node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n return node && node.value === attrId;\n };\n };\n\n // Support: IE 6 - 7 only\n // getElementById is not reliable as a find shortcut\n Expr.find.ID = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var node,\n i,\n elems,\n elem = context.getElementById(id);\n if (elem) {\n // Verify the id attribute\n node = elem.getAttributeNode(\"id\");\n if (node && node.value === id) {\n return [elem];\n }\n\n // Fall back on getElementsByName\n elems = context.getElementsByName(id);\n i = 0;\n while (elem = elems[i++]) {\n node = elem.getAttributeNode(\"id\");\n if (node && node.value === id) {\n return [elem];\n }\n }\n }\n return [];\n }\n };\n }\n\n // Tag\n Expr.find.TAG = function (tag, context) {\n if (typeof context.getElementsByTagName !== \"undefined\") {\n return context.getElementsByTagName(tag);\n\n // DocumentFragment nodes don't have gEBTN\n } else {\n return context.querySelectorAll(tag);\n }\n };\n\n // Class\n Expr.find.CLASS = function (className, context) {\n if (typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML) {\n return context.getElementsByClassName(className);\n }\n };\n\n /* QSA/matchesSelector\n ---------------------------------------------------------------------- */\n\n // QSA and matchesSelector support\n\n rbuggyQSA = [];\n\n // Build QSA regex\n // Regex strategy adopted from Diego Perini\n assert(function (el) {\n var input;\n documentElement.appendChild(el).innerHTML = \"\" + \"\";\n\n // Support: iOS <=7 - 8 only\n // Boolean attributes and \"value\" are not treated correctly in some XML documents\n if (!el.querySelectorAll(\"[selected]\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\");\n }\n\n // Support: iOS <=7 - 8 only\n if (!el.querySelectorAll(\"[id~=\" + expando + \"-]\").length) {\n rbuggyQSA.push(\"~=\");\n }\n\n // Support: iOS 8 only\n // https://bugs.webkit.org/show_bug.cgi?id=136851\n // In-page `selector#id sibling-combinator selector` fails\n if (!el.querySelectorAll(\"a#\" + expando + \"+*\").length) {\n rbuggyQSA.push(\".#.+[+~]\");\n }\n\n // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n // In some of the document kinds, these selectors wouldn't work natively.\n // This is probably OK but for backwards compatibility we want to maintain\n // handling them through jQuery traversal in jQuery 3.x.\n if (!el.querySelectorAll(\":checked\").length) {\n rbuggyQSA.push(\":checked\");\n }\n\n // Support: Windows 8 Native Apps\n // The type and name attributes are restricted during .innerHTML assignment\n input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n el.appendChild(input).setAttribute(\"name\", \"D\");\n\n // Support: IE 9 - 11+\n // IE's :disabled selector does not pick up the children of disabled fieldsets\n // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n // In some of the document kinds, these selectors wouldn't work natively.\n // This is probably OK but for backwards compatibility we want to maintain\n // handling them through jQuery traversal in jQuery 3.x.\n documentElement.appendChild(el).disabled = true;\n if (el.querySelectorAll(\":disabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n }\n\n // Support: IE 11+, Edge 15 - 18+\n // IE 11/Edge don't find elements on a `[name='']` query in some cases.\n // Adding a temporary attribute to the document before the selection works\n // around the issue.\n // Interestingly, IE 10 & older don't seem to have the issue.\n input = document.createElement(\"input\");\n input.setAttribute(\"name\", \"\");\n el.appendChild(input);\n if (!el.querySelectorAll(\"[name='']\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" + whitespace + \"*(?:''|\\\"\\\")\");\n }\n });\n if (!support.cssHas) {\n // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n // Our regular `try-catch` mechanism fails to detect natively-unsupported\n // pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n // in browsers that parse the `:has()` argument as a forgiving selector list.\n // https://drafts.csswg.org/selectors/#relational now requires the argument\n // to be parsed unforgivingly, but browsers have not yet fully adjusted.\n rbuggyQSA.push(\":has\");\n }\n rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join(\"|\"));\n\n /* Sorting\n ---------------------------------------------------------------------- */\n\n // Document order sorting\n sortOrder = function (a, b) {\n // Flag for duplicate removal\n if (a === b) {\n hasDuplicate = true;\n return 0;\n }\n\n // Sort on method existence if only one input has compareDocumentPosition\n var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n if (compare) {\n return compare;\n }\n\n // Calculate position if both inputs belong to the same document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) :\n // Otherwise we know they are disconnected\n 1;\n\n // Disconnected nodes\n if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {\n // Choose the first element that is related to our preferred document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (a === document || a.ownerDocument == preferredDoc && find.contains(preferredDoc, a)) {\n return -1;\n }\n\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (b === document || b.ownerDocument == preferredDoc && find.contains(preferredDoc, b)) {\n return 1;\n }\n\n // Maintain original order\n return sortInput ? indexOf.call(sortInput, a) - indexOf.call(sortInput, b) : 0;\n }\n return compare & 4 ? -1 : 1;\n };\n return document;\n }\n find.matches = function (expr, elements) {\n return find(expr, null, null, elements);\n };\n find.matchesSelector = function (elem, expr) {\n setDocument(elem);\n if (documentIsHTML && !nonnativeSelectorCache[expr + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(expr))) {\n try {\n var ret = matches.call(elem, expr);\n\n // IE 9's matchesSelector returns false on disconnected nodes\n if (ret || support.disconnectedMatch ||\n // As well, disconnected nodes are said to be in a document\n // fragment in IE 9\n elem.document && elem.document.nodeType !== 11) {\n return ret;\n }\n } catch (e) {\n nonnativeSelectorCache(expr, true);\n }\n }\n return find(expr, document, null, [elem]).length > 0;\n };\n find.contains = function (context, elem) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((context.ownerDocument || context) != document) {\n setDocument(context);\n }\n return jQuery.contains(context, elem);\n };\n find.attr = function (elem, name) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((elem.ownerDocument || elem) != document) {\n setDocument(elem);\n }\n var fn = Expr.attrHandle[name.toLowerCase()],\n // Don't get fooled by Object.prototype properties (see trac-13807)\n val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;\n if (val !== undefined) {\n return val;\n }\n return elem.getAttribute(name);\n };\n find.error = function (msg) {\n throw new Error(\"Syntax error, unrecognized expression: \" + msg);\n };\n\n /**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\n jQuery.uniqueSort = function (results) {\n var elem,\n duplicates = [],\n j = 0,\n i = 0;\n\n // Unless we *know* we can detect duplicates, assume their presence\n //\n // Support: Android <=4.0+\n // Testing for detecting duplicates is unpredictable so instead assume we can't\n // depend on duplicate detection in all browsers without a stable sort.\n hasDuplicate = !support.sortStable;\n sortInput = !support.sortStable && slice.call(results, 0);\n sort.call(results, sortOrder);\n if (hasDuplicate) {\n while (elem = results[i++]) {\n if (elem === results[i]) {\n j = duplicates.push(i);\n }\n }\n while (j--) {\n splice.call(results, duplicates[j], 1);\n }\n }\n\n // Clear input after sorting to release objects\n // See https://github.com/jquery/sizzle/pull/225\n sortInput = null;\n return results;\n };\n jQuery.fn.uniqueSort = function () {\n return this.pushStack(jQuery.uniqueSort(slice.apply(this)));\n };\n Expr = jQuery.expr = {\n // Can be adjusted by the user\n cacheLength: 50,\n createPseudo: markFunction,\n match: matchExpr,\n attrHandle: {},\n find: {},\n relative: {\n \">\": {\n dir: \"parentNode\",\n first: true\n },\n \" \": {\n dir: \"parentNode\"\n },\n \"+\": {\n dir: \"previousSibling\",\n first: true\n },\n \"~\": {\n dir: \"previousSibling\"\n }\n },\n preFilter: {\n ATTR: function (match) {\n match[1] = match[1].replace(runescape, funescape);\n\n // Move the given value to match[3] whether quoted or unquoted\n match[3] = (match[3] || match[4] || match[5] || \"\").replace(runescape, funescape);\n if (match[2] === \"~=\") {\n match[3] = \" \" + match[3] + \" \";\n }\n return match.slice(0, 4);\n },\n CHILD: function (match) {\n /* matches from matchExpr[\"CHILD\"]\n \t1 type (only|nth|...)\n \t2 what (child|of-type)\n \t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n \t4 xn-component of xn+y argument ([+-]?\\d*n|)\n \t5 sign of xn-component\n \t6 x of xn-component\n \t7 sign of y-component\n \t8 y of y-component\n */\n match[1] = match[1].toLowerCase();\n if (match[1].slice(0, 3) === \"nth\") {\n // nth-* requires argument\n if (!match[3]) {\n find.error(match[0]);\n }\n\n // numeric x and y parameters for Expr.filter.CHILD\n // remember that false/true cast respectively to 0/1\n match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === \"even\" || match[3] === \"odd\"));\n match[5] = +(match[7] + match[8] || match[3] === \"odd\");\n\n // other types prohibit arguments\n } else if (match[3]) {\n find.error(match[0]);\n }\n return match;\n },\n PSEUDO: function (match) {\n var excess,\n unquoted = !match[6] && match[2];\n if (matchExpr.CHILD.test(match[0])) {\n return null;\n }\n\n // Accept quoted arguments as-is\n if (match[3]) {\n match[2] = match[4] || match[5] || \"\";\n\n // Strip excess characters from unquoted arguments\n } else if (unquoted && rpseudo.test(unquoted) && (\n // Get excess from tokenize (recursively)\n excess = tokenize(unquoted, true)) && (\n // advance to the next closing parenthesis\n excess = unquoted.indexOf(\")\", unquoted.length - excess) - unquoted.length)) {\n // excess is a negative index\n match[0] = match[0].slice(0, excess);\n match[2] = unquoted.slice(0, excess);\n }\n\n // Return only captures needed by the pseudo filter method (type and argument)\n return match.slice(0, 3);\n }\n },\n filter: {\n TAG: function (nodeNameSelector) {\n var expectedNodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();\n return nodeNameSelector === \"*\" ? function () {\n return true;\n } : function (elem) {\n return nodeName(elem, expectedNodeName);\n };\n },\n CLASS: function (className) {\n var pattern = classCache[className + \" \"];\n return pattern || (pattern = new RegExp(\"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\")) && classCache(className, function (elem) {\n return pattern.test(typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\");\n });\n },\n ATTR: function (name, operator, check) {\n return function (elem) {\n var result = find.attr(elem, name);\n if (result == null) {\n return operator === \"!=\";\n }\n if (!operator) {\n return true;\n }\n result += \"\";\n if (operator === \"=\") {\n return result === check;\n }\n if (operator === \"!=\") {\n return result !== check;\n }\n if (operator === \"^=\") {\n return check && result.indexOf(check) === 0;\n }\n if (operator === \"*=\") {\n return check && result.indexOf(check) > -1;\n }\n if (operator === \"$=\") {\n return check && result.slice(-check.length) === check;\n }\n if (operator === \"~=\") {\n return (\" \" + result.replace(rwhitespace, \" \") + \" \").indexOf(check) > -1;\n }\n if (operator === \"|=\") {\n return result === check || result.slice(0, check.length + 1) === check + \"-\";\n }\n return false;\n };\n },\n CHILD: function (type, what, _argument, first, last) {\n var simple = type.slice(0, 3) !== \"nth\",\n forward = type.slice(-4) !== \"last\",\n ofType = what === \"of-type\";\n return first === 1 && last === 0 ?\n // Shortcut for :nth-*(n)\n function (elem) {\n return !!elem.parentNode;\n } : function (elem, _context, xml) {\n var cache,\n outerCache,\n node,\n nodeIndex,\n start,\n dir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n parent = elem.parentNode,\n name = ofType && elem.nodeName.toLowerCase(),\n useCache = !xml && !ofType,\n diff = false;\n if (parent) {\n // :(first|last|only)-(child|of-type)\n if (simple) {\n while (dir) {\n node = elem;\n while (node = node[dir]) {\n if (ofType ? nodeName(node, name) : node.nodeType === 1) {\n return false;\n }\n }\n\n // Reverse direction for :only-* (if we haven't yet done so)\n start = dir = type === \"only\" && !start && \"nextSibling\";\n }\n return true;\n }\n start = [forward ? parent.firstChild : parent.lastChild];\n\n // non-xml :nth-child(...) stores cache data on `parent`\n if (forward && useCache) {\n // Seek `elem` from a previously-cached index\n outerCache = parent[expando] || (parent[expando] = {});\n cache = outerCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex && cache[2];\n node = nodeIndex && parent.childNodes[nodeIndex];\n while (node = ++nodeIndex && node && node[dir] || (\n // Fallback to seeking `elem` from the start\n diff = nodeIndex = 0) || start.pop()) {\n // When found, cache indexes on `parent` and break\n if (node.nodeType === 1 && ++diff && node === elem) {\n outerCache[type] = [dirruns, nodeIndex, diff];\n break;\n }\n }\n } else {\n // Use previously-cached element index if available\n if (useCache) {\n outerCache = elem[expando] || (elem[expando] = {});\n cache = outerCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex;\n }\n\n // xml :nth-child(...)\n // or :nth-last-child(...) or :nth(-last)?-of-type(...)\n if (diff === false) {\n // Use the same loop as above to seek `elem` from the start\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n if ((ofType ? nodeName(node, name) : node.nodeType === 1) && ++diff) {\n // Cache the index of each encountered element\n if (useCache) {\n outerCache = node[expando] || (node[expando] = {});\n outerCache[type] = [dirruns, diff];\n }\n if (node === elem) {\n break;\n }\n }\n }\n }\n }\n\n // Incorporate the offset, then check against cycle size\n diff -= last;\n return diff === first || diff % first === 0 && diff / first >= 0;\n }\n };\n },\n PSEUDO: function (pseudo, argument) {\n // pseudo-class names are case-insensitive\n // https://www.w3.org/TR/selectors/#pseudo-classes\n // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n // Remember that setFilters inherits from pseudos\n var args,\n fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || find.error(\"unsupported pseudo: \" + pseudo);\n\n // The user may use createPseudo to indicate that\n // arguments are needed to create the filter function\n // just as jQuery does\n if (fn[expando]) {\n return fn(argument);\n }\n\n // But maintain support for old signatures\n if (fn.length > 1) {\n args = [pseudo, pseudo, \"\", argument];\n return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {\n var idx,\n matched = fn(seed, argument),\n i = matched.length;\n while (i--) {\n idx = indexOf.call(seed, matched[i]);\n seed[idx] = !(matches[idx] = matched[i]);\n }\n }) : function (elem) {\n return fn(elem, 0, args);\n };\n }\n return fn;\n }\n },\n pseudos: {\n // Potentially complex pseudos\n not: markFunction(function (selector) {\n // Trim the selector passed to compile\n // to avoid treating leading and trailing\n // spaces as combinators\n var input = [],\n results = [],\n matcher = compile(selector.replace(rtrimCSS, \"$1\"));\n return matcher[expando] ? markFunction(function (seed, matches, _context, xml) {\n var elem,\n unmatched = matcher(seed, null, xml, []),\n i = seed.length;\n\n // Match elements unmatched by `matcher`\n while (i--) {\n if (elem = unmatched[i]) {\n seed[i] = !(matches[i] = elem);\n }\n }\n }) : function (elem, _context, xml) {\n input[0] = elem;\n matcher(input, null, xml, results);\n\n // Don't keep the element\n // (see https://github.com/jquery/sizzle/issues/299)\n input[0] = null;\n return !results.pop();\n };\n }),\n has: markFunction(function (selector) {\n return function (elem) {\n return find(selector, elem).length > 0;\n };\n }),\n contains: markFunction(function (text) {\n text = text.replace(runescape, funescape);\n return function (elem) {\n return (elem.textContent || jQuery.text(elem)).indexOf(text) > -1;\n };\n }),\n // \"Whether an element is represented by a :lang() selector\n // is based solely on the element's language value\n // being equal to the identifier C,\n // or beginning with the identifier C immediately followed by \"-\".\n // The matching of C against the element's language value is performed case-insensitively.\n // The identifier C does not have to be a valid language name.\"\n // https://www.w3.org/TR/selectors/#lang-pseudo\n lang: markFunction(function (lang) {\n // lang value must be a valid identifier\n if (!ridentifier.test(lang || \"\")) {\n find.error(\"unsupported lang: \" + lang);\n }\n lang = lang.replace(runescape, funescape).toLowerCase();\n return function (elem) {\n var elemLang;\n do {\n if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) {\n elemLang = elemLang.toLowerCase();\n return elemLang === lang || elemLang.indexOf(lang + \"-\") === 0;\n }\n } while ((elem = elem.parentNode) && elem.nodeType === 1);\n return false;\n };\n }),\n // Miscellaneous\n target: function (elem) {\n var hash = window.location && window.location.hash;\n return hash && hash.slice(1) === elem.id;\n },\n root: function (elem) {\n return elem === documentElement;\n },\n focus: function (elem) {\n return elem === safeActiveElement() && document.hasFocus() && !!(elem.type || elem.href || ~elem.tabIndex);\n },\n // Boolean properties\n enabled: createDisabledPseudo(false),\n disabled: createDisabledPseudo(true),\n checked: function (elem) {\n // In CSS3, :checked should return both checked and selected elements\n // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n return nodeName(elem, \"input\") && !!elem.checked || nodeName(elem, \"option\") && !!elem.selected;\n },\n selected: function (elem) {\n // Support: IE <=11+\n // Accessing the selectedIndex property\n // forces the browser to treat the default option as\n // selected when in an optgroup.\n if (elem.parentNode) {\n // eslint-disable-next-line no-unused-expressions\n elem.parentNode.selectedIndex;\n }\n return elem.selected === true;\n },\n // Contents\n empty: function (elem) {\n // https://www.w3.org/TR/selectors/#empty-pseudo\n // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n // but not by others (comment: 8; processing instruction: 7; etc.)\n // nodeType < 6 works because attributes (2) do not appear as children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n if (elem.nodeType < 6) {\n return false;\n }\n }\n return true;\n },\n parent: function (elem) {\n return !Expr.pseudos.empty(elem);\n },\n // Element/input types\n header: function (elem) {\n return rheader.test(elem.nodeName);\n },\n input: function (elem) {\n return rinputs.test(elem.nodeName);\n },\n button: function (elem) {\n return nodeName(elem, \"input\") && elem.type === \"button\" || nodeName(elem, \"button\");\n },\n text: function (elem) {\n var attr;\n return nodeName(elem, \"input\") && elem.type === \"text\" && (\n // Support: IE <10 only\n // New HTML5 attribute values (e.g., \"search\") appear\n // with elem.type === \"text\"\n (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\");\n },\n // Position-in-collection\n first: createPositionalPseudo(function () {\n return [0];\n }),\n last: createPositionalPseudo(function (_matchIndexes, length) {\n return [length - 1];\n }),\n eq: createPositionalPseudo(function (_matchIndexes, length, argument) {\n return [argument < 0 ? argument + length : argument];\n }),\n even: createPositionalPseudo(function (matchIndexes, length) {\n var i = 0;\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n odd: createPositionalPseudo(function (matchIndexes, length) {\n var i = 1;\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n lt: createPositionalPseudo(function (matchIndexes, length, argument) {\n var i;\n if (argument < 0) {\n i = argument + length;\n } else if (argument > length) {\n i = length;\n } else {\n i = argument;\n }\n for (; --i >= 0;) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n gt: createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument;\n for (; ++i < length;) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n })\n }\n };\n Expr.pseudos.nth = Expr.pseudos.eq;\n\n // Add button/input type pseudos\n for (i in {\n radio: true,\n checkbox: true,\n file: true,\n password: true,\n image: true\n }) {\n Expr.pseudos[i] = createInputPseudo(i);\n }\n for (i in {\n submit: true,\n reset: true\n }) {\n Expr.pseudos[i] = createButtonPseudo(i);\n }\n\n // Easy API for creating new setFilters\n function setFilters() {}\n setFilters.prototype = Expr.filters = Expr.pseudos;\n Expr.setFilters = new setFilters();\n function tokenize(selector, parseOnly) {\n var matched,\n match,\n tokens,\n type,\n soFar,\n groups,\n preFilters,\n cached = tokenCache[selector + \" \"];\n if (cached) {\n return parseOnly ? 0 : cached.slice(0);\n }\n soFar = selector;\n groups = [];\n preFilters = Expr.preFilter;\n while (soFar) {\n // Comma and first run\n if (!matched || (match = rcomma.exec(soFar))) {\n if (match) {\n // Don't consume trailing commas as valid\n soFar = soFar.slice(match[0].length) || soFar;\n }\n groups.push(tokens = []);\n }\n matched = false;\n\n // Combinators\n if (match = rleadingCombinator.exec(soFar)) {\n matched = match.shift();\n tokens.push({\n value: matched,\n // Cast descendant combinators to space\n type: match[0].replace(rtrimCSS, \" \")\n });\n soFar = soFar.slice(matched.length);\n }\n\n // Filters\n for (type in Expr.filter) {\n if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {\n matched = match.shift();\n tokens.push({\n value: matched,\n type: type,\n matches: match\n });\n soFar = soFar.slice(matched.length);\n }\n }\n if (!matched) {\n break;\n }\n }\n\n // Return the length of the invalid excess\n // if we're just parsing\n // Otherwise, throw an error or return tokens\n if (parseOnly) {\n return soFar.length;\n }\n return soFar ? find.error(selector) :\n // Cache the tokens\n tokenCache(selector, groups).slice(0);\n }\n function toSelector(tokens) {\n var i = 0,\n len = tokens.length,\n selector = \"\";\n for (; i < len; i++) {\n selector += tokens[i].value;\n }\n return selector;\n }\n function addCombinator(matcher, combinator, base) {\n var dir = combinator.dir,\n skip = combinator.next,\n key = skip || dir,\n checkNonElements = base && key === \"parentNode\",\n doneName = done++;\n return combinator.first ?\n // Check against closest ancestor/preceding element\n function (elem, context, xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n return matcher(elem, context, xml);\n }\n }\n return false;\n } :\n // Check against all ancestor/preceding elements\n function (elem, context, xml) {\n var oldCache,\n outerCache,\n newCache = [dirruns, doneName];\n\n // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n if (xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n if (matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n } else {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n outerCache = elem[expando] || (elem[expando] = {});\n if (skip && nodeName(elem, skip)) {\n elem = elem[dir] || elem;\n } else if ((oldCache = outerCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {\n // Assign to newCache so results back-propagate to previous elements\n return newCache[2] = oldCache[2];\n } else {\n // Reuse newcache so results back-propagate to previous elements\n outerCache[key] = newCache;\n\n // A match means we're done; a fail means we have to keep checking\n if (newCache[2] = matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n }\n }\n return false;\n };\n }\n function elementMatcher(matchers) {\n return matchers.length > 1 ? function (elem, context, xml) {\n var i = matchers.length;\n while (i--) {\n if (!matchers[i](elem, context, xml)) {\n return false;\n }\n }\n return true;\n } : matchers[0];\n }\n function multipleContexts(selector, contexts, results) {\n var i = 0,\n len = contexts.length;\n for (; i < len; i++) {\n find(selector, contexts[i], results);\n }\n return results;\n }\n function condense(unmatched, map, filter, context, xml) {\n var elem,\n newUnmatched = [],\n i = 0,\n len = unmatched.length,\n mapped = map != null;\n for (; i < len; i++) {\n if (elem = unmatched[i]) {\n if (!filter || filter(elem, context, xml)) {\n newUnmatched.push(elem);\n if (mapped) {\n map.push(i);\n }\n }\n }\n }\n return newUnmatched;\n }\n function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {\n if (postFilter && !postFilter[expando]) {\n postFilter = setMatcher(postFilter);\n }\n if (postFinder && !postFinder[expando]) {\n postFinder = setMatcher(postFinder, postSelector);\n }\n return markFunction(function (seed, results, context, xml) {\n var temp,\n i,\n elem,\n matcherOut,\n preMap = [],\n postMap = [],\n preexisting = results.length,\n // Get initial elements from seed or context\n elems = seed || multipleContexts(selector || \"*\", context.nodeType ? [context] : context, []),\n // Prefilter to get matcher input, preserving a map for seed-results synchronization\n matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems;\n if (matcher) {\n // If we have a postFinder, or filtered seed, or non-seed postFilter\n // or preexisting results,\n matcherOut = postFinder || (seed ? preFilter : preexisting || postFilter) ?\n // ...intermediate processing is necessary\n [] :\n // ...otherwise use results directly\n results;\n\n // Find primary matches\n matcher(matcherIn, matcherOut, context, xml);\n } else {\n matcherOut = matcherIn;\n }\n\n // Apply postFilter\n if (postFilter) {\n temp = condense(matcherOut, postMap);\n postFilter(temp, [], context, xml);\n\n // Un-match failing elements by moving them back to matcherIn\n i = temp.length;\n while (i--) {\n if (elem = temp[i]) {\n matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);\n }\n }\n }\n if (seed) {\n if (postFinder || preFilter) {\n if (postFinder) {\n // Get the final matcherOut by condensing this intermediate into postFinder contexts\n temp = [];\n i = matcherOut.length;\n while (i--) {\n if (elem = matcherOut[i]) {\n // Restore matcherIn since elem is not yet a final match\n temp.push(matcherIn[i] = elem);\n }\n }\n postFinder(null, matcherOut = [], temp, xml);\n }\n\n // Move matched elements from seed to results to keep them synchronized\n i = matcherOut.length;\n while (i--) {\n if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf.call(seed, elem) : preMap[i]) > -1) {\n seed[temp] = !(results[temp] = elem);\n }\n }\n }\n\n // Add elements to results, through postFinder if defined\n } else {\n matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);\n if (postFinder) {\n postFinder(null, results, matcherOut, xml);\n } else {\n push.apply(results, matcherOut);\n }\n }\n });\n }\n function matcherFromTokens(tokens) {\n var checkContext,\n matcher,\n j,\n len = tokens.length,\n leadingRelative = Expr.relative[tokens[0].type],\n implicitRelative = leadingRelative || Expr.relative[\" \"],\n i = leadingRelative ? 1 : 0,\n // The foundational matcher ensures that elements are reachable from top-level context(s)\n matchContext = addCombinator(function (elem) {\n return elem === checkContext;\n }, implicitRelative, true),\n matchAnyContext = addCombinator(function (elem) {\n return indexOf.call(checkContext, elem) > -1;\n }, implicitRelative, true),\n matchers = [function (elem, context, xml) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n var ret = !leadingRelative && (xml || context != outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));\n\n // Avoid hanging onto element\n // (see https://github.com/jquery/sizzle/issues/299)\n checkContext = null;\n return ret;\n }];\n for (; i < len; i++) {\n if (matcher = Expr.relative[tokens[i].type]) {\n matchers = [addCombinator(elementMatcher(matchers), matcher)];\n } else {\n matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches);\n\n // Return special upon seeing a positional matcher\n if (matcher[expando]) {\n // Find the next relative operator (if any) for proper handling\n j = ++i;\n for (; j < len; j++) {\n if (Expr.relative[tokens[j].type]) {\n break;\n }\n }\n return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(\n // If the preceding token was a descendant combinator, insert an implicit any-element `*`\n tokens.slice(0, i - 1).concat({\n value: tokens[i - 2].type === \" \" ? \"*\" : \"\"\n })).replace(rtrimCSS, \"$1\"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));\n }\n matchers.push(matcher);\n }\n }\n return elementMatcher(matchers);\n }\n function matcherFromGroupMatchers(elementMatchers, setMatchers) {\n var bySet = setMatchers.length > 0,\n byElement = elementMatchers.length > 0,\n superMatcher = function (seed, context, xml, results, outermost) {\n var elem,\n j,\n matcher,\n matchedCount = 0,\n i = \"0\",\n unmatched = seed && [],\n setMatched = [],\n contextBackup = outermostContext,\n // We must always have either seed elements or outermost context\n elems = seed || byElement && Expr.find.TAG(\"*\", outermost),\n // Use integer dirruns iff this is the outermost matcher\n dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1,\n len = elems.length;\n if (outermost) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n outermostContext = context == document || context || outermost;\n }\n\n // Add elements passing elementMatchers directly to results\n // Support: iOS <=7 - 9 only\n // Tolerate NodeList properties (IE: \"length\"; Safari: ) matching\n // elements by id. (see trac-14142)\n for (; i !== len && (elem = elems[i]) != null; i++) {\n if (byElement && elem) {\n j = 0;\n\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (!context && elem.ownerDocument != document) {\n setDocument(elem);\n xml = !documentIsHTML;\n }\n while (matcher = elementMatchers[j++]) {\n if (matcher(elem, context || document, xml)) {\n push.call(results, elem);\n break;\n }\n }\n if (outermost) {\n dirruns = dirrunsUnique;\n }\n }\n\n // Track unmatched elements for set filters\n if (bySet) {\n // They will have gone through all possible matchers\n if (elem = !matcher && elem) {\n matchedCount--;\n }\n\n // Lengthen the array for every element, matched or not\n if (seed) {\n unmatched.push(elem);\n }\n }\n }\n\n // `i` is now the count of elements visited above, and adding it to `matchedCount`\n // makes the latter nonnegative.\n matchedCount += i;\n\n // Apply set filters to unmatched elements\n // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n // equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n // no element matchers and no seed.\n // Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n // case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n // numerically zero.\n if (bySet && i !== matchedCount) {\n j = 0;\n while (matcher = setMatchers[j++]) {\n matcher(unmatched, setMatched, context, xml);\n }\n if (seed) {\n // Reintegrate element matches to eliminate the need for sorting\n if (matchedCount > 0) {\n while (i--) {\n if (!(unmatched[i] || setMatched[i])) {\n setMatched[i] = pop.call(results);\n }\n }\n }\n\n // Discard index placeholder values to get only actual matches\n setMatched = condense(setMatched);\n }\n\n // Add matches to results\n push.apply(results, setMatched);\n\n // Seedless set matches succeeding multiple successful matchers stipulate sorting\n if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {\n jQuery.uniqueSort(results);\n }\n }\n\n // Override manipulation of globals by nested matchers\n if (outermost) {\n dirruns = dirrunsUnique;\n outermostContext = contextBackup;\n }\n return unmatched;\n };\n return bySet ? markFunction(superMatcher) : superMatcher;\n }\n function compile(selector, match /* Internal Use Only */) {\n var i,\n setMatchers = [],\n elementMatchers = [],\n cached = compilerCache[selector + \" \"];\n if (!cached) {\n // Generate a function of recursive functions that can be used to check each element\n if (!match) {\n match = tokenize(selector);\n }\n i = match.length;\n while (i--) {\n cached = matcherFromTokens(match[i]);\n if (cached[expando]) {\n setMatchers.push(cached);\n } else {\n elementMatchers.push(cached);\n }\n }\n\n // Cache the compiled function\n cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers));\n\n // Save selector and tokenization\n cached.selector = selector;\n }\n return cached;\n }\n\n /**\n * A low-level selection function that works with jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\n function select(selector, context, results, seed) {\n var i,\n tokens,\n token,\n type,\n find,\n compiled = typeof selector === \"function\" && selector,\n match = !seed && tokenize(selector = compiled.selector || selector);\n results = results || [];\n\n // Try to minimize operations if there is only one selector in the list and no seed\n // (the latter of which guarantees us context)\n if (match.length === 1) {\n // Reduce context if the leading compound selector is an ID\n tokens = match[0] = match[0].slice(0);\n if (tokens.length > 2 && (token = tokens[0]).type === \"ID\" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {\n context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0];\n if (!context) {\n return results;\n\n // Precompiled matchers will still verify ancestry, so step up a level\n } else if (compiled) {\n context = context.parentNode;\n }\n selector = selector.slice(tokens.shift().value.length);\n }\n\n // Fetch a seed set for right-to-left matching\n i = matchExpr.needsContext.test(selector) ? 0 : tokens.length;\n while (i--) {\n token = tokens[i];\n\n // Abort if we hit a combinator\n if (Expr.relative[type = token.type]) {\n break;\n }\n if (find = Expr.find[type]) {\n // Search, expanding context for leading sibling combinators\n if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {\n // If seed is empty or no tokens remain, we can return early\n tokens.splice(i, 1);\n selector = seed.length && toSelector(tokens);\n if (!selector) {\n push.apply(results, seed);\n return results;\n }\n break;\n }\n }\n }\n }\n\n // Compile and execute a filtering function if one is not provided\n // Provide `match` to avoid retokenization if we modified the selector above\n (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context);\n return results;\n }\n\n // One-time assignments\n\n // Support: Android <=4.0 - 4.1+\n // Sort stability\n support.sortStable = expando.split(\"\").sort(sortOrder).join(\"\") === expando;\n\n // Initialize against the default document\n setDocument();\n\n // Support: Android <=4.0 - 4.1+\n // Detached nodes confoundingly follow *each other*\n support.sortDetached = assert(function (el) {\n // Should return 1, but returns 4 (following)\n return el.compareDocumentPosition(document.createElement(\"fieldset\")) & 1;\n });\n jQuery.find = find;\n\n // Deprecated\n jQuery.expr[\":\"] = jQuery.expr.pseudos;\n jQuery.unique = jQuery.uniqueSort;\n\n // These have always been private, but they used to be documented as part of\n // Sizzle so let's maintain them for now for backwards compatibility purposes.\n find.compile = compile;\n find.select = select;\n find.setDocument = setDocument;\n find.tokenize = tokenize;\n find.escape = jQuery.escapeSelector;\n find.getText = jQuery.text;\n find.isXML = jQuery.isXMLDoc;\n find.selectors = jQuery.expr;\n find.support = jQuery.support;\n find.uniqueSort = jQuery.uniqueSort;\n\n /* eslint-enable */\n })();\n\n var dir = function (elem, dir, until) {\n var matched = [],\n truncate = until !== undefined;\n while ((elem = elem[dir]) && elem.nodeType !== 9) {\n if (elem.nodeType === 1) {\n if (truncate && jQuery(elem).is(until)) {\n break;\n }\n matched.push(elem);\n }\n }\n return matched;\n };\n var siblings = function (n, elem) {\n var matched = [];\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== elem) {\n matched.push(n);\n }\n }\n return matched;\n };\n var rneedsContext = jQuery.expr.match.needsContext;\n var rsingleTag = /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;\n\n // Implement the identical functionality for filter and not\n function winnow(elements, qualifier, not) {\n if (isFunction(qualifier)) {\n return jQuery.grep(elements, function (elem, i) {\n return !!qualifier.call(elem, i, elem) !== not;\n });\n }\n\n // Single element\n if (qualifier.nodeType) {\n return jQuery.grep(elements, function (elem) {\n return elem === qualifier !== not;\n });\n }\n\n // Arraylike of elements (jQuery, arguments, Array)\n if (typeof qualifier !== \"string\") {\n return jQuery.grep(elements, function (elem) {\n return indexOf.call(qualifier, elem) > -1 !== not;\n });\n }\n\n // Filtered directly for both simple and complex selectors\n return jQuery.filter(qualifier, elements, not);\n }\n jQuery.filter = function (expr, elems, not) {\n var elem = elems[0];\n if (not) {\n expr = \":not(\" + expr + \")\";\n }\n if (elems.length === 1 && elem.nodeType === 1) {\n return jQuery.find.matchesSelector(elem, expr) ? [elem] : [];\n }\n return jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {\n return elem.nodeType === 1;\n }));\n };\n jQuery.fn.extend({\n find: function (selector) {\n var i,\n ret,\n len = this.length,\n self = this;\n if (typeof selector !== \"string\") {\n return this.pushStack(jQuery(selector).filter(function () {\n for (i = 0; i < len; i++) {\n if (jQuery.contains(self[i], this)) {\n return true;\n }\n }\n }));\n }\n ret = this.pushStack([]);\n for (i = 0; i < len; i++) {\n jQuery.find(selector, self[i], ret);\n }\n return len > 1 ? jQuery.uniqueSort(ret) : ret;\n },\n filter: function (selector) {\n return this.pushStack(winnow(this, selector || [], false));\n },\n not: function (selector) {\n return this.pushStack(winnow(this, selector || [], true));\n },\n is: function (selector) {\n return !!winnow(this,\n // If this is a positional/relative selector, check membership in the returned set\n // so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n typeof selector === \"string\" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length;\n }\n });\n\n // Initialize a jQuery object\n\n // A central reference to the root jQuery(document)\n var rootjQuery,\n // A simple way to check for HTML strings\n // Prioritize #id over to avoid XSS via location.hash (trac-9521)\n // Strict HTML recognition (trac-11290: must start with <)\n // Shortcut simple #id case for speed\n rquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n init = jQuery.fn.init = function (selector, context, root) {\n var match, elem;\n\n // HANDLE: $(\"\"), $(null), $(undefined), $(false)\n if (!selector) {\n return this;\n }\n\n // Method init() accepts an alternate rootjQuery\n // so migrate can support jQuery.sub (gh-2101)\n root = root || rootjQuery;\n\n // Handle HTML strings\n if (typeof selector === \"string\") {\n if (selector[0] === \"<\" && selector[selector.length - 1] === \">\" && selector.length >= 3) {\n // Assume that strings that start and end with <> are HTML and skip the regex check\n match = [null, selector, null];\n } else {\n match = rquickExpr.exec(selector);\n }\n\n // Match html or make sure no context is specified for #id\n if (match && (match[1] || !context)) {\n // HANDLE: $(html) -> $(array)\n if (match[1]) {\n context = context instanceof jQuery ? context[0] : context;\n\n // Option to run scripts is true for back-compat\n // Intentionally let the error be thrown if parseHTML is not present\n jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true));\n\n // HANDLE: $(html, props)\n if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {\n for (match in context) {\n // Properties of context are called as methods if possible\n if (isFunction(this[match])) {\n this[match](context[match]);\n\n // ...and otherwise set as attributes\n } else {\n this.attr(match, context[match]);\n }\n }\n }\n return this;\n\n // HANDLE: $(#id)\n } else {\n elem = document.getElementById(match[2]);\n if (elem) {\n // Inject the element directly into the jQuery object\n this[0] = elem;\n this.length = 1;\n }\n return this;\n }\n\n // HANDLE: $(expr, $(...))\n } else if (!context || context.jquery) {\n return (context || root).find(selector);\n\n // HANDLE: $(expr, context)\n // (which is just equivalent to: $(context).find(expr)\n } else {\n return this.constructor(context).find(selector);\n }\n\n // HANDLE: $(DOMElement)\n } else if (selector.nodeType) {\n this[0] = selector;\n this.length = 1;\n return this;\n\n // HANDLE: $(function)\n // Shortcut for document ready\n } else if (isFunction(selector)) {\n return root.ready !== undefined ? root.ready(selector) :\n // Execute immediately if ready is not present\n selector(jQuery);\n }\n return jQuery.makeArray(selector, this);\n };\n\n // Give the init function the jQuery prototype for later instantiation\n init.prototype = jQuery.fn;\n\n // Initialize central reference\n rootjQuery = jQuery(document);\n var rparentsprev = /^(?:parents|prev(?:Until|All))/,\n // Methods guaranteed to produce a unique set when starting from a unique set\n guaranteedUnique = {\n children: true,\n contents: true,\n next: true,\n prev: true\n };\n jQuery.fn.extend({\n has: function (target) {\n var targets = jQuery(target, this),\n l = targets.length;\n return this.filter(function () {\n var i = 0;\n for (; i < l; i++) {\n if (jQuery.contains(this, targets[i])) {\n return true;\n }\n }\n });\n },\n closest: function (selectors, context) {\n var cur,\n i = 0,\n l = this.length,\n matched = [],\n targets = typeof selectors !== \"string\" && jQuery(selectors);\n\n // Positional selectors never match, since there's no _selection_ context\n if (!rneedsContext.test(selectors)) {\n for (; i < l; i++) {\n for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {\n // Always skip document fragments\n if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 :\n // Don't pass non-elements to jQuery#find\n cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) {\n matched.push(cur);\n break;\n }\n }\n }\n }\n return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);\n },\n // Determine the position of an element within the set\n index: function (elem) {\n // No argument, return index in parent\n if (!elem) {\n return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;\n }\n\n // Index in selector\n if (typeof elem === \"string\") {\n return indexOf.call(jQuery(elem), this[0]);\n }\n\n // Locate the position of the desired element\n return indexOf.call(this,\n // If it receives a jQuery object, the first element is used\n elem.jquery ? elem[0] : elem);\n },\n add: function (selector, context) {\n return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context))));\n },\n addBack: function (selector) {\n return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector));\n }\n });\n function sibling(cur, dir) {\n while ((cur = cur[dir]) && cur.nodeType !== 1) {}\n return cur;\n }\n jQuery.each({\n parent: function (elem) {\n var parent = elem.parentNode;\n return parent && parent.nodeType !== 11 ? parent : null;\n },\n parents: function (elem) {\n return dir(elem, \"parentNode\");\n },\n parentsUntil: function (elem, _i, until) {\n return dir(elem, \"parentNode\", until);\n },\n next: function (elem) {\n return sibling(elem, \"nextSibling\");\n },\n prev: function (elem) {\n return sibling(elem, \"previousSibling\");\n },\n nextAll: function (elem) {\n return dir(elem, \"nextSibling\");\n },\n prevAll: function (elem) {\n return dir(elem, \"previousSibling\");\n },\n nextUntil: function (elem, _i, until) {\n return dir(elem, \"nextSibling\", until);\n },\n prevUntil: function (elem, _i, until) {\n return dir(elem, \"previousSibling\", until);\n },\n siblings: function (elem) {\n return siblings((elem.parentNode || {}).firstChild, elem);\n },\n children: function (elem) {\n return siblings(elem.firstChild);\n },\n contents: function (elem) {\n if (elem.contentDocument != null &&\n // Support: IE 11+\n // elements with no `data` attribute has an object\n // `contentDocument` with a `null` prototype.\n getProto(elem.contentDocument)) {\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 return jQuery.merge([], elem.childNodes);\n }\n }, function (name, fn) {\n jQuery.fn[name] = function (until, selector) {\n var matched = jQuery.map(this, fn, until);\n if (name.slice(-5) !== \"Until\") {\n selector = until;\n }\n if (selector && typeof selector === \"string\") {\n matched = jQuery.filter(selector, matched);\n }\n if (this.length > 1) {\n // Remove duplicates\n if (!guaranteedUnique[name]) {\n jQuery.uniqueSort(matched);\n }\n\n // Reverse order for parents* and prev-derivatives\n if (rparentsprev.test(name)) {\n matched.reverse();\n }\n }\n return this.pushStack(matched);\n };\n });\n var rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g;\n\n // Convert String-formatted options into Object-formatted ones\n function createOptions(options) {\n var object = {};\n jQuery.each(options.match(rnothtmlwhite) || [], function (_, flag) {\n object[flag] = true;\n });\n return 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 */\n jQuery.Callbacks = function (options) {\n // Convert options from String-formatted to Object-formatted if needed\n // (we check in cache first)\n options = typeof options === \"string\" ? createOptions(options) : jQuery.extend({}, options);\n var\n // Flag to know if list is currently firing\n firing,\n // Last fire value for non-forgettable lists\n memory,\n // Flag to know if list was already fired\n fired,\n // Flag to prevent firing\n locked,\n // Actual callback list\n list = [],\n // Queue of execution data for repeatable lists\n queue = [],\n // Index of currently firing callback (modified by add/remove as needed)\n firingIndex = -1,\n // Fire callbacks\n fire = function () {\n // Enforce single-firing\n locked = locked || options.once;\n\n // Execute callbacks for all pending executions,\n // respecting firingIndex overrides and runtime changes\n fired = firing = true;\n for (; queue.length; firingIndex = -1) {\n memory = queue.shift();\n while (++firingIndex < list.length) {\n // Run callback and check for early termination\n if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {\n // Jump to end and forget the data so .add doesn't re-fire\n firingIndex = list.length;\n memory = false;\n }\n }\n }\n\n // Forget the data if we're done with it\n if (!options.memory) {\n memory = false;\n }\n firing = false;\n\n // Clean up if we're done firing for good\n if (locked) {\n // Keep an empty list if we have data for future add calls\n if (memory) {\n list = [];\n\n // Otherwise, this object is spent\n } else {\n list = \"\";\n }\n }\n },\n // Actual Callbacks object\n self = {\n // Add a callback or a collection of callbacks to the list\n add: function () {\n if (list) {\n // If we have memory from a past run, we should fire after adding\n if (memory && !firing) {\n firingIndex = list.length - 1;\n queue.push(memory);\n }\n (function add(args) {\n jQuery.each(args, function (_, arg) {\n if (isFunction(arg)) {\n if (!options.unique || !self.has(arg)) {\n list.push(arg);\n }\n } else if (arg && arg.length && toType(arg) !== \"string\") {\n // Inspect recursively\n add(arg);\n }\n });\n })(arguments);\n if (memory && !firing) {\n fire();\n }\n }\n return this;\n },\n // Remove a callback from the list\n remove: function () {\n jQuery.each(arguments, function (_, arg) {\n var index;\n while ((index = jQuery.inArray(arg, list, index)) > -1) {\n list.splice(index, 1);\n\n // Handle firing indexes\n if (index <= firingIndex) {\n firingIndex--;\n }\n }\n });\n return this;\n },\n // Check if a given callback is in the list.\n // If no argument is given, return whether or not list has callbacks attached.\n has: function (fn) {\n return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0;\n },\n // Remove all callbacks from the list\n empty: function () {\n if (list) {\n list = [];\n }\n return this;\n },\n // Disable .fire and .add\n // Abort any current/pending executions\n // Clear all callbacks and values\n disable: function () {\n locked = queue = [];\n list = memory = \"\";\n return this;\n },\n disabled: function () {\n return !list;\n },\n // Disable .fire\n // Also disable .add unless we have memory (since it would have no effect)\n // Abort any pending executions\n lock: function () {\n locked = queue = [];\n if (!memory && !firing) {\n list = memory = \"\";\n }\n return this;\n },\n locked: function () {\n return !!locked;\n },\n // Call all callbacks with the given context and arguments\n fireWith: function (context, args) {\n if (!locked) {\n args = args || [];\n args = [context, args.slice ? args.slice() : args];\n queue.push(args);\n if (!firing) {\n fire();\n }\n }\n return this;\n },\n // Call all the callbacks with the given arguments\n fire: function () {\n self.fireWith(this, arguments);\n return this;\n },\n // To know if the callbacks have already been called at least once\n fired: function () {\n return !!fired;\n }\n };\n return self;\n };\n function Identity(v) {\n return v;\n }\n function Thrower(ex) {\n throw ex;\n }\n function adoptValue(value, resolve, reject, noValue) {\n var method;\n try {\n // Check for promise aspect first to privilege synchronous behavior\n if (value && isFunction(method = value.promise)) {\n method.call(value).done(resolve).fail(reject);\n\n // Other thenables\n } else if (value && isFunction(method = value.then)) {\n method.call(value, resolve, reject);\n\n // Other non-thenables\n } else {\n // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n // * false: [ value ].slice( 0 ) => resolve( value )\n // * true: [ value ].slice( 1 ) => resolve()\n resolve.apply(undefined, [value].slice(noValue));\n }\n\n // For Promises/A+, convert exceptions into rejections\n // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n // Deferred#then to conditionally suppress rejection.\n } catch (value) {\n // Support: Android 4.0 only\n // Strict mode functions invoked without .call/.apply get global-object context\n reject.apply(undefined, [value]);\n }\n }\n jQuery.extend({\n Deferred: function (func) {\n var tuples = [\n // action, add listener, callbacks,\n // ... .then handlers, argument index, [final state]\n [\"notify\", \"progress\", jQuery.Callbacks(\"memory\"), jQuery.Callbacks(\"memory\"), 2], [\"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 0, \"resolved\"], [\"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 1, \"rejected\"]],\n state = \"pending\",\n promise = {\n state: function () {\n return state;\n },\n always: function () {\n deferred.done(arguments).fail(arguments);\n return this;\n },\n \"catch\": function (fn) {\n return promise.then(null, fn);\n },\n // Keep pipe for back-compat\n pipe: function /* fnDone, fnFail, fnProgress */\n () {\n var fns = arguments;\n return jQuery.Deferred(function (newDefer) {\n jQuery.each(tuples, function (_i, tuple) {\n // Map tuples (progress, done, fail) to arguments (done, fail, progress)\n var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]];\n\n // deferred.progress(function() { bind to newDefer or newDefer.notify })\n // deferred.done(function() { bind to newDefer or newDefer.resolve })\n // deferred.fail(function() { bind to newDefer or newDefer.reject })\n deferred[tuple[1]](function () {\n var returned = fn && fn.apply(this, arguments);\n if (returned && isFunction(returned.promise)) {\n returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);\n } else {\n newDefer[tuple[0] + \"With\"](this, fn ? [returned] : arguments);\n }\n });\n });\n fns = null;\n }).promise();\n },\n then: function (onFulfilled, onRejected, onProgress) {\n var maxDepth = 0;\n function resolve(depth, deferred, handler, special) {\n return function () {\n var that = this,\n args = arguments,\n mightThrow = function () {\n var returned, then;\n\n // Support: Promises/A+ section 2.3.3.3.3\n // https://promisesaplus.com/#point-59\n // Ignore double-resolution attempts\n if (depth < maxDepth) {\n return;\n }\n returned = handler.apply(that, args);\n\n // Support: Promises/A+ section 2.3.1\n // https://promisesaplus.com/#point-48\n if (returned === deferred.promise()) {\n throw new TypeError(\"Thenable self-resolution\");\n }\n\n // Support: Promises/A+ sections 2.3.3.1, 3.5\n // https://promisesaplus.com/#point-54\n // https://promisesaplus.com/#point-75\n // Retrieve `then` only once\n then = returned && (\n // Support: Promises/A+ section 2.3.4\n // https://promisesaplus.com/#point-64\n // Only check objects and functions for thenability\n typeof returned === \"object\" || typeof returned === \"function\") && returned.then;\n\n // Handle a returned thenable\n if (isFunction(then)) {\n // Special processors (notify) just wait for resolution\n if (special) {\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special));\n\n // Normal processors (resolve) also hook into progress\n } else {\n // ...and disregard older resolution values\n maxDepth++;\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special), resolve(maxDepth, deferred, Identity, deferred.notifyWith));\n }\n\n // Handle all other returned values\n } else {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Identity) {\n that = undefined;\n args = [returned];\n }\n\n // Process the value(s)\n // Default process is resolve\n (special || deferred.resolveWith)(that, args);\n }\n },\n // Only normal processors (resolve) catch and reject exceptions\n process = special ? mightThrow : function () {\n try {\n mightThrow();\n } catch (e) {\n if (jQuery.Deferred.exceptionHook) {\n jQuery.Deferred.exceptionHook(e, process.error);\n }\n\n // Support: Promises/A+ section 2.3.3.3.4.1\n // https://promisesaplus.com/#point-61\n // Ignore post-resolution exceptions\n if (depth + 1 >= maxDepth) {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Thrower) {\n that = undefined;\n args = [e];\n }\n deferred.rejectWith(that, args);\n }\n }\n };\n\n // Support: Promises/A+ section 2.3.3.3.1\n // https://promisesaplus.com/#point-57\n // Re-resolve promises immediately to dodge false rejection from\n // subsequent errors\n if (depth) {\n process();\n } else {\n // Call an optional hook to record the error, in case of exception\n // since it's otherwise lost when execution goes async\n if (jQuery.Deferred.getErrorHook) {\n process.error = jQuery.Deferred.getErrorHook();\n\n // The deprecated alias of the above. While the name suggests\n // returning the stack, not an error instance, jQuery just passes\n // it directly to `console.warn` so both will work; an instance\n // just better cooperates with source maps.\n } else if (jQuery.Deferred.getStackHook) {\n process.error = jQuery.Deferred.getStackHook();\n }\n window.setTimeout(process);\n }\n };\n }\n return jQuery.Deferred(function (newDefer) {\n // progress_handlers.add( ... )\n tuples[0][3].add(resolve(0, newDefer, isFunction(onProgress) ? onProgress : Identity, newDefer.notifyWith));\n\n // fulfilled_handlers.add( ... )\n tuples[1][3].add(resolve(0, newDefer, isFunction(onFulfilled) ? onFulfilled : Identity));\n\n // rejected_handlers.add( ... )\n tuples[2][3].add(resolve(0, newDefer, isFunction(onRejected) ? onRejected : Thrower));\n }).promise();\n },\n // Get a promise for this deferred\n // If obj is provided, the promise aspect is added to the object\n promise: function (obj) {\n return obj != null ? jQuery.extend(obj, promise) : promise;\n }\n },\n deferred = {};\n\n // Add list-specific methods\n jQuery.each(tuples, function (i, tuple) {\n var list = tuple[2],\n stateString = tuple[5];\n\n // promise.progress = list.add\n // promise.done = list.add\n // promise.fail = list.add\n promise[tuple[1]] = list.add;\n\n // Handle state\n if (stateString) {\n list.add(function () {\n // state = \"resolved\" (i.e., fulfilled)\n // state = \"rejected\"\n state = stateString;\n },\n // rejected_callbacks.disable\n // fulfilled_callbacks.disable\n tuples[3 - i][2].disable,\n // rejected_handlers.disable\n // fulfilled_handlers.disable\n tuples[3 - i][3].disable,\n // progress_callbacks.lock\n tuples[0][2].lock,\n // progress_handlers.lock\n tuples[0][3].lock);\n }\n\n // progress_handlers.fire\n // fulfilled_handlers.fire\n // rejected_handlers.fire\n list.add(tuple[3].fire);\n\n // deferred.notify = function() { deferred.notifyWith(...) }\n // deferred.resolve = function() { deferred.resolveWith(...) }\n // deferred.reject = function() { deferred.rejectWith(...) }\n deferred[tuple[0]] = function () {\n deferred[tuple[0] + \"With\"](this === deferred ? undefined : this, arguments);\n return this;\n };\n\n // deferred.notifyWith = list.fireWith\n // deferred.resolveWith = list.fireWith\n // deferred.rejectWith = list.fireWith\n deferred[tuple[0] + \"With\"] = list.fireWith;\n });\n\n // Make the deferred a promise\n promise.promise(deferred);\n\n // Call given func if any\n if (func) {\n func.call(deferred, deferred);\n }\n\n // All done!\n return deferred;\n },\n // Deferred helper\n when: function (singleValue) {\n var\n // count of uncompleted subordinates\n remaining = arguments.length,\n // count of unprocessed arguments\n i = remaining,\n // subordinate fulfillment data\n resolveContexts = Array(i),\n resolveValues = slice.call(arguments),\n // the primary Deferred\n primary = jQuery.Deferred(),\n // subordinate callback factory\n updateFunc = function (i) {\n return function (value) {\n resolveContexts[i] = this;\n resolveValues[i] = arguments.length > 1 ? slice.call(arguments) : value;\n if (! --remaining) {\n primary.resolveWith(resolveContexts, resolveValues);\n }\n };\n };\n\n // Single- and empty arguments are adopted like Promise.resolve\n if (remaining <= 1) {\n adoptValue(singleValue, primary.done(updateFunc(i)).resolve, primary.reject, !remaining);\n\n // Use .then() to unwrap secondary thenables (cf. gh-3000)\n if (primary.state() === \"pending\" || isFunction(resolveValues[i] && resolveValues[i].then)) {\n return primary.then();\n }\n }\n\n // Multiple arguments are aggregated like Promise.all array elements\n while (i--) {\n adoptValue(resolveValues[i], updateFunc(i), primary.reject);\n }\n return primary.promise();\n }\n });\n\n // These usually indicate a programmer mistake during development,\n // warn about them ASAP rather than swallowing them by default.\n var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n // If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n // captured before the async barrier to get the original error cause\n // which may otherwise be hidden.\n jQuery.Deferred.exceptionHook = function (error, asyncError) {\n // Support: IE 8 - 9 only\n // Console exists when dev tools are open, which can happen at any time\n if (window.console && window.console.warn && error && rerrorNames.test(error.name)) {\n window.console.warn(\"jQuery.Deferred exception: \" + error.message, error.stack, asyncError);\n }\n };\n jQuery.readyException = function (error) {\n window.setTimeout(function () {\n throw error;\n });\n };\n\n // The deferred used on DOM ready\n var readyList = jQuery.Deferred();\n jQuery.fn.ready = function (fn) {\n readyList.then(fn)\n\n // Wrap jQuery.readyException in a function so that the lookup\n // happens at the time of error handling instead of callback\n // registration.\n .catch(function (error) {\n jQuery.readyException(error);\n });\n return this;\n };\n jQuery.extend({\n // Is the DOM ready to be used? Set to true once it occurs.\n isReady: false,\n // A counter to track how many items to wait for before\n // the ready event fires. See trac-6781\n readyWait: 1,\n // Handle when the DOM is ready\n ready: function (wait) {\n // Abort if there are pending holds or we're already ready\n if (wait === true ? --jQuery.readyWait : jQuery.isReady) {\n return;\n }\n\n // Remember that the DOM is ready\n jQuery.isReady = true;\n\n // If a normal DOM Ready event fired, decrement, and wait if need be\n if (wait !== true && --jQuery.readyWait > 0) {\n return;\n }\n\n // If there are functions bound, to execute\n readyList.resolveWith(document, [jQuery]);\n }\n });\n jQuery.ready.then = readyList.then;\n\n // The ready event handler and self cleanup method\n function completed() {\n document.removeEventListener(\"DOMContentLoaded\", completed);\n window.removeEventListener(\"load\", completed);\n jQuery.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\n if (document.readyState === \"complete\" || document.readyState !== \"loading\" && !document.documentElement.doScroll) {\n // Handle it asynchronously to allow scripts the opportunity to delay ready\n window.setTimeout(jQuery.ready);\n } else {\n // Use the handy event callback\n document.addEventListener(\"DOMContentLoaded\", completed);\n\n // A fallback to window.onload, that will always work\n window.addEventListener(\"load\", completed);\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\n var access = function (elems, fn, key, value, chainable, emptyGet, raw) {\n var i = 0,\n len = elems.length,\n bulk = key == null;\n\n // Sets many values\n if (toType(key) === \"object\") {\n chainable = true;\n for (i in key) {\n access(elems, fn, i, key[i], true, emptyGet, raw);\n }\n\n // Sets one value\n } else if (value !== undefined) {\n chainable = true;\n if (!isFunction(value)) {\n raw = true;\n }\n if (bulk) {\n // Bulk operations run against the entire set\n if (raw) {\n fn.call(elems, value);\n fn = null;\n\n // ...except when executing function values\n } else {\n bulk = fn;\n fn = function (elem, _key, value) {\n return bulk.call(jQuery(elem), value);\n };\n }\n }\n if (fn) {\n for (; i < len; i++) {\n fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));\n }\n }\n }\n if (chainable) {\n return elems;\n }\n\n // Gets\n if (bulk) {\n return fn.call(elems);\n }\n return len ? fn(elems[0], key) : emptyGet;\n };\n\n // Matches dashed string for camelizing\n var rmsPrefix = /^-ms-/,\n rdashAlpha = /-([a-z])/g;\n\n // Used by camelCase as callback to replace()\n function fcamelCase(_all, letter) {\n return 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 (trac-9572)\n function camelCase(string) {\n return string.replace(rmsPrefix, \"ms-\").replace(rdashAlpha, fcamelCase);\n }\n var acceptData = function (owner) {\n // Accepts only:\n // - Node\n // - Node.ELEMENT_NODE\n // - Node.DOCUMENT_NODE\n // - Object\n // - Any\n return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;\n };\n function Data() {\n this.expando = jQuery.expando + Data.uid++;\n }\n Data.uid = 1;\n Data.prototype = {\n cache: function (owner) {\n // Check if the owner object already has a cache\n var value = owner[this.expando];\n\n // If not, create one\n if (!value) {\n value = {};\n\n // We can accept data for non-element nodes in modern browsers,\n // but we should not, see trac-8335.\n // Always return an empty object.\n if (acceptData(owner)) {\n // If it is a node unlikely to be stringify-ed or looped over\n // use plain assignment\n if (owner.nodeType) {\n owner[this.expando] = value;\n\n // Otherwise secure it in a non-enumerable property\n // configurable must be true to allow the property to be\n // deleted when data is removed\n } else {\n Object.defineProperty(owner, this.expando, {\n value: value,\n configurable: true\n });\n }\n }\n }\n return value;\n },\n set: function (owner, data, value) {\n var prop,\n cache = this.cache(owner);\n\n // Handle: [ owner, key, value ] args\n // Always use camelCase key (gh-2257)\n if (typeof data === \"string\") {\n cache[camelCase(data)] = value;\n\n // Handle: [ owner, { properties } ] args\n } else {\n // Copy the properties one-by-one to the cache object\n for (prop in data) {\n cache[camelCase(prop)] = data[prop];\n }\n }\n return cache;\n },\n get: function (owner, key) {\n return key === undefined ? this.cache(owner) :\n // Always use camelCase key (gh-2257)\n owner[this.expando] && owner[this.expando][camelCase(key)];\n },\n access: function (owner, key, value) {\n // In cases where either:\n //\n // 1. No key was specified\n // 2. A string key was specified, but no value provided\n //\n // Take the \"read\" path and allow the get method to determine\n // which value to return, respectively either:\n //\n // 1. The entire cache object\n // 2. The data stored at the key\n //\n if (key === undefined || key && typeof key === \"string\" && value === undefined) {\n return this.get(owner, key);\n }\n\n // When the key is not a string, or both a key and value\n // are specified, set or extend (existing objects) with either:\n //\n // 1. An object of properties\n // 2. A key and value\n //\n this.set(owner, key, value);\n\n // Since the \"set\" path can have two possible entry points\n // return the expected data based on which path was taken[*]\n return value !== undefined ? value : key;\n },\n remove: function (owner, key) {\n var i,\n cache = owner[this.expando];\n if (cache === undefined) {\n return;\n }\n if (key !== undefined) {\n // Support array or space separated string of keys\n if (Array.isArray(key)) {\n // If key is an array of keys...\n // We always set camelCase keys, so remove that.\n key = key.map(camelCase);\n } else {\n key = camelCase(key);\n\n // If a key with the spaces exists, use it.\n // Otherwise, create an array by matching non-whitespace\n key = key in cache ? [key] : key.match(rnothtmlwhite) || [];\n }\n i = key.length;\n while (i--) {\n delete cache[key[i]];\n }\n }\n\n // Remove the expando if there's no more data\n if (key === undefined || jQuery.isEmptyObject(cache)) {\n // Support: Chrome <=35 - 45\n // Webkit & Blink performance suffers when deleting properties\n // from DOM nodes, so set to undefined instead\n // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n if (owner.nodeType) {\n owner[this.expando] = undefined;\n } else {\n delete owner[this.expando];\n }\n }\n },\n hasData: function (owner) {\n var cache = owner[this.expando];\n return cache !== undefined && !jQuery.isEmptyObject(cache);\n }\n };\n var dataPriv = new Data();\n var dataUser = new Data();\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\n var rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n rmultiDash = /[A-Z]/g;\n function getData(data) {\n if (data === \"true\") {\n return true;\n }\n if (data === \"false\") {\n return false;\n }\n if (data === \"null\") {\n return null;\n }\n\n // Only convert to a number if it doesn't change the string\n if (data === +data + \"\") {\n return +data;\n }\n if (rbrace.test(data)) {\n return JSON.parse(data);\n }\n return data;\n }\n function dataAttr(elem, key, data) {\n var name;\n\n // If nothing was found internally, try to fetch any\n // data from the HTML5 data-* attribute\n if (data === undefined && elem.nodeType === 1) {\n name = \"data-\" + key.replace(rmultiDash, \"-$&\").toLowerCase();\n data = elem.getAttribute(name);\n if (typeof data === \"string\") {\n try {\n data = getData(data);\n } catch (e) {}\n\n // Make sure we set the data so it isn't changed later\n dataUser.set(elem, key, data);\n } else {\n data = undefined;\n }\n }\n return data;\n }\n jQuery.extend({\n hasData: function (elem) {\n return dataUser.hasData(elem) || dataPriv.hasData(elem);\n },\n data: function (elem, name, data) {\n return dataUser.access(elem, name, data);\n },\n removeData: function (elem, name) {\n dataUser.remove(elem, name);\n },\n // TODO: Now that all calls to _data and _removeData have been replaced\n // with direct calls to dataPriv methods, these can be deprecated.\n _data: function (elem, name, data) {\n return dataPriv.access(elem, name, data);\n },\n _removeData: function (elem, name) {\n dataPriv.remove(elem, name);\n }\n });\n jQuery.fn.extend({\n data: function (key, value) {\n var i,\n name,\n data,\n elem = this[0],\n attrs = elem && elem.attributes;\n\n // Gets all values\n if (key === undefined) {\n if (this.length) {\n data = dataUser.get(elem);\n if (elem.nodeType === 1 && !dataPriv.get(elem, \"hasDataAttrs\")) {\n i = attrs.length;\n while (i--) {\n // Support: IE 11 only\n // The attrs elements can be null (trac-14894)\n if (attrs[i]) {\n name = attrs[i].name;\n if (name.indexOf(\"data-\") === 0) {\n name = camelCase(name.slice(5));\n dataAttr(elem, name, data[name]);\n }\n }\n }\n dataPriv.set(elem, \"hasDataAttrs\", true);\n }\n }\n return data;\n }\n\n // Sets multiple values\n if (typeof key === \"object\") {\n return this.each(function () {\n dataUser.set(this, key);\n });\n }\n return access(this, function (value) {\n var data;\n\n // The calling jQuery object (element matches) is not empty\n // (and therefore has an element appears at this[ 0 ]) and the\n // `value` parameter was not undefined. An empty jQuery object\n // will result in `undefined` for elem = this[ 0 ] which will\n // throw an exception if an attempt to read a data cache is made.\n if (elem && value === undefined) {\n // Attempt to get data from the cache\n // The key will always be camelCased in Data\n data = dataUser.get(elem, key);\n if (data !== undefined) {\n return data;\n }\n\n // Attempt to \"discover\" the data in\n // HTML5 custom data-* attrs\n data = dataAttr(elem, key);\n if (data !== undefined) {\n return data;\n }\n\n // We tried really hard, but the data doesn't exist.\n return;\n }\n\n // Set the data...\n this.each(function () {\n // We always store the camelCased key\n dataUser.set(this, key, value);\n });\n }, null, value, arguments.length > 1, null, true);\n },\n removeData: function (key) {\n return this.each(function () {\n dataUser.remove(this, key);\n });\n }\n });\n jQuery.extend({\n queue: function (elem, type, data) {\n var queue;\n if (elem) {\n type = (type || \"fx\") + \"queue\";\n queue = dataPriv.get(elem, type);\n\n // Speed up dequeue by getting out quickly if this is just a lookup\n if (data) {\n if (!queue || Array.isArray(data)) {\n queue = dataPriv.access(elem, type, jQuery.makeArray(data));\n } else {\n queue.push(data);\n }\n }\n return queue || [];\n }\n },\n dequeue: function (elem, type) {\n type = type || \"fx\";\n var queue = jQuery.queue(elem, type),\n startLength = queue.length,\n fn = queue.shift(),\n hooks = jQuery._queueHooks(elem, type),\n next = function () {\n jQuery.dequeue(elem, type);\n };\n\n // If the fx queue is dequeued, always remove the progress sentinel\n if (fn === \"inprogress\") {\n fn = queue.shift();\n startLength--;\n }\n if (fn) {\n // Add a progress sentinel to prevent the fx queue from being\n // automatically dequeued\n if (type === \"fx\") {\n queue.unshift(\"inprogress\");\n }\n\n // Clear up the last queue stop function\n delete hooks.stop;\n fn.call(elem, next, hooks);\n }\n if (!startLength && hooks) {\n hooks.empty.fire();\n }\n },\n // Not public - generate a queueHooks object, or return the current one\n _queueHooks: function (elem, type) {\n var key = type + \"queueHooks\";\n return dataPriv.get(elem, key) || dataPriv.access(elem, key, {\n empty: jQuery.Callbacks(\"once memory\").add(function () {\n dataPriv.remove(elem, [type + \"queue\", key]);\n })\n });\n }\n });\n jQuery.fn.extend({\n queue: function (type, data) {\n var setter = 2;\n if (typeof type !== \"string\") {\n data = type;\n type = \"fx\";\n setter--;\n }\n if (arguments.length < setter) {\n return jQuery.queue(this[0], type);\n }\n return data === undefined ? this : this.each(function () {\n var queue = jQuery.queue(this, type, data);\n\n // Ensure a hooks for this queue\n jQuery._queueHooks(this, type);\n if (type === \"fx\" && queue[0] !== \"inprogress\") {\n jQuery.dequeue(this, type);\n }\n });\n },\n dequeue: function (type) {\n return this.each(function () {\n jQuery.dequeue(this, type);\n });\n },\n clearQueue: function (type) {\n return this.queue(type || \"fx\", []);\n },\n // Get a promise resolved when queues of a certain type\n // are emptied (fx is the type by default)\n promise: function (type, obj) {\n var tmp,\n count = 1,\n defer = jQuery.Deferred(),\n elements = this,\n i = this.length,\n resolve = function () {\n if (! --count) {\n defer.resolveWith(elements, [elements]);\n }\n };\n if (typeof type !== \"string\") {\n obj = type;\n type = undefined;\n }\n type = type || \"fx\";\n while (i--) {\n tmp = dataPriv.get(elements[i], type + \"queueHooks\");\n if (tmp && tmp.empty) {\n count++;\n tmp.empty.add(resolve);\n }\n }\n resolve();\n return defer.promise(obj);\n }\n });\n var pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\n var rcssNum = new RegExp(\"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\");\n var cssExpand = [\"Top\", \"Right\", \"Bottom\", \"Left\"];\n var documentElement = document.documentElement;\n var isAttached = function (elem) {\n return jQuery.contains(elem.ownerDocument, elem);\n },\n composed = {\n composed: true\n };\n\n // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n // Check attachment across shadow DOM boundaries when possible (gh-3504)\n // Support: iOS 10.0-10.2 only\n // Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n // leading to errors. We need to check for `getRootNode`.\n if (documentElement.getRootNode) {\n isAttached = function (elem) {\n return jQuery.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument;\n };\n }\n var isHiddenWithinTree = function (elem, el) {\n // isHiddenWithinTree might be called from jQuery#filter function;\n // in that case, element will be second argument\n elem = el || elem;\n\n // Inline style trumps all\n return elem.style.display === \"none\" || elem.style.display === \"\" &&\n // Otherwise, check computed style\n // Support: Firefox <=43 - 45\n // Disconnected elements can have computed display: none, so first confirm that elem is\n // in the document.\n isAttached(elem) && jQuery.css(elem, \"display\") === \"none\";\n };\n function adjustCSS(elem, prop, valueParts, tween) {\n var adjusted,\n scale,\n maxIterations = 20,\n currentValue = tween ? function () {\n return tween.cur();\n } : function () {\n return jQuery.css(elem, prop, \"\");\n },\n initial = currentValue(),\n unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? \"\" : \"px\"),\n // Starting value computation is required for potential unit mismatches\n initialInUnit = elem.nodeType && (jQuery.cssNumber[prop] || unit !== \"px\" && +initial) && rcssNum.exec(jQuery.css(elem, prop));\n if (initialInUnit && initialInUnit[3] !== unit) {\n // Support: Firefox <=54\n // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n initial = initial / 2;\n\n // Trust units reported by jQuery.css\n unit = unit || initialInUnit[3];\n\n // Iteratively approximate from a nonzero starting point\n initialInUnit = +initial || 1;\n while (maxIterations--) {\n // Evaluate and update our best guess (doubling guesses that zero out).\n // Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n jQuery.style(elem, prop, initialInUnit + unit);\n if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) {\n maxIterations = 0;\n }\n initialInUnit = initialInUnit / scale;\n }\n initialInUnit = initialInUnit * 2;\n jQuery.style(elem, prop, initialInUnit + unit);\n\n // Make sure we update the tween properties later on\n valueParts = valueParts || [];\n }\n if (valueParts) {\n initialInUnit = +initialInUnit || +initial || 0;\n\n // Apply relative offset (+=/-=) if specified\n adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];\n if (tween) {\n tween.unit = unit;\n tween.start = initialInUnit;\n tween.end = adjusted;\n }\n }\n return adjusted;\n }\n var defaultDisplayMap = {};\n function getDefaultDisplay(elem) {\n var temp,\n doc = elem.ownerDocument,\n nodeName = elem.nodeName,\n display = defaultDisplayMap[nodeName];\n if (display) {\n return display;\n }\n temp = doc.body.appendChild(doc.createElement(nodeName));\n display = jQuery.css(temp, \"display\");\n temp.parentNode.removeChild(temp);\n if (display === \"none\") {\n display = \"block\";\n }\n defaultDisplayMap[nodeName] = display;\n return display;\n }\n function showHide(elements, show) {\n var display,\n elem,\n values = [],\n index = 0,\n length = elements.length;\n\n // Determine new display value for elements that need to change\n for (; index < length; index++) {\n elem = elements[index];\n if (!elem.style) {\n continue;\n }\n display = elem.style.display;\n if (show) {\n // Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n // check is required in this first loop unless we have a nonempty display value (either\n // inline or about-to-be-restored)\n if (display === \"none\") {\n values[index] = dataPriv.get(elem, \"display\") || null;\n if (!values[index]) {\n elem.style.display = \"\";\n }\n }\n if (elem.style.display === \"\" && isHiddenWithinTree(elem)) {\n values[index] = getDefaultDisplay(elem);\n }\n } else {\n if (display !== \"none\") {\n values[index] = \"none\";\n\n // Remember what we're overwriting\n dataPriv.set(elem, \"display\", display);\n }\n }\n }\n\n // Set the display of the elements in a second loop to avoid constant reflow\n for (index = 0; index < length; index++) {\n if (values[index] != null) {\n elements[index].style.display = values[index];\n }\n }\n return elements;\n }\n jQuery.fn.extend({\n show: function () {\n return showHide(this, true);\n },\n hide: function () {\n return showHide(this);\n },\n toggle: function (state) {\n if (typeof state === \"boolean\") {\n return state ? this.show() : this.hide();\n }\n return this.each(function () {\n if (isHiddenWithinTree(this)) {\n jQuery(this).show();\n } else {\n jQuery(this).hide();\n }\n });\n }\n });\n var rcheckableType = /^(?:checkbox|radio)$/i;\n var rtagName = /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i;\n var rscriptType = /^$|^module$|\\/(?:java|ecma)script/i;\n (function () {\n var fragment = document.createDocumentFragment(),\n div = fragment.appendChild(document.createElement(\"div\")),\n input = document.createElement(\"input\");\n\n // Support: Android 4.0 - 4.3 only\n // Check state lost if the name is set (trac-11217)\n // Support: Windows Web Apps (WWA)\n // `name` and `type` must use .setAttribute for WWA (trac-14901)\n input.setAttribute(\"type\", \"radio\");\n input.setAttribute(\"checked\", \"checked\");\n input.setAttribute(\"name\", \"t\");\n div.appendChild(input);\n\n // Support: Android <=4.1 only\n // Older WebKit doesn't clone checked state correctly in fragments\n support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked;\n\n // Support: IE <=11 only\n // Make sure textarea (and checkbox) defaultValue is properly cloned\n div.innerHTML = \"\";\n support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue;\n\n // Support: IE <=9 only\n // IE <=9 replaces \";\n support.option = !!div.lastChild;\n })();\n\n // We have to close these tags to support XHTML (trac-13200)\n var wrapMap = {\n // XHTML parsers do not magically insert elements in the\n // same way that tag soup parsers do. So we cannot shorten\n // this by omitting or other required elements.\n thead: [1, \"\", \"
\"],\n col: [2, \"\", \"
\"],\n tr: [2, \"\", \"
\"],\n td: [3, \"\", \"
\"],\n _default: [0, \"\", \"\"]\n };\n wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\n wrapMap.th = wrapMap.td;\n\n // Support: IE <=9 only\n if (!support.option) {\n wrapMap.optgroup = wrapMap.option = [1, \"\"];\n }\n function getAll(context, tag) {\n // Support: IE <=9 - 11 only\n // Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n var ret;\n if (typeof context.getElementsByTagName !== \"undefined\") {\n ret = context.getElementsByTagName(tag || \"*\");\n } else if (typeof context.querySelectorAll !== \"undefined\") {\n ret = context.querySelectorAll(tag || \"*\");\n } else {\n ret = [];\n }\n if (tag === undefined || tag && nodeName(context, tag)) {\n return jQuery.merge([context], ret);\n }\n return ret;\n }\n\n // Mark scripts as having already been evaluated\n function setGlobalEval(elems, refElements) {\n var i = 0,\n l = elems.length;\n for (; i < l; i++) {\n dataPriv.set(elems[i], \"globalEval\", !refElements || dataPriv.get(refElements[i], \"globalEval\"));\n }\n }\n var rhtml = /<|&#?\\w+;/;\n function buildFragment(elems, context, scripts, selection, ignored) {\n var elem,\n tmp,\n tag,\n wrap,\n attached,\n j,\n fragment = context.createDocumentFragment(),\n nodes = [],\n i = 0,\n l = elems.length;\n for (; i < l; i++) {\n elem = elems[i];\n if (elem || elem === 0) {\n // Add nodes directly\n if (toType(elem) === \"object\") {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, elem.nodeType ? [elem] : elem);\n\n // Convert non-html into a text node\n } else if (!rhtml.test(elem)) {\n nodes.push(context.createTextNode(elem));\n\n // Convert html into DOM nodes\n } else {\n tmp = tmp || fragment.appendChild(context.createElement(\"div\"));\n\n // Deserialize a standard representation\n tag = (rtagName.exec(elem) || [\"\", \"\"])[1].toLowerCase();\n wrap = wrapMap[tag] || wrapMap._default;\n tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2];\n\n // Descend through wrappers to the right content\n j = wrap[0];\n while (j--) {\n tmp = tmp.lastChild;\n }\n\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, tmp.childNodes);\n\n // Remember the top-level container\n tmp = fragment.firstChild;\n\n // Ensure the created nodes are orphaned (trac-12392)\n tmp.textContent = \"\";\n }\n }\n }\n\n // Remove wrapper from fragment\n fragment.textContent = \"\";\n i = 0;\n while (elem = nodes[i++]) {\n // Skip elements already in the context collection (trac-4087)\n if (selection && jQuery.inArray(elem, selection) > -1) {\n if (ignored) {\n ignored.push(elem);\n }\n continue;\n }\n attached = isAttached(elem);\n\n // Append to fragment\n tmp = getAll(fragment.appendChild(elem), \"script\");\n\n // Preserve script evaluation history\n if (attached) {\n setGlobalEval(tmp);\n }\n\n // Capture executables\n if (scripts) {\n j = 0;\n while (elem = tmp[j++]) {\n if (rscriptType.test(elem.type || \"\")) {\n scripts.push(elem);\n }\n }\n }\n }\n return fragment;\n }\n var rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n function returnTrue() {\n return true;\n }\n function returnFalse() {\n return false;\n }\n function on(elem, types, selector, data, fn, one) {\n var origFn, type;\n\n // Types can be a map of types/handlers\n if (typeof types === \"object\") {\n // ( types-Object, selector, data )\n if (typeof selector !== \"string\") {\n // ( types-Object, data )\n data = data || selector;\n selector = undefined;\n }\n for (type in types) {\n on(elem, type, selector, data, types[type], one);\n }\n return elem;\n }\n if (data == null && fn == null) {\n // ( types, fn )\n fn = selector;\n data = selector = undefined;\n } else if (fn == null) {\n if (typeof selector === \"string\") {\n // ( types, selector, fn )\n fn = data;\n data = undefined;\n } else {\n // ( types, data, fn )\n fn = data;\n data = selector;\n selector = undefined;\n }\n }\n if (fn === false) {\n fn = returnFalse;\n } else if (!fn) {\n return elem;\n }\n if (one === 1) {\n origFn = fn;\n fn = function (event) {\n // Can use an empty set, since event contains the info\n jQuery().off(event);\n return origFn.apply(this, arguments);\n };\n\n // Use same guid so caller can remove using origFn\n fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);\n }\n return elem.each(function () {\n jQuery.event.add(this, types, fn, data, selector);\n });\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 */\n jQuery.event = {\n global: {},\n add: function (elem, types, handler, data, selector) {\n var handleObjIn,\n eventHandle,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.get(elem);\n\n // Only attach events to objects that accept data\n if (!acceptData(elem)) {\n return;\n }\n\n // Caller can pass in an object of custom data in lieu of the handler\n if (handler.handler) {\n handleObjIn = handler;\n handler = handleObjIn.handler;\n selector = handleObjIn.selector;\n }\n\n // Ensure that invalid selectors throw exceptions at attach time\n // Evaluate against documentElement in case elem is a non-element node (e.g., document)\n if (selector) {\n jQuery.find.matchesSelector(documentElement, selector);\n }\n\n // Make sure that the handler has a unique ID, used to find/remove it later\n if (!handler.guid) {\n handler.guid = jQuery.guid++;\n }\n\n // Init the element's event structure and main handler, if this is the first\n if (!(events = elemData.events)) {\n events = elemData.events = Object.create(null);\n }\n if (!(eventHandle = elemData.handle)) {\n eventHandle = elemData.handle = function (e) {\n // Discard the second event of a jQuery.event.trigger() and\n // when an event is called after a page has unloaded\n return typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined;\n };\n }\n\n // Handle multiple events separated by a space\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort();\n\n // There *must* be a type, no attaching namespace-only handlers\n if (!type) {\n continue;\n }\n\n // If event changes its type, use the special event handlers for the changed type\n special = jQuery.event.special[type] || {};\n\n // If selector defined, determine special event api type, otherwise given type\n type = (selector ? special.delegateType : special.bindType) || type;\n\n // Update special based on newly reset type\n special = jQuery.event.special[type] || {};\n\n // handleObj is passed to all event handlers\n handleObj = jQuery.extend({\n type: type,\n origType: origType,\n data: data,\n handler: handler,\n guid: handler.guid,\n selector: selector,\n needsContext: selector && jQuery.expr.match.needsContext.test(selector),\n namespace: namespaces.join(\".\")\n }, handleObjIn);\n\n // Init the event handler queue if we're the first\n if (!(handlers = events[type])) {\n handlers = events[type] = [];\n handlers.delegateCount = 0;\n\n // Only use addEventListener if the special events handler returns false\n if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {\n if (elem.addEventListener) {\n elem.addEventListener(type, eventHandle);\n }\n }\n }\n if (special.add) {\n special.add.call(elem, handleObj);\n if (!handleObj.handler.guid) {\n handleObj.handler.guid = handler.guid;\n }\n }\n\n // Add to the element's handler list, delegates in front\n if (selector) {\n handlers.splice(handlers.delegateCount++, 0, handleObj);\n } else {\n handlers.push(handleObj);\n }\n\n // Keep track of which events have ever been used, for event optimization\n jQuery.event.global[type] = true;\n }\n },\n // Detach an event or set of events from an element\n remove: function (elem, types, handler, selector, mappedTypes) {\n var j,\n origCount,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.hasData(elem) && dataPriv.get(elem);\n if (!elemData || !(events = elemData.events)) {\n return;\n }\n\n // Once for each type.namespace in types; type may be omitted\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort();\n\n // Unbind all events (on this namespace, if provided) for the element\n if (!type) {\n for (type in events) {\n jQuery.event.remove(elem, type + types[t], handler, selector, true);\n }\n continue;\n }\n special = jQuery.event.special[type] || {};\n type = (selector ? special.delegateType : special.bindType) || type;\n handlers = events[type] || [];\n tmp = tmp[2] && new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\");\n\n // Remove matching events\n origCount = j = handlers.length;\n while (j--) {\n handleObj = handlers[j];\n if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector)) {\n handlers.splice(j, 1);\n if (handleObj.selector) {\n handlers.delegateCount--;\n }\n if (special.remove) {\n special.remove.call(elem, handleObj);\n }\n }\n }\n\n // Remove generic event handler if we removed something and no more handlers exist\n // (avoids potential for endless recursion during removal of special event handlers)\n if (origCount && !handlers.length) {\n if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {\n jQuery.removeEvent(elem, type, elemData.handle);\n }\n delete events[type];\n }\n }\n\n // Remove data and the expando if it's no longer used\n if (jQuery.isEmptyObject(events)) {\n dataPriv.remove(elem, \"handle events\");\n }\n },\n dispatch: function (nativeEvent) {\n var i,\n j,\n ret,\n matched,\n handleObj,\n handlerQueue,\n args = new Array(arguments.length),\n // Make a writable jQuery.Event from the native event object\n event = jQuery.event.fix(nativeEvent),\n handlers = (dataPriv.get(this, \"events\") || Object.create(null))[event.type] || [],\n special = jQuery.event.special[event.type] || {};\n\n // Use the fix-ed jQuery.Event rather than the (read-only) native event\n args[0] = event;\n for (i = 1; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n event.delegateTarget = this;\n\n // Call the preDispatch hook for the mapped type, and let it bail if desired\n if (special.preDispatch && special.preDispatch.call(this, event) === false) {\n return;\n }\n\n // Determine handlers\n handlerQueue = jQuery.event.handlers.call(this, event, handlers);\n\n // Run delegates first; they may want to stop propagation beneath us\n i = 0;\n while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {\n event.currentTarget = matched.elem;\n j = 0;\n while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {\n // If the event is namespaced, then each handler is only invoked if it is\n // specially universal or its namespaces are a superset of the event's.\n if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) {\n event.handleObj = handleObj;\n event.data = handleObj.data;\n ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);\n if (ret !== undefined) {\n if ((event.result = ret) === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n }\n }\n\n // Call the postDispatch hook for the mapped type\n if (special.postDispatch) {\n special.postDispatch.call(this, event);\n }\n return event.result;\n },\n handlers: function (event, handlers) {\n var i,\n handleObj,\n sel,\n matchedHandlers,\n matchedSelectors,\n handlerQueue = [],\n delegateCount = handlers.delegateCount,\n cur = event.target;\n\n // Find delegate handlers\n if (delegateCount &&\n // Support: IE <=9\n // Black-hole SVG instance trees (trac-13180)\n cur.nodeType &&\n // Support: Firefox <=42\n // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n // Support: IE 11 only\n // ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n !(event.type === \"click\" && event.button >= 1)) {\n for (; cur !== this; cur = cur.parentNode || this) {\n // Don't check non-elements (trac-13208)\n // Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n if (cur.nodeType === 1 && !(event.type === \"click\" && cur.disabled === true)) {\n matchedHandlers = [];\n matchedSelectors = {};\n for (i = 0; i < delegateCount; i++) {\n handleObj = handlers[i];\n\n // Don't conflict with Object.prototype properties (trac-13203)\n sel = handleObj.selector + \" \";\n if (matchedSelectors[sel] === undefined) {\n matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length;\n }\n if (matchedSelectors[sel]) {\n matchedHandlers.push(handleObj);\n }\n }\n if (matchedHandlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: matchedHandlers\n });\n }\n }\n }\n }\n\n // Add the remaining (directly-bound) handlers\n cur = this;\n if (delegateCount < handlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: handlers.slice(delegateCount)\n });\n }\n return handlerQueue;\n },\n addProp: function (name, hook) {\n Object.defineProperty(jQuery.Event.prototype, name, {\n enumerable: true,\n configurable: true,\n get: isFunction(hook) ? function () {\n if (this.originalEvent) {\n return hook(this.originalEvent);\n }\n } : function () {\n if (this.originalEvent) {\n return this.originalEvent[name];\n }\n },\n set: function (value) {\n Object.defineProperty(this, name, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n });\n }\n });\n },\n fix: function (originalEvent) {\n return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent);\n },\n special: {\n load: {\n // Prevent triggered image.load events from bubbling to window.load\n noBubble: true\n },\n click: {\n // Utilize native event to ensure correct state for checkable inputs\n setup: function (data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data;\n\n // Claim the first handler\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n // dataPriv.set( el, \"click\", ... )\n leverageNative(el, \"click\", true);\n }\n\n // Return false to allow normal processing in the caller\n return false;\n },\n trigger: function (data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data;\n\n // Force setup before triggering a click\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n leverageNative(el, \"click\");\n }\n\n // Return non-false to allow normal event-path propagation\n return true;\n },\n // For cross-browser consistency, suppress native .click() on links\n // Also prevent it if we're currently inside a leveraged native-event stack\n _default: function (event) {\n var target = event.target;\n return rcheckableType.test(target.type) && target.click && nodeName(target, \"input\") && dataPriv.get(target, \"click\") || nodeName(target, \"a\");\n }\n },\n beforeunload: {\n postDispatch: function (event) {\n // Support: Firefox 20+\n // Firefox doesn't alert if the returnValue field is not set.\n if (event.result !== undefined && event.originalEvent) {\n event.originalEvent.returnValue = event.result;\n }\n }\n }\n }\n };\n\n // Ensure the presence of an event listener that handles manually-triggered\n // synthetic events by interrupting progress until reinvoked in response to\n // *native* events that it fires directly, ensuring that state changes have\n // already occurred before other listeners are invoked.\n function leverageNative(el, type, isSetup) {\n // Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n if (!isSetup) {\n if (dataPriv.get(el, type) === undefined) {\n jQuery.event.add(el, type, returnTrue);\n }\n return;\n }\n\n // Register the controller as a special universal handler for all event namespaces\n dataPriv.set(el, type, false);\n jQuery.event.add(el, type, {\n namespace: false,\n handler: function (event) {\n var result,\n saved = dataPriv.get(this, type);\n if (event.isTrigger & 1 && this[type]) {\n // Interrupt processing of the outer synthetic .trigger()ed event\n if (!saved) {\n // Store arguments for use when handling the inner native event\n // There will always be at least one argument (an event object), so this array\n // will not be confused with a leftover capture object.\n saved = slice.call(arguments);\n dataPriv.set(this, type, saved);\n\n // Trigger the native event and capture its result\n this[type]();\n result = dataPriv.get(this, type);\n dataPriv.set(this, type, false);\n if (saved !== result) {\n // Cancel the outer synthetic event\n event.stopImmediatePropagation();\n event.preventDefault();\n return result;\n }\n\n // If this is an inner synthetic event for an event with a bubbling surrogate\n // (focus or blur), assume that the surrogate already propagated from triggering\n // the native event and prevent that from happening again here.\n // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n // bubbling surrogate propagates *after* the non-bubbling base), but that seems\n // less bad than duplication.\n } else if ((jQuery.event.special[type] || {}).delegateType) {\n event.stopPropagation();\n }\n\n // If this is a native event triggered above, everything is now in order\n // Fire an inner synthetic event with the original arguments\n } else if (saved) {\n // ...and capture the result\n dataPriv.set(this, type, jQuery.event.trigger(saved[0], saved.slice(1), this));\n\n // Abort handling of the native event by all jQuery handlers while allowing\n // native handlers on the same element to run. On target, this is achieved\n // by stopping immediate propagation just on the jQuery event. However,\n // the native event is re-wrapped by a jQuery one on each level of the\n // propagation so the only way to stop it for jQuery is to stop it for\n // everyone via native `stopPropagation()`. This is not a problem for\n // focus/blur which don't bubble, but it does also stop click on checkboxes\n // and radios. We accept this limitation.\n event.stopPropagation();\n event.isImmediatePropagationStopped = returnTrue;\n }\n }\n });\n }\n jQuery.removeEvent = function (elem, type, handle) {\n // This \"if\" is needed for plain objects\n if (elem.removeEventListener) {\n elem.removeEventListener(type, handle);\n }\n };\n jQuery.Event = function (src, props) {\n // Allow instantiation without the 'new' keyword\n if (!(this instanceof jQuery.Event)) {\n return new jQuery.Event(src, props);\n }\n\n // Event object\n if (src && src.type) {\n this.originalEvent = src;\n this.type = src.type;\n\n // Events bubbling up the document may have been marked as prevented\n // by a handler lower down the tree; reflect the correct value.\n this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined &&\n // Support: Android <=2.3 only\n src.returnValue === false ? returnTrue : returnFalse;\n\n // Create target properties\n // Support: Safari <=6 - 7 only\n // Target should not be a text node (trac-504, trac-13143)\n this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;\n this.currentTarget = src.currentTarget;\n this.relatedTarget = src.relatedTarget;\n\n // Event type\n } else {\n this.type = src;\n }\n\n // Put explicitly provided properties onto the event object\n if (props) {\n jQuery.extend(this, props);\n }\n\n // Create a timestamp if incoming event doesn't have one\n this.timeStamp = src && src.timeStamp || Date.now();\n\n // Mark it as fixed\n this[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\n jQuery.Event.prototype = {\n constructor: jQuery.Event,\n isDefaultPrevented: returnFalse,\n isPropagationStopped: returnFalse,\n isImmediatePropagationStopped: returnFalse,\n isSimulated: false,\n preventDefault: function () {\n var e = this.originalEvent;\n this.isDefaultPrevented = returnTrue;\n if (e && !this.isSimulated) {\n e.preventDefault();\n }\n },\n stopPropagation: function () {\n var e = this.originalEvent;\n this.isPropagationStopped = returnTrue;\n if (e && !this.isSimulated) {\n e.stopPropagation();\n }\n },\n stopImmediatePropagation: function () {\n var e = this.originalEvent;\n this.isImmediatePropagationStopped = returnTrue;\n if (e && !this.isSimulated) {\n e.stopImmediatePropagation();\n }\n this.stopPropagation();\n }\n };\n\n // Includes all common event props including KeyEvent and MouseEvent specific props\n jQuery.each({\n altKey: true,\n bubbles: true,\n cancelable: true,\n changedTouches: true,\n ctrlKey: true,\n detail: true,\n eventPhase: true,\n metaKey: true,\n pageX: true,\n pageY: true,\n shiftKey: true,\n view: true,\n \"char\": true,\n code: true,\n charCode: true,\n key: true,\n keyCode: true,\n button: true,\n buttons: true,\n clientX: true,\n clientY: true,\n offsetX: true,\n offsetY: true,\n pointerId: true,\n pointerType: true,\n screenX: true,\n screenY: true,\n targetTouches: true,\n toElement: true,\n touches: true,\n which: true\n }, jQuery.event.addProp);\n jQuery.each({\n focus: \"focusin\",\n blur: \"focusout\"\n }, function (type, delegateType) {\n function focusMappedHandler(nativeEvent) {\n if (document.documentMode) {\n // Support: IE 11+\n // Attach a single focusin/focusout handler on the document while someone wants\n // focus/blur. This is because the former are synchronous in IE while the latter\n // are async. In other browsers, all those handlers are invoked synchronously.\n\n // `handle` from private data would already wrap the event, but we need\n // to change the `type` here.\n var handle = dataPriv.get(this, \"handle\"),\n event = jQuery.event.fix(nativeEvent);\n event.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n event.isSimulated = true;\n\n // First, handle focusin/focusout\n handle(nativeEvent);\n\n // ...then, handle focus/blur\n //\n // focus/blur don't bubble while focusin/focusout do; simulate the former by only\n // invoking the handler at the lower level.\n if (event.target === event.currentTarget) {\n // The setup part calls `leverageNative`, which, in turn, calls\n // `jQuery.event.add`, so event handle will already have been set\n // by this point.\n handle(event);\n }\n } else {\n // For non-IE browsers, attach a single capturing handler on the document\n // while someone wants focusin/focusout.\n jQuery.event.simulate(delegateType, nativeEvent.target, jQuery.event.fix(nativeEvent));\n }\n }\n jQuery.event.special[type] = {\n // Utilize native event if possible so blur/focus sequence is correct\n setup: function () {\n var attaches;\n\n // Claim the first handler\n // dataPriv.set( this, \"focus\", ... )\n // dataPriv.set( this, \"blur\", ... )\n leverageNative(this, type, true);\n if (document.documentMode) {\n // Support: IE 9 - 11+\n // We use the same native handler for focusin & focus (and focusout & blur)\n // so we need to coordinate setup & teardown parts between those events.\n // Use `delegateType` as the key as `type` is already used by `leverageNative`.\n attaches = dataPriv.get(this, delegateType);\n if (!attaches) {\n this.addEventListener(delegateType, focusMappedHandler);\n }\n dataPriv.set(this, delegateType, (attaches || 0) + 1);\n } else {\n // Return false to allow normal processing in the caller\n return false;\n }\n },\n trigger: function () {\n // Force setup before trigger\n leverageNative(this, type);\n\n // Return non-false to allow normal event-path propagation\n return true;\n },\n teardown: function () {\n var attaches;\n if (document.documentMode) {\n attaches = dataPriv.get(this, delegateType) - 1;\n if (!attaches) {\n this.removeEventListener(delegateType, focusMappedHandler);\n dataPriv.remove(this, delegateType);\n } else {\n dataPriv.set(this, delegateType, attaches);\n }\n } else {\n // Return false to indicate standard teardown should be applied\n return false;\n }\n },\n // Suppress native focus or blur if we're currently inside\n // a leveraged native-event stack\n _default: function (event) {\n return dataPriv.get(event.target, type);\n },\n delegateType: delegateType\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\n //\n // Support: IE 9 - 11+\n // To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n // attach a single handler for both events in IE.\n jQuery.event.special[delegateType] = {\n setup: function () {\n // Handle: regular nodes (via `this.ownerDocument`), window\n // (via `this.document`) & document (via `this`).\n var doc = this.ownerDocument || this.document || this,\n dataHolder = document.documentMode ? this : doc,\n attaches = dataPriv.get(dataHolder, delegateType);\n\n // Support: IE 9 - 11+\n // We use the same native handler for focusin & focus (and focusout & blur)\n // so we need to coordinate setup & teardown parts between those events.\n // Use `delegateType` as the key as `type` is already used by `leverageNative`.\n if (!attaches) {\n if (document.documentMode) {\n this.addEventListener(delegateType, focusMappedHandler);\n } else {\n doc.addEventListener(type, focusMappedHandler, true);\n }\n }\n dataPriv.set(dataHolder, delegateType, (attaches || 0) + 1);\n },\n teardown: function () {\n var doc = this.ownerDocument || this.document || this,\n dataHolder = document.documentMode ? this : doc,\n attaches = dataPriv.get(dataHolder, delegateType) - 1;\n if (!attaches) {\n if (document.documentMode) {\n this.removeEventListener(delegateType, focusMappedHandler);\n } else {\n doc.removeEventListener(type, focusMappedHandler, true);\n }\n dataPriv.remove(dataHolder, delegateType);\n } else {\n dataPriv.set(dataHolder, delegateType, attaches);\n }\n }\n };\n });\n\n // Create mouseenter/leave events using mouseover/out and event-time checks\n // so that event delegation works in jQuery.\n // Do the same for pointerenter/pointerleave and pointerover/pointerout\n //\n // Support: Safari 7 only\n // Safari sends mouseenter too often; see:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n // for the description of the bug (it existed in older Chrome versions as well).\n jQuery.each({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\",\n pointerenter: \"pointerover\",\n pointerleave: \"pointerout\"\n }, function (orig, fix) {\n jQuery.event.special[orig] = {\n delegateType: fix,\n bindType: fix,\n handle: function (event) {\n var ret,\n target = this,\n related = event.relatedTarget,\n handleObj = event.handleObj;\n\n // For mouseenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n if (!related || related !== target && !jQuery.contains(target, related)) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply(this, arguments);\n event.type = fix;\n }\n return ret;\n }\n };\n });\n jQuery.fn.extend({\n on: function (types, selector, data, fn) {\n return on(this, types, selector, data, fn);\n },\n one: function (types, selector, data, fn) {\n return on(this, types, selector, data, fn, 1);\n },\n off: function (types, selector, fn) {\n var handleObj, type;\n if (types && types.preventDefault && types.handleObj) {\n // ( event ) dispatched jQuery.Event\n handleObj = types.handleObj;\n jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);\n return this;\n }\n if (typeof types === \"object\") {\n // ( types-object [, selector] )\n for (type in types) {\n this.off(type, selector, types[type]);\n }\n return this;\n }\n if (selector === false || typeof selector === \"function\") {\n // ( types [, fn] )\n fn = selector;\n selector = undefined;\n }\n if (fn === false) {\n fn = returnFalse;\n }\n return this.each(function () {\n jQuery.event.remove(this, types, fn, selector);\n });\n }\n });\n var\n // Support: IE <=10 - 11, Edge 12 - 13 only\n // In IE/Edge using regex groups here causes severe slowdowns.\n // See https://connect.microsoft.com/IE/feedback/details/1736512/\n rnoInnerhtml = /\\s*$/g;\n\n // Prefer a tbody over its parent table for containing new rows\n function manipulationTarget(elem, content) {\n if (nodeName(elem, \"table\") && nodeName(content.nodeType !== 11 ? content : content.firstChild, \"tr\")) {\n return jQuery(elem).children(\"tbody\")[0] || elem;\n }\n return elem;\n }\n\n // Replace/restore the type attribute of script elements for safe DOM manipulation\n function disableScript(elem) {\n elem.type = (elem.getAttribute(\"type\") !== null) + \"/\" + elem.type;\n return elem;\n }\n function restoreScript(elem) {\n if ((elem.type || \"\").slice(0, 5) === \"true/\") {\n elem.type = elem.type.slice(5);\n } else {\n elem.removeAttribute(\"type\");\n }\n return elem;\n }\n function cloneCopyEvent(src, dest) {\n var i, l, type, pdataOld, udataOld, udataCur, events;\n if (dest.nodeType !== 1) {\n return;\n }\n\n // 1. Copy private data: events, handlers, etc.\n if (dataPriv.hasData(src)) {\n pdataOld = dataPriv.get(src);\n events = pdataOld.events;\n if (events) {\n dataPriv.remove(dest, \"handle events\");\n for (type in events) {\n for (i = 0, l = events[type].length; i < l; i++) {\n jQuery.event.add(dest, type, events[type][i]);\n }\n }\n }\n }\n\n // 2. Copy user data\n if (dataUser.hasData(src)) {\n udataOld = dataUser.access(src);\n udataCur = jQuery.extend({}, udataOld);\n dataUser.set(dest, udataCur);\n }\n }\n\n // Fix IE bugs, see support tests\n function fixInput(src, dest) {\n var nodeName = dest.nodeName.toLowerCase();\n\n // Fails to persist the checked state of a cloned checkbox or radio button.\n if (nodeName === \"input\" && rcheckableType.test(src.type)) {\n dest.checked = src.checked;\n\n // Fails to return the selected option to the default selected state when cloning options\n } else if (nodeName === \"input\" || nodeName === \"textarea\") {\n dest.defaultValue = src.defaultValue;\n }\n }\n function domManip(collection, args, callback, ignored) {\n // Flatten any nested arrays\n args = flat(args);\n var fragment,\n first,\n scripts,\n hasScripts,\n node,\n doc,\n i = 0,\n l = collection.length,\n iNoClone = l - 1,\n value = args[0],\n valueIsFunction = isFunction(value);\n\n // We can't cloneNode fragments that contain checked, in WebKit\n if (valueIsFunction || l > 1 && typeof value === \"string\" && !support.checkClone && rchecked.test(value)) {\n return collection.each(function (index) {\n var self = collection.eq(index);\n if (valueIsFunction) {\n args[0] = value.call(this, index, self.html());\n }\n domManip(self, args, callback, ignored);\n });\n }\n if (l) {\n fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);\n first = fragment.firstChild;\n if (fragment.childNodes.length === 1) {\n fragment = first;\n }\n\n // Require either new content or an interest in ignored elements to invoke the callback\n if (first || ignored) {\n scripts = jQuery.map(getAll(fragment, \"script\"), disableScript);\n hasScripts = scripts.length;\n\n // Use the original fragment for the last item\n // instead of the first because it can end up\n // being emptied incorrectly in certain situations (trac-8070).\n for (; i < l; i++) {\n node = fragment;\n if (i !== iNoClone) {\n node = jQuery.clone(node, true, true);\n\n // Keep references to cloned scripts for later restoration\n if (hasScripts) {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(scripts, getAll(node, \"script\"));\n }\n }\n callback.call(collection[i], node, i);\n }\n if (hasScripts) {\n doc = scripts[scripts.length - 1].ownerDocument;\n\n // Re-enable scripts\n jQuery.map(scripts, restoreScript);\n\n // Evaluate executable scripts on first document insertion\n for (i = 0; i < hasScripts; i++) {\n node = scripts[i];\n if (rscriptType.test(node.type || \"\") && !dataPriv.access(node, \"globalEval\") && jQuery.contains(doc, node)) {\n if (node.src && (node.type || \"\").toLowerCase() !== \"module\") {\n // Optional AJAX dependency, but won't run scripts if not present\n if (jQuery._evalUrl && !node.noModule) {\n jQuery._evalUrl(node.src, {\n nonce: node.nonce || node.getAttribute(\"nonce\")\n }, doc);\n }\n } else {\n // Unwrap a CDATA section containing script contents. This shouldn't be\n // needed as in XML documents they're already not visible when\n // inspecting element contents and in HTML documents they have no\n // meaning but we're preserving that logic for backwards compatibility.\n // This will be removed completely in 4.0. See gh-4904.\n DOMEval(node.textContent.replace(rcleanScript, \"\"), node, doc);\n }\n }\n }\n }\n }\n }\n return collection;\n }\n function remove(elem, selector, keepData) {\n var node,\n nodes = selector ? jQuery.filter(selector, elem) : elem,\n i = 0;\n for (; (node = nodes[i]) != null; i++) {\n if (!keepData && node.nodeType === 1) {\n jQuery.cleanData(getAll(node));\n }\n if (node.parentNode) {\n if (keepData && isAttached(node)) {\n setGlobalEval(getAll(node, \"script\"));\n }\n node.parentNode.removeChild(node);\n }\n }\n return elem;\n }\n jQuery.extend({\n htmlPrefilter: function (html) {\n return html;\n },\n clone: function (elem, dataAndEvents, deepDataAndEvents) {\n var i,\n l,\n srcElements,\n destElements,\n clone = elem.cloneNode(true),\n inPage = isAttached(elem);\n\n // Fix IE cloning issues\n if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {\n // We eschew jQuery#find here for performance reasons:\n // https://jsperf.com/getall-vs-sizzle/2\n destElements = getAll(clone);\n srcElements = getAll(elem);\n for (i = 0, l = srcElements.length; i < l; i++) {\n fixInput(srcElements[i], destElements[i]);\n }\n }\n\n // Copy the events from the original to the clone\n if (dataAndEvents) {\n if (deepDataAndEvents) {\n srcElements = srcElements || getAll(elem);\n destElements = destElements || getAll(clone);\n for (i = 0, l = srcElements.length; i < l; i++) {\n cloneCopyEvent(srcElements[i], destElements[i]);\n }\n } else {\n cloneCopyEvent(elem, clone);\n }\n }\n\n // Preserve script evaluation history\n destElements = getAll(clone, \"script\");\n if (destElements.length > 0) {\n setGlobalEval(destElements, !inPage && getAll(elem, \"script\"));\n }\n\n // Return the cloned set\n return clone;\n },\n cleanData: function (elems) {\n var data,\n elem,\n type,\n special = jQuery.event.special,\n i = 0;\n for (; (elem = elems[i]) !== undefined; i++) {\n if (acceptData(elem)) {\n if (data = elem[dataPriv.expando]) {\n if (data.events) {\n for (type in data.events) {\n if (special[type]) {\n jQuery.event.remove(elem, type);\n\n // This is a shortcut to avoid jQuery.event.remove's overhead\n } else {\n jQuery.removeEvent(elem, type, data.handle);\n }\n }\n }\n\n // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n elem[dataPriv.expando] = undefined;\n }\n if (elem[dataUser.expando]) {\n // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n elem[dataUser.expando] = undefined;\n }\n }\n }\n }\n });\n jQuery.fn.extend({\n detach: function (selector) {\n return remove(this, selector, true);\n },\n remove: function (selector) {\n return remove(this, selector);\n },\n text: function (value) {\n return access(this, function (value) {\n return value === undefined ? jQuery.text(this) : this.empty().each(function () {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n this.textContent = value;\n }\n });\n }, null, value, arguments.length);\n },\n append: function () {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.appendChild(elem);\n }\n });\n },\n prepend: function () {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.insertBefore(elem, target.firstChild);\n }\n });\n },\n before: function () {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this);\n }\n });\n },\n after: function () {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this.nextSibling);\n }\n });\n },\n empty: function () {\n var elem,\n i = 0;\n for (; (elem = this[i]) != null; i++) {\n if (elem.nodeType === 1) {\n // Prevent memory leaks\n jQuery.cleanData(getAll(elem, false));\n\n // Remove any remaining nodes\n elem.textContent = \"\";\n }\n }\n return this;\n },\n clone: function (dataAndEvents, deepDataAndEvents) {\n dataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n return this.map(function () {\n return jQuery.clone(this, dataAndEvents, deepDataAndEvents);\n });\n },\n html: function (value) {\n return access(this, function (value) {\n var elem = this[0] || {},\n i = 0,\n l = this.length;\n if (value === undefined && elem.nodeType === 1) {\n return elem.innerHTML;\n }\n\n // See if we can take a shortcut and just use innerHTML\n if (typeof value === \"string\" && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || [\"\", \"\"])[1].toLowerCase()]) {\n value = jQuery.htmlPrefilter(value);\n try {\n for (; i < l; i++) {\n elem = this[i] || {};\n\n // Remove element nodes and prevent memory leaks\n if (elem.nodeType === 1) {\n jQuery.cleanData(getAll(elem, false));\n elem.innerHTML = value;\n }\n }\n elem = 0;\n\n // If using innerHTML throws an exception, use the fallback method\n } catch (e) {}\n }\n if (elem) {\n this.empty().append(value);\n }\n }, null, value, arguments.length);\n },\n replaceWith: function () {\n var ignored = [];\n\n // Make the changes, replacing each non-ignored context element with the new content\n return domManip(this, arguments, function (elem) {\n var parent = this.parentNode;\n if (jQuery.inArray(this, ignored) < 0) {\n jQuery.cleanData(getAll(this));\n if (parent) {\n parent.replaceChild(elem, this);\n }\n }\n\n // Force callback invocation\n }, ignored);\n }\n });\n jQuery.each({\n appendTo: \"append\",\n prependTo: \"prepend\",\n insertBefore: \"before\",\n insertAfter: \"after\",\n replaceAll: \"replaceWith\"\n }, function (name, original) {\n jQuery.fn[name] = function (selector) {\n var elems,\n ret = [],\n insert = jQuery(selector),\n last = insert.length - 1,\n i = 0;\n for (; i <= last; i++) {\n elems = i === last ? this : this.clone(true);\n jQuery(insert[i])[original](elems);\n\n // Support: Android <=4.0 only, PhantomJS 1 only\n // .get() because push.apply(_, arraylike) throws on ancient WebKit\n push.apply(ret, elems.get());\n }\n return this.pushStack(ret);\n };\n });\n var rnumnonpx = new RegExp(\"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\");\n var rcustomProp = /^--/;\n var getStyles = function (elem) {\n // Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n var view = elem.ownerDocument.defaultView;\n if (!view || !view.opener) {\n view = window;\n }\n return view.getComputedStyle(elem);\n };\n var swap = function (elem, options, callback) {\n var ret,\n name,\n old = {};\n\n // Remember the old values, and insert the new ones\n for (name in options) {\n old[name] = elem.style[name];\n elem.style[name] = options[name];\n }\n ret = callback.call(elem);\n\n // Revert the old values\n for (name in options) {\n elem.style[name] = old[name];\n }\n return ret;\n };\n var rboxStyle = new RegExp(cssExpand.join(\"|\"), \"i\");\n (function () {\n // Executing both pixelPosition & boxSizingReliable tests require only one layout\n // so they're executed at the same time to save the second computation.\n function computeStyleTests() {\n // This is a singleton, we need to execute it only once\n if (!div) {\n return;\n }\n container.style.cssText = \"position:absolute;left:-11111px;width:60px;\" + \"margin-top:1px;padding:0;border:0\";\n div.style.cssText = \"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" + \"margin:auto;border:1px;padding:1px;\" + \"width:60%;top:1%\";\n documentElement.appendChild(container).appendChild(div);\n var divStyle = window.getComputedStyle(div);\n pixelPositionVal = divStyle.top !== \"1%\";\n\n // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12;\n\n // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n // Some styles come back with percentage values, even though they shouldn't\n div.style.right = \"60%\";\n pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36;\n\n // Support: IE 9 - 11 only\n // Detect misreporting of content dimensions for box-sizing:border-box elements\n boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36;\n\n // Support: IE 9 only\n // Detect overflow:scroll screwiness (gh-3699)\n // Support: Chrome <=64\n // Don't get tricked when zoom affects offsetWidth (gh-4029)\n div.style.position = \"absolute\";\n scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12;\n documentElement.removeChild(container);\n\n // Nullify the div so it wouldn't be stored in the memory and\n // it will also be a sign that checks already performed\n div = null;\n }\n function roundPixelMeasures(measure) {\n return Math.round(parseFloat(measure));\n }\n var pixelPositionVal,\n boxSizingReliableVal,\n scrollboxSizeVal,\n pixelBoxStylesVal,\n reliableTrDimensionsVal,\n reliableMarginLeftVal,\n container = document.createElement(\"div\"),\n div = document.createElement(\"div\");\n\n // Finish early in limited (non-browser) environments\n if (!div.style) {\n return;\n }\n\n // Support: IE <=9 - 11 only\n // Style of cloned element affects source element cloned (trac-8908)\n div.style.backgroundClip = \"content-box\";\n div.cloneNode(true).style.backgroundClip = \"\";\n support.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n jQuery.extend(support, {\n boxSizingReliable: function () {\n computeStyleTests();\n return boxSizingReliableVal;\n },\n pixelBoxStyles: function () {\n computeStyleTests();\n return pixelBoxStylesVal;\n },\n pixelPosition: function () {\n computeStyleTests();\n return pixelPositionVal;\n },\n reliableMarginLeft: function () {\n computeStyleTests();\n return reliableMarginLeftVal;\n },\n scrollboxSize: function () {\n computeStyleTests();\n return scrollboxSizeVal;\n },\n // Support: IE 9 - 11+, Edge 15 - 18+\n // IE/Edge misreport `getComputedStyle` of table rows with width/height\n // set in CSS while `offset*` properties report correct values.\n // Behavior in IE 9 is more subtle than in newer versions & it passes\n // some versions of this test; make sure not to make it pass there!\n //\n // Support: Firefox 70+\n // Only Firefox includes border widths\n // in computed dimensions. (gh-4529)\n reliableTrDimensions: function () {\n var table, tr, trChild, trStyle;\n if (reliableTrDimensionsVal == null) {\n table = document.createElement(\"table\");\n tr = document.createElement(\"tr\");\n trChild = document.createElement(\"div\");\n table.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n tr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n // Support: Chrome 86+\n // Height set through cssText does not get applied.\n // Computed height then comes back as 0.\n tr.style.height = \"1px\";\n trChild.style.height = \"9px\";\n\n // Support: Android 8 Chrome 86+\n // In our bodyBackground.html iframe,\n // display for all div elements is set to \"inline\",\n // which causes a problem only in Android 8 Chrome 86.\n // Ensuring the div is `display: block`\n // gets around this issue.\n trChild.style.display = \"block\";\n documentElement.appendChild(table).appendChild(tr).appendChild(trChild);\n trStyle = window.getComputedStyle(tr);\n reliableTrDimensionsVal = parseInt(trStyle.height, 10) + parseInt(trStyle.borderTopWidth, 10) + parseInt(trStyle.borderBottomWidth, 10) === tr.offsetHeight;\n documentElement.removeChild(table);\n }\n return reliableTrDimensionsVal;\n }\n });\n })();\n function curCSS(elem, name, computed) {\n var width,\n minWidth,\n maxWidth,\n ret,\n isCustomProp = rcustomProp.test(name),\n // Support: Firefox 51+\n // Retrieving style before computed somehow\n // fixes an issue with getting wrong values\n // on detached elements\n style = elem.style;\n computed = computed || getStyles(elem);\n\n // getPropertyValue is needed for:\n // .css('filter') (IE 9 only, trac-12537)\n // .css('--customProperty) (gh-3144)\n if (computed) {\n // Support: IE <=9 - 11+\n // IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n // it's only available as `\"cssFloat\"`. We no longer modify properties\n // sent to `.css()` apart from camelCasing, so we need to check both.\n // Normally, this would create difference in behavior: if\n // `getPropertyValue` returns an empty string, the value returned\n // by `.css()` would be `undefined`. This is usually the case for\n // disconnected elements. However, in IE even disconnected elements\n // with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n ret = computed.getPropertyValue(name) || computed[name];\n if (isCustomProp && ret) {\n // Support: Firefox 105+, Chrome <=105+\n // Spec requires trimming whitespace for custom properties (gh-4926).\n // Firefox only trims leading whitespace. Chrome just collapses\n // both leading & trailing whitespace to a single space.\n //\n // Fall back to `undefined` if empty string returned.\n // This collapses a missing definition with property defined\n // and set to an empty string but there's no standard API\n // allowing us to differentiate them without a performance penalty\n // and returning `undefined` aligns with older jQuery.\n //\n // rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n // as whitespace while CSS does not, but this is not a problem\n // because CSS preprocessing replaces them with U+000A LINE FEED\n // (which *is* CSS whitespace)\n // https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n ret = ret.replace(rtrimCSS, \"$1\") || undefined;\n }\n if (ret === \"\" && !isAttached(elem)) {\n ret = jQuery.style(elem, name);\n }\n\n // A tribute to the \"awesome hack by Dean Edwards\"\n // Android Browser returns percentage for some values,\n // but width seems to be reliably pixels.\n // This is against the CSSOM draft spec:\n // https://drafts.csswg.org/cssom/#resolved-values\n if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) {\n // Remember the original values\n width = style.width;\n minWidth = style.minWidth;\n maxWidth = style.maxWidth;\n\n // Put in the new values to get a computed value out\n style.minWidth = style.maxWidth = style.width = ret;\n ret = computed.width;\n\n // Revert the changed values\n style.width = width;\n style.minWidth = minWidth;\n style.maxWidth = maxWidth;\n }\n }\n return ret !== undefined ?\n // Support: IE <=9 - 11 only\n // IE returns zIndex value as an integer.\n ret + \"\" : ret;\n }\n function addGetHookIf(conditionFn, hookFn) {\n // Define the hook, we'll check on the first run if it's really needed.\n return {\n get: function () {\n if (conditionFn()) {\n // Hook not needed (or it's not possible to use it due\n // to missing dependency), remove it.\n delete this.get;\n return;\n }\n\n // Hook needed; redefine it so that the support test is not executed again.\n return (this.get = hookFn).apply(this, arguments);\n }\n };\n }\n var cssPrefixes = [\"Webkit\", \"Moz\", \"ms\"],\n emptyStyle = document.createElement(\"div\").style,\n vendorProps = {};\n\n // Return a vendor-prefixed property or undefined\n function vendorPropName(name) {\n // Check for vendor prefixed names\n var capName = name[0].toUpperCase() + name.slice(1),\n i = cssPrefixes.length;\n while (i--) {\n name = cssPrefixes[i] + capName;\n if (name in emptyStyle) {\n return name;\n }\n }\n }\n\n // Return a potentially-mapped jQuery.cssProps or vendor prefixed property\n function finalPropName(name) {\n var final = jQuery.cssProps[name] || vendorProps[name];\n if (final) {\n return final;\n }\n if (name in emptyStyle) {\n return name;\n }\n return vendorProps[name] = vendorPropName(name) || name;\n }\n var\n // Swappable if display is none or starts with table\n // except \"table\", \"table-cell\", or \"table-caption\"\n // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n rdisplayswap = /^(none|table(?!-c[ea]).+)/,\n cssShow = {\n position: \"absolute\",\n visibility: \"hidden\",\n display: \"block\"\n },\n cssNormalTransform = {\n letterSpacing: \"0\",\n fontWeight: \"400\"\n };\n function setPositiveNumber(_elem, value, subtract) {\n // Any relative (+/-) values have already been\n // normalized at this point\n var matches = rcssNum.exec(value);\n return matches ?\n // Guard against undefined \"subtract\", e.g., when used as in cssHooks\n Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || \"px\") : value;\n }\n function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) {\n var i = dimension === \"width\" ? 1 : 0,\n extra = 0,\n delta = 0,\n marginDelta = 0;\n\n // Adjustment may not be necessary\n if (box === (isBorderBox ? \"border\" : \"content\")) {\n return 0;\n }\n for (; i < 4; i += 2) {\n // Both box models exclude margin\n // Count margin delta separately to only add it after scroll gutter adjustment.\n // This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n if (box === \"margin\") {\n marginDelta += jQuery.css(elem, box + cssExpand[i], true, styles);\n }\n\n // If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n if (!isBorderBox) {\n // Add padding\n delta += jQuery.css(elem, \"padding\" + cssExpand[i], true, styles);\n\n // For \"border\" or \"margin\", add border\n if (box !== \"padding\") {\n delta += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n\n // But still keep track of it otherwise\n } else {\n extra += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n }\n\n // If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n // \"padding\" or \"margin\"\n } else {\n // For \"content\", subtract padding\n if (box === \"content\") {\n delta -= jQuery.css(elem, \"padding\" + cssExpand[i], true, styles);\n }\n\n // For \"content\" or \"padding\", subtract border\n if (box !== \"margin\") {\n delta -= jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n }\n }\n }\n\n // Account for positive content-box scroll gutter when requested by providing computedVal\n if (!isBorderBox && computedVal >= 0) {\n // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n // Assuming integer scroll gutter, subtract the rest and round down\n delta += Math.max(0, Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5\n\n // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n // Use an explicit zero to avoid NaN (gh-3964)\n )) || 0;\n }\n return delta + marginDelta;\n }\n function getWidthOrHeight(elem, dimension, extra) {\n // Start with computed style\n var styles = getStyles(elem),\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n // Fake content-box until we know it's needed to know the true value.\n boxSizingNeeded = !support.boxSizingReliable() || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n valueIsBorderBox = isBorderBox,\n val = curCSS(elem, dimension, styles),\n offsetProp = \"offset\" + dimension[0].toUpperCase() + dimension.slice(1);\n\n // Support: Firefox <=54\n // Return a confounding non-pixel value or feign ignorance, as appropriate.\n if (rnumnonpx.test(val)) {\n if (!extra) {\n return val;\n }\n val = \"auto\";\n }\n\n // Support: IE 9 - 11 only\n // Use offsetWidth/offsetHeight for when box sizing is unreliable.\n // In those cases, the computed value can be trusted to be border-box.\n if ((!support.boxSizingReliable() && isBorderBox ||\n // Support: IE 10 - 11+, Edge 15 - 18+\n // IE/Edge misreport `getComputedStyle` of table rows with width/height\n // set in CSS while `offset*` properties report correct values.\n // Interestingly, in some cases IE 9 doesn't suffer from this issue.\n !support.reliableTrDimensions() && nodeName(elem, \"tr\") ||\n // Fall back to offsetWidth/offsetHeight when value is \"auto\"\n // This happens for inline elements with no explicit setting (gh-3571)\n val === \"auto\" ||\n // Support: Android <=4.1 - 4.3 only\n // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n !parseFloat(val) && jQuery.css(elem, \"display\", false, styles) === \"inline\") &&\n // Make sure the element is visible & connected\n elem.getClientRects().length) {\n isBorderBox = jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\";\n\n // Where available, offsetWidth/offsetHeight approximate border box dimensions.\n // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n // retrieved value as a content box dimension.\n valueIsBorderBox = offsetProp in elem;\n if (valueIsBorderBox) {\n val = elem[offsetProp];\n }\n }\n\n // Normalize \"\" and auto\n val = parseFloat(val) || 0;\n\n // Adjust for the element's box model\n return val + boxModelAdjustment(elem, dimension, extra || (isBorderBox ? \"border\" : \"content\"), valueIsBorderBox, styles,\n // Provide the current computed size to request scroll gutter calculation (gh-3589)\n val) + \"px\";\n }\n jQuery.extend({\n // Add in style property hooks for overriding the default\n // behavior of getting and setting a style property\n cssHooks: {\n opacity: {\n get: function (elem, computed) {\n if (computed) {\n // We should always get a number back from opacity\n var ret = curCSS(elem, \"opacity\");\n return ret === \"\" ? \"1\" : ret;\n }\n }\n }\n },\n // Don't automatically add \"px\" to these possibly-unitless properties\n cssNumber: {\n animationIterationCount: true,\n aspectRatio: true,\n borderImageSlice: true,\n columnCount: true,\n flexGrow: true,\n flexShrink: true,\n fontWeight: true,\n gridArea: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnStart: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowStart: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n scale: true,\n widows: true,\n zIndex: true,\n zoom: true,\n // SVG-related\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeMiterlimit: true,\n strokeOpacity: true\n },\n // Add in properties whose names you wish to fix before\n // setting or getting the value\n cssProps: {},\n // Get and set the style property on a DOM Node\n style: function (elem, name, value, extra) {\n // Don't set styles on text and comment nodes\n if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {\n return;\n }\n\n // Make sure that we're working with the right name\n var ret,\n type,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name),\n style = elem.style;\n\n // Make sure that we're working with the right name. We don't\n // want to query the value if it is a CSS custom property\n // since they are user-defined.\n if (!isCustomProp) {\n name = finalPropName(origName);\n }\n\n // Gets hook for the prefixed version, then unprefixed version\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];\n\n // Check if we're setting a value\n if (value !== undefined) {\n type = typeof value;\n\n // Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n if (type === \"string\" && (ret = rcssNum.exec(value)) && ret[1]) {\n value = adjustCSS(elem, name, ret);\n\n // Fixes bug trac-9237\n type = \"number\";\n }\n\n // Make sure that null and NaN values aren't set (trac-7116)\n if (value == null || value !== value) {\n return;\n }\n\n // If a number was passed in, add the unit (except for certain CSS properties)\n // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n // \"px\" to a few hardcoded values.\n if (type === \"number\" && !isCustomProp) {\n value += ret && ret[3] || (jQuery.cssNumber[origName] ? \"\" : \"px\");\n }\n\n // background-* props affect original clone's values\n if (!support.clearCloneStyle && value === \"\" && name.indexOf(\"background\") === 0) {\n style[name] = \"inherit\";\n }\n\n // If a hook was provided, use that value, otherwise just set the specified value\n if (!hooks || !(\"set\" in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) {\n if (isCustomProp) {\n style.setProperty(name, value);\n } else {\n style[name] = value;\n }\n }\n } else {\n // If a hook was provided get the non-computed value from there\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) {\n return ret;\n }\n\n // Otherwise just get the value from the style object\n return style[name];\n }\n },\n css: function (elem, name, extra, styles) {\n var val,\n num,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name);\n\n // Make sure that we're working with the right name. We don't\n // want to modify the value if it is a CSS custom property\n // since they are user-defined.\n if (!isCustomProp) {\n name = finalPropName(origName);\n }\n\n // Try prefixed name followed by the unprefixed name\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];\n\n // If a hook was provided get the computed value from there\n if (hooks && \"get\" in hooks) {\n val = hooks.get(elem, true, extra);\n }\n\n // Otherwise, if a way to get the computed value exists, use that\n if (val === undefined) {\n val = curCSS(elem, name, styles);\n }\n\n // Convert \"normal\" to computed value\n if (val === \"normal\" && name in cssNormalTransform) {\n val = cssNormalTransform[name];\n }\n\n // Make numeric if forced or a qualifier was provided and val looks numeric\n if (extra === \"\" || extra) {\n num = parseFloat(val);\n return extra === true || isFinite(num) ? num || 0 : val;\n }\n return val;\n }\n });\n jQuery.each([\"height\", \"width\"], function (_i, dimension) {\n jQuery.cssHooks[dimension] = {\n get: function (elem, computed, extra) {\n if (computed) {\n // Certain elements can have dimension info if we invisibly show them\n // but it must have a current display style that would benefit\n return rdisplayswap.test(jQuery.css(elem, \"display\")) && (\n // Support: Safari 8+\n // Table columns in Safari have non-zero offsetWidth & zero\n // getBoundingClientRect().width unless display is changed.\n // Support: IE <=11 only\n // Running getBoundingClientRect on a disconnected node\n // in IE throws an error.\n !elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function () {\n return getWidthOrHeight(elem, dimension, extra);\n }) : getWidthOrHeight(elem, dimension, extra);\n }\n },\n set: function (elem, value, extra) {\n var matches,\n styles = getStyles(elem),\n // Only read styles.position if the test has a chance to fail\n // to avoid forcing a reflow.\n scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === \"absolute\",\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n boxSizingNeeded = scrollboxSizeBuggy || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n subtract = extra ? boxModelAdjustment(elem, dimension, extra, isBorderBox, styles) : 0;\n\n // Account for unreliable border-box dimensions by comparing offset* to computed and\n // faking a content-box to get border and padding (gh-3699)\n if (isBorderBox && scrollboxSizeBuggy) {\n subtract -= Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, \"border\", false, styles) - 0.5);\n }\n\n // Convert to pixels if value adjustment is needed\n if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || \"px\") !== \"px\") {\n elem.style[dimension] = value;\n value = jQuery.css(elem, dimension);\n }\n return setPositiveNumber(elem, value, subtract);\n }\n };\n });\n jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function (elem, computed) {\n if (computed) {\n return (parseFloat(curCSS(elem, \"marginLeft\")) || elem.getBoundingClientRect().left - swap(elem, {\n marginLeft: 0\n }, function () {\n return elem.getBoundingClientRect().left;\n })) + \"px\";\n }\n });\n\n // These hooks are used by animate to expand properties\n jQuery.each({\n margin: \"\",\n padding: \"\",\n border: \"Width\"\n }, function (prefix, suffix) {\n jQuery.cssHooks[prefix + suffix] = {\n expand: function (value) {\n var i = 0,\n expanded = {},\n // Assumes a single number if not a string\n parts = typeof value === \"string\" ? value.split(\" \") : [value];\n for (; i < 4; i++) {\n expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];\n }\n return expanded;\n }\n };\n if (prefix !== \"margin\") {\n jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;\n }\n });\n jQuery.fn.extend({\n css: function (name, value) {\n return access(this, function (elem, name, value) {\n var styles,\n len,\n map = {},\n i = 0;\n if (Array.isArray(name)) {\n styles = getStyles(elem);\n len = name.length;\n for (; i < len; i++) {\n map[name[i]] = jQuery.css(elem, name[i], false, styles);\n }\n return map;\n }\n return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name);\n }, name, value, arguments.length > 1);\n }\n });\n function Tween(elem, options, prop, end, easing) {\n return new Tween.prototype.init(elem, options, prop, end, easing);\n }\n jQuery.Tween = Tween;\n Tween.prototype = {\n constructor: Tween,\n init: function (elem, options, prop, end, easing, unit) {\n this.elem = elem;\n this.prop = prop;\n this.easing = easing || jQuery.easing._default;\n this.options = options;\n this.start = this.now = this.cur();\n this.end = end;\n this.unit = unit || (jQuery.cssNumber[prop] ? \"\" : \"px\");\n },\n cur: function () {\n var hooks = Tween.propHooks[this.prop];\n return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);\n },\n run: function (percent) {\n var eased,\n hooks = Tween.propHooks[this.prop];\n if (this.options.duration) {\n this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration);\n } else {\n this.pos = eased = percent;\n }\n this.now = (this.end - this.start) * eased + this.start;\n if (this.options.step) {\n this.options.step.call(this.elem, this.now, this);\n }\n if (hooks && hooks.set) {\n hooks.set(this);\n } else {\n Tween.propHooks._default.set(this);\n }\n return this;\n }\n };\n Tween.prototype.init.prototype = Tween.prototype;\n Tween.propHooks = {\n _default: {\n get: function (tween) {\n var result;\n\n // Use a property on the element directly when it is not a DOM element,\n // or when there is no matching style property that exists.\n if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {\n return tween.elem[tween.prop];\n }\n\n // Passing an empty string as a 3rd parameter to .css will automatically\n // attempt a parseFloat and fallback to a string if the parse fails.\n // Simple values such as \"10px\" are parsed to Float;\n // complex values such as \"rotate(1rad)\" are returned as-is.\n result = jQuery.css(tween.elem, tween.prop, \"\");\n\n // Empty strings, null, undefined and \"auto\" are converted to 0.\n return !result || result === \"auto\" ? 0 : result;\n },\n set: function (tween) {\n // Use step hook for back compat.\n // Use cssHook if its there.\n // Use .style if available and use plain properties where available.\n if (jQuery.fx.step[tween.prop]) {\n jQuery.fx.step[tween.prop](tween);\n } else if (tween.elem.nodeType === 1 && (jQuery.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) {\n jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);\n } else {\n tween.elem[tween.prop] = tween.now;\n }\n }\n }\n };\n\n // Support: IE <=9 only\n // Panic based approach to setting things on disconnected nodes\n Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n set: function (tween) {\n if (tween.elem.nodeType && tween.elem.parentNode) {\n tween.elem[tween.prop] = tween.now;\n }\n }\n };\n jQuery.easing = {\n linear: function (p) {\n return p;\n },\n swing: function (p) {\n return 0.5 - Math.cos(p * Math.PI) / 2;\n },\n _default: \"swing\"\n };\n jQuery.fx = Tween.prototype.init;\n\n // Back compat <1.8 extension point\n jQuery.fx.step = {};\n var fxNow,\n inProgress,\n rfxtypes = /^(?:toggle|show|hide)$/,\n rrun = /queueHooks$/;\n function schedule() {\n if (inProgress) {\n if (document.hidden === false && window.requestAnimationFrame) {\n window.requestAnimationFrame(schedule);\n } else {\n window.setTimeout(schedule, jQuery.fx.interval);\n }\n jQuery.fx.tick();\n }\n }\n\n // Animations created synchronously will run synchronously\n function createFxNow() {\n window.setTimeout(function () {\n fxNow = undefined;\n });\n return fxNow = Date.now();\n }\n\n // Generate parameters to create a standard animation\n function genFx(type, includeWidth) {\n var which,\n i = 0,\n attrs = {\n height: type\n };\n\n // If we include width, step value is 1 to do all cssExpand values,\n // otherwise step value is 2 to skip over Left and Right\n includeWidth = includeWidth ? 1 : 0;\n for (; i < 4; i += 2 - includeWidth) {\n which = cssExpand[i];\n attrs[\"margin\" + which] = attrs[\"padding\" + which] = type;\n }\n if (includeWidth) {\n attrs.opacity = attrs.width = type;\n }\n return attrs;\n }\n function createTween(value, prop, animation) {\n var tween,\n collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners[\"*\"]),\n index = 0,\n length = collection.length;\n for (; index < length; index++) {\n if (tween = collection[index].call(animation, prop, value)) {\n // We're done with this property\n return tween;\n }\n }\n }\n function defaultPrefilter(elem, props, opts) {\n var prop,\n value,\n toggle,\n hooks,\n oldfire,\n propTween,\n restoreDisplay,\n display,\n isBox = \"width\" in props || \"height\" in props,\n anim = this,\n orig = {},\n style = elem.style,\n hidden = elem.nodeType && isHiddenWithinTree(elem),\n dataShow = dataPriv.get(elem, \"fxshow\");\n\n // Queue-skipping animations hijack the fx hooks\n if (!opts.queue) {\n hooks = jQuery._queueHooks(elem, \"fx\");\n if (hooks.unqueued == null) {\n hooks.unqueued = 0;\n oldfire = hooks.empty.fire;\n hooks.empty.fire = function () {\n if (!hooks.unqueued) {\n oldfire();\n }\n };\n }\n hooks.unqueued++;\n anim.always(function () {\n // Ensure the complete handler is called before this completes\n anim.always(function () {\n hooks.unqueued--;\n if (!jQuery.queue(elem, \"fx\").length) {\n hooks.empty.fire();\n }\n });\n });\n }\n\n // Detect show/hide animations\n for (prop in props) {\n value = props[prop];\n if (rfxtypes.test(value)) {\n delete props[prop];\n toggle = toggle || value === \"toggle\";\n if (value === (hidden ? \"hide\" : \"show\")) {\n // Pretend to be hidden if this is a \"show\" and\n // there is still data from a stopped show/hide\n if (value === \"show\" && dataShow && dataShow[prop] !== undefined) {\n hidden = true;\n\n // Ignore all other no-op show/hide data\n } else {\n continue;\n }\n }\n orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);\n }\n }\n\n // Bail out if this is a no-op like .hide().hide()\n propTween = !jQuery.isEmptyObject(props);\n if (!propTween && jQuery.isEmptyObject(orig)) {\n return;\n }\n\n // Restrict \"overflow\" and \"display\" styles during box animations\n if (isBox && elem.nodeType === 1) {\n // Support: IE <=9 - 11, Edge 12 - 15\n // Record all 3 overflow attributes because IE does not infer the shorthand\n // from identically-valued overflowX and overflowY and Edge just mirrors\n // the overflowX value there.\n opts.overflow = [style.overflow, style.overflowX, style.overflowY];\n\n // Identify a display type, preferring old show/hide data over the CSS cascade\n restoreDisplay = dataShow && dataShow.display;\n if (restoreDisplay == null) {\n restoreDisplay = dataPriv.get(elem, \"display\");\n }\n display = jQuery.css(elem, \"display\");\n if (display === \"none\") {\n if (restoreDisplay) {\n display = restoreDisplay;\n } else {\n // Get nonempty value(s) by temporarily forcing visibility\n showHide([elem], true);\n restoreDisplay = elem.style.display || restoreDisplay;\n display = jQuery.css(elem, \"display\");\n showHide([elem]);\n }\n }\n\n // Animate inline elements as inline-block\n if (display === \"inline\" || display === \"inline-block\" && restoreDisplay != null) {\n if (jQuery.css(elem, \"float\") === \"none\") {\n // Restore the original display value at the end of pure show/hide animations\n if (!propTween) {\n anim.done(function () {\n style.display = restoreDisplay;\n });\n if (restoreDisplay == null) {\n display = style.display;\n restoreDisplay = display === \"none\" ? \"\" : display;\n }\n }\n style.display = \"inline-block\";\n }\n }\n }\n if (opts.overflow) {\n style.overflow = \"hidden\";\n anim.always(function () {\n style.overflow = opts.overflow[0];\n style.overflowX = opts.overflow[1];\n style.overflowY = opts.overflow[2];\n });\n }\n\n // Implement show/hide animations\n propTween = false;\n for (prop in orig) {\n // General show/hide setup for this element animation\n if (!propTween) {\n if (dataShow) {\n if (\"hidden\" in dataShow) {\n hidden = dataShow.hidden;\n }\n } else {\n dataShow = dataPriv.access(elem, \"fxshow\", {\n display: restoreDisplay\n });\n }\n\n // Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n if (toggle) {\n dataShow.hidden = !hidden;\n }\n\n // Show elements before animating them\n if (hidden) {\n showHide([elem], true);\n }\n\n /* eslint-disable no-loop-func */\n\n anim.done(function () {\n /* eslint-enable no-loop-func */\n\n // The final step of a \"hide\" animation is actually hiding the element\n if (!hidden) {\n showHide([elem]);\n }\n dataPriv.remove(elem, \"fxshow\");\n for (prop in orig) {\n jQuery.style(elem, prop, orig[prop]);\n }\n });\n }\n\n // Per-property setup\n propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim);\n if (!(prop in dataShow)) {\n dataShow[prop] = propTween.start;\n if (hidden) {\n propTween.end = propTween.start;\n propTween.start = 0;\n }\n }\n }\n }\n function propFilter(props, specialEasing) {\n var index, name, easing, value, hooks;\n\n // camelCase, specialEasing and expand cssHook pass\n for (index in props) {\n name = camelCase(index);\n easing = specialEasing[name];\n value = props[index];\n if (Array.isArray(value)) {\n easing = value[1];\n value = props[index] = value[0];\n }\n if (index !== name) {\n props[name] = value;\n delete props[index];\n }\n hooks = jQuery.cssHooks[name];\n if (hooks && \"expand\" in hooks) {\n value = hooks.expand(value);\n delete props[name];\n\n // Not quite $.extend, this won't overwrite existing keys.\n // Reusing 'index' because we have the correct \"name\"\n for (index in value) {\n if (!(index in props)) {\n props[index] = value[index];\n specialEasing[index] = easing;\n }\n }\n } else {\n specialEasing[name] = easing;\n }\n }\n }\n function Animation(elem, properties, options) {\n var result,\n stopped,\n index = 0,\n length = Animation.prefilters.length,\n deferred = jQuery.Deferred().always(function () {\n // Don't match elem in the :animated selector\n delete tick.elem;\n }),\n tick = function () {\n if (stopped) {\n return false;\n }\n var currentTime = fxNow || createFxNow(),\n remaining = Math.max(0, animation.startTime + animation.duration - currentTime),\n // Support: Android 2.3 only\n // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n temp = remaining / animation.duration || 0,\n percent = 1 - temp,\n index = 0,\n length = animation.tweens.length;\n for (; index < length; index++) {\n animation.tweens[index].run(percent);\n }\n deferred.notifyWith(elem, [animation, percent, remaining]);\n\n // If there's more to do, yield\n if (percent < 1 && length) {\n return remaining;\n }\n\n // If this was an empty animation, synthesize a final progress notification\n if (!length) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n }\n\n // Resolve the animation and report its conclusion\n deferred.resolveWith(elem, [animation]);\n return false;\n },\n animation = deferred.promise({\n elem: elem,\n props: jQuery.extend({}, properties),\n opts: jQuery.extend(true, {\n specialEasing: {},\n easing: jQuery.easing._default\n }, options),\n originalProperties: properties,\n originalOptions: options,\n startTime: fxNow || createFxNow(),\n duration: options.duration,\n tweens: [],\n createTween: function (prop, end) {\n var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);\n animation.tweens.push(tween);\n return tween;\n },\n stop: function (gotoEnd) {\n var index = 0,\n // If we are going to the end, we want to run all the tweens\n // otherwise we skip this part\n length = gotoEnd ? animation.tweens.length : 0;\n if (stopped) {\n return this;\n }\n stopped = true;\n for (; index < length; index++) {\n animation.tweens[index].run(1);\n }\n\n // Resolve when we played the last frame; otherwise, reject\n if (gotoEnd) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n deferred.resolveWith(elem, [animation, gotoEnd]);\n } else {\n deferred.rejectWith(elem, [animation, gotoEnd]);\n }\n return this;\n }\n }),\n props = animation.props;\n propFilter(props, animation.opts.specialEasing);\n for (; index < length; index++) {\n result = Animation.prefilters[index].call(animation, elem, props, animation.opts);\n if (result) {\n if (isFunction(result.stop)) {\n jQuery._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result);\n }\n return result;\n }\n }\n jQuery.map(props, createTween, animation);\n if (isFunction(animation.opts.start)) {\n animation.opts.start.call(elem, animation);\n }\n\n // Attach callbacks from options\n animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);\n jQuery.fx.timer(jQuery.extend(tick, {\n elem: elem,\n anim: animation,\n queue: animation.opts.queue\n }));\n return animation;\n }\n jQuery.Animation = jQuery.extend(Animation, {\n tweeners: {\n \"*\": [function (prop, value) {\n var tween = this.createTween(prop, value);\n adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);\n return tween;\n }]\n },\n tweener: function (props, callback) {\n if (isFunction(props)) {\n callback = props;\n props = [\"*\"];\n } else {\n props = props.match(rnothtmlwhite);\n }\n var prop,\n index = 0,\n length = props.length;\n for (; index < length; index++) {\n prop = props[index];\n Animation.tweeners[prop] = Animation.tweeners[prop] || [];\n Animation.tweeners[prop].unshift(callback);\n }\n },\n prefilters: [defaultPrefilter],\n prefilter: function (callback, prepend) {\n if (prepend) {\n Animation.prefilters.unshift(callback);\n } else {\n Animation.prefilters.push(callback);\n }\n }\n });\n jQuery.speed = function (speed, easing, fn) {\n var opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n complete: fn || !fn && easing || isFunction(speed) && speed,\n duration: speed,\n easing: fn && easing || easing && !isFunction(easing) && easing\n };\n\n // Go to the end state if fx are off\n if (jQuery.fx.off) {\n opt.duration = 0;\n } else {\n if (typeof opt.duration !== \"number\") {\n if (opt.duration in jQuery.fx.speeds) {\n opt.duration = jQuery.fx.speeds[opt.duration];\n } else {\n opt.duration = jQuery.fx.speeds._default;\n }\n }\n }\n\n // Normalize opt.queue - true/undefined/null -> \"fx\"\n if (opt.queue == null || opt.queue === true) {\n opt.queue = \"fx\";\n }\n\n // Queueing\n opt.old = opt.complete;\n opt.complete = function () {\n if (isFunction(opt.old)) {\n opt.old.call(this);\n }\n if (opt.queue) {\n jQuery.dequeue(this, opt.queue);\n }\n };\n return opt;\n };\n jQuery.fn.extend({\n fadeTo: function (speed, to, easing, callback) {\n // Show any hidden elements after setting opacity to 0\n return this.filter(isHiddenWithinTree).css(\"opacity\", 0).show()\n\n // Animate to the value specified\n .end().animate({\n opacity: to\n }, speed, easing, callback);\n },\n animate: function (prop, speed, easing, callback) {\n var empty = jQuery.isEmptyObject(prop),\n optall = jQuery.speed(speed, easing, callback),\n doAnimation = function () {\n // Operate on a copy of prop so per-property easing won't be lost\n var anim = Animation(this, jQuery.extend({}, prop), optall);\n\n // Empty animations, or finishing resolves immediately\n if (empty || dataPriv.get(this, \"finish\")) {\n anim.stop(true);\n }\n };\n doAnimation.finish = doAnimation;\n return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);\n },\n stop: function (type, clearQueue, gotoEnd) {\n var stopQueue = function (hooks) {\n var stop = hooks.stop;\n delete hooks.stop;\n stop(gotoEnd);\n };\n if (typeof type !== \"string\") {\n gotoEnd = clearQueue;\n clearQueue = type;\n type = undefined;\n }\n if (clearQueue) {\n this.queue(type || \"fx\", []);\n }\n return this.each(function () {\n var dequeue = true,\n index = type != null && type + \"queueHooks\",\n timers = jQuery.timers,\n data = dataPriv.get(this);\n if (index) {\n if (data[index] && data[index].stop) {\n stopQueue(data[index]);\n }\n } else {\n for (index in data) {\n if (data[index] && data[index].stop && rrun.test(index)) {\n stopQueue(data[index]);\n }\n }\n }\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && (type == null || timers[index].queue === type)) {\n timers[index].anim.stop(gotoEnd);\n dequeue = false;\n timers.splice(index, 1);\n }\n }\n\n // Start the next in the queue if the last step wasn't forced.\n // Timers currently will call their complete callbacks, which\n // will dequeue but only if they were gotoEnd.\n if (dequeue || !gotoEnd) {\n jQuery.dequeue(this, type);\n }\n });\n },\n finish: function (type) {\n if (type !== false) {\n type = type || \"fx\";\n }\n return this.each(function () {\n var index,\n data = dataPriv.get(this),\n queue = data[type + \"queue\"],\n hooks = data[type + \"queueHooks\"],\n timers = jQuery.timers,\n length = queue ? queue.length : 0;\n\n // Enable finishing flag on private data\n data.finish = true;\n\n // Empty the queue first\n jQuery.queue(this, type, []);\n if (hooks && hooks.stop) {\n hooks.stop.call(this, true);\n }\n\n // Look for any active animations, and finish them\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && timers[index].queue === type) {\n timers[index].anim.stop(true);\n timers.splice(index, 1);\n }\n }\n\n // Look for any animations in the old queue and finish them\n for (index = 0; index < length; index++) {\n if (queue[index] && queue[index].finish) {\n queue[index].finish.call(this);\n }\n }\n\n // Turn off finishing flag\n delete data.finish;\n });\n }\n });\n jQuery.each([\"toggle\", \"show\", \"hide\"], function (_i, name) {\n var cssFn = jQuery.fn[name];\n jQuery.fn[name] = function (speed, easing, callback) {\n return speed == null || typeof speed === \"boolean\" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback);\n };\n });\n\n // Generate shortcuts for custom animations\n jQuery.each({\n slideDown: genFx(\"show\"),\n slideUp: genFx(\"hide\"),\n slideToggle: genFx(\"toggle\"),\n fadeIn: {\n opacity: \"show\"\n },\n fadeOut: {\n opacity: \"hide\"\n },\n fadeToggle: {\n opacity: \"toggle\"\n }\n }, function (name, props) {\n jQuery.fn[name] = function (speed, easing, callback) {\n return this.animate(props, speed, easing, callback);\n };\n });\n jQuery.timers = [];\n jQuery.fx.tick = function () {\n var timer,\n i = 0,\n timers = jQuery.timers;\n fxNow = Date.now();\n for (; i < timers.length; i++) {\n timer = timers[i];\n\n // Run the timer and safely remove it when done (allowing for external removal)\n if (!timer() && timers[i] === timer) {\n timers.splice(i--, 1);\n }\n }\n if (!timers.length) {\n jQuery.fx.stop();\n }\n fxNow = undefined;\n };\n jQuery.fx.timer = function (timer) {\n jQuery.timers.push(timer);\n jQuery.fx.start();\n };\n jQuery.fx.interval = 13;\n jQuery.fx.start = function () {\n if (inProgress) {\n return;\n }\n inProgress = true;\n schedule();\n };\n jQuery.fx.stop = function () {\n inProgress = null;\n };\n jQuery.fx.speeds = {\n slow: 600,\n fast: 200,\n // Default speed\n _default: 400\n };\n\n // Based off of the plugin by Clint Helfers, with permission.\n jQuery.fn.delay = function (time, type) {\n time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n type = type || \"fx\";\n return this.queue(type, function (next, hooks) {\n var timeout = window.setTimeout(next, time);\n hooks.stop = function () {\n window.clearTimeout(timeout);\n };\n });\n };\n (function () {\n var input = document.createElement(\"input\"),\n select = document.createElement(\"select\"),\n opt = select.appendChild(document.createElement(\"option\"));\n input.type = \"checkbox\";\n\n // Support: Android <=4.3 only\n // Default value for a checkbox should be \"on\"\n support.checkOn = input.value !== \"\";\n\n // Support: IE <=11 only\n // Must access selectedIndex to make default options select\n support.optSelected = opt.selected;\n\n // Support: IE <=11 only\n // An input loses its value after becoming a radio\n input = document.createElement(\"input\");\n input.value = \"t\";\n input.type = \"radio\";\n support.radioValue = input.value === \"t\";\n })();\n var boolHook,\n attrHandle = jQuery.expr.attrHandle;\n jQuery.fn.extend({\n attr: function (name, value) {\n return access(this, jQuery.attr, name, value, arguments.length > 1);\n },\n removeAttr: function (name) {\n return this.each(function () {\n jQuery.removeAttr(this, name);\n });\n }\n });\n jQuery.extend({\n attr: function (elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType;\n\n // Don't get/set attributes on text, comment and attribute nodes\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n }\n\n // Fallback to prop when attributes are not supported\n if (typeof elem.getAttribute === \"undefined\") {\n return jQuery.prop(elem, name, value);\n }\n\n // Attribute hooks are determined by the lowercase version\n // Grab necessary hook if one is defined\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : undefined);\n }\n if (value !== undefined) {\n if (value === null) {\n jQuery.removeAttr(elem, name);\n return;\n }\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n elem.setAttribute(name, value + \"\");\n return value;\n }\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n ret = jQuery.find.attr(elem, name);\n\n // Non-existent attributes return null, we normalize to undefined\n return ret == null ? undefined : ret;\n },\n attrHooks: {\n type: {\n set: function (elem, value) {\n if (!support.radioValue && value === \"radio\" && nodeName(elem, \"input\")) {\n var val = elem.value;\n elem.setAttribute(\"type\", value);\n if (val) {\n elem.value = val;\n }\n return value;\n }\n }\n }\n },\n removeAttr: function (elem, value) {\n var name,\n i = 0,\n // Attribute names can contain non-HTML whitespace characters\n // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n attrNames = value && value.match(rnothtmlwhite);\n if (attrNames && elem.nodeType === 1) {\n while (name = attrNames[i++]) {\n elem.removeAttribute(name);\n }\n }\n }\n });\n\n // Hooks for boolean attributes\n boolHook = {\n set: function (elem, value, name) {\n if (value === false) {\n // Remove boolean attributes when set to false\n jQuery.removeAttr(elem, name);\n } else {\n elem.setAttribute(name, name);\n }\n return name;\n }\n };\n jQuery.each(jQuery.expr.match.bool.source.match(/\\w+/g), function (_i, name) {\n var getter = attrHandle[name] || jQuery.find.attr;\n attrHandle[name] = function (elem, name, isXML) {\n var ret,\n handle,\n lowercaseName = name.toLowerCase();\n if (!isXML) {\n // Avoid an infinite loop by temporarily removing this function from the getter\n handle = attrHandle[lowercaseName];\n attrHandle[lowercaseName] = ret;\n ret = getter(elem, name, isXML) != null ? lowercaseName : null;\n attrHandle[lowercaseName] = handle;\n }\n return ret;\n };\n });\n var rfocusable = /^(?:input|select|textarea|button)$/i,\n rclickable = /^(?:a|area)$/i;\n jQuery.fn.extend({\n prop: function (name, value) {\n return access(this, jQuery.prop, name, value, arguments.length > 1);\n },\n removeProp: function (name) {\n return this.each(function () {\n delete this[jQuery.propFix[name] || name];\n });\n }\n });\n jQuery.extend({\n prop: function (elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType;\n\n // Don't get/set properties on text, comment and attribute nodes\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n }\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n // Fix name and attach hooks\n name = jQuery.propFix[name] || name;\n hooks = jQuery.propHooks[name];\n }\n if (value !== undefined) {\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n return elem[name] = value;\n }\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n return elem[name];\n },\n propHooks: {\n tabIndex: {\n get: function (elem) {\n // Support: IE <=9 - 11 only\n // elem.tabIndex doesn't always return the\n // correct value when it hasn't been explicitly set\n // Use proper attribute retrieval (trac-12072)\n var tabindex = jQuery.find.attr(elem, \"tabindex\");\n if (tabindex) {\n return parseInt(tabindex, 10);\n }\n if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) {\n return 0;\n }\n return -1;\n }\n }\n },\n propFix: {\n \"for\": \"htmlFor\",\n \"class\": \"className\"\n }\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\n if (!support.optSelected) {\n jQuery.propHooks.selected = {\n get: function (elem) {\n /* eslint no-unused-expressions: \"off\" */\n\n var parent = elem.parentNode;\n if (parent && parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n return null;\n },\n set: function (elem) {\n /* eslint no-unused-expressions: \"off\" */\n\n var parent = elem.parentNode;\n if (parent) {\n parent.selectedIndex;\n if (parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n }\n }\n };\n }\n jQuery.each([\"tabIndex\", \"readOnly\", \"maxLength\", \"cellSpacing\", \"cellPadding\", \"rowSpan\", \"colSpan\", \"useMap\", \"frameBorder\", \"contentEditable\"], function () {\n jQuery.propFix[this.toLowerCase()] = this;\n });\n\n // Strip and collapse whitespace according to HTML spec\n // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n function stripAndCollapse(value) {\n var tokens = value.match(rnothtmlwhite) || [];\n return tokens.join(\" \");\n }\n function getClass(elem) {\n return elem.getAttribute && elem.getAttribute(\"class\") || \"\";\n }\n function classesToArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n if (typeof value === \"string\") {\n return value.match(rnothtmlwhite) || [];\n }\n return [];\n }\n jQuery.fn.extend({\n addClass: function (value) {\n var classNames, cur, curValue, className, i, finalValue;\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).addClass(value.call(this, j, getClass(this)));\n });\n }\n classNames = classesToArray(value);\n if (classNames.length) {\n return this.each(function () {\n curValue = getClass(this);\n cur = this.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n if (cur) {\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i];\n if (cur.indexOf(\" \" + className + \" \") < 0) {\n cur += className + \" \";\n }\n }\n\n // Only assign if different to avoid unneeded rendering.\n finalValue = stripAndCollapse(cur);\n if (curValue !== finalValue) {\n this.setAttribute(\"class\", finalValue);\n }\n }\n });\n }\n return this;\n },\n removeClass: function (value) {\n var classNames, cur, curValue, className, i, finalValue;\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).removeClass(value.call(this, j, getClass(this)));\n });\n }\n if (!arguments.length) {\n return this.attr(\"class\", \"\");\n }\n classNames = classesToArray(value);\n if (classNames.length) {\n return this.each(function () {\n curValue = getClass(this);\n\n // This expression is here for better compressibility (see addClass)\n cur = this.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n if (cur) {\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i];\n\n // Remove *all* instances\n while (cur.indexOf(\" \" + className + \" \") > -1) {\n cur = cur.replace(\" \" + className + \" \", \" \");\n }\n }\n\n // Only assign if different to avoid unneeded rendering.\n finalValue = stripAndCollapse(cur);\n if (curValue !== finalValue) {\n this.setAttribute(\"class\", finalValue);\n }\n }\n });\n }\n return this;\n },\n toggleClass: function (value, stateVal) {\n var classNames,\n className,\n i,\n self,\n type = typeof value,\n isValidValue = type === \"string\" || Array.isArray(value);\n if (isFunction(value)) {\n return this.each(function (i) {\n jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal);\n });\n }\n if (typeof stateVal === \"boolean\" && isValidValue) {\n return stateVal ? this.addClass(value) : this.removeClass(value);\n }\n classNames = classesToArray(value);\n return this.each(function () {\n if (isValidValue) {\n // Toggle individual class names\n self = jQuery(this);\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i];\n\n // Check each className given, space separated list\n if (self.hasClass(className)) {\n self.removeClass(className);\n } else {\n self.addClass(className);\n }\n }\n\n // Toggle whole class name\n } else if (value === undefined || type === \"boolean\") {\n className = getClass(this);\n if (className) {\n // Store className if set\n dataPriv.set(this, \"__className__\", className);\n }\n\n // If the element has a class name or if we're passed `false`,\n // then remove the whole classname (if there was one, the above saved it).\n // Otherwise bring back whatever was previously saved (if anything),\n // falling back to the empty string if nothing was stored.\n if (this.setAttribute) {\n this.setAttribute(\"class\", className || value === false ? \"\" : dataPriv.get(this, \"__className__\") || \"\");\n }\n }\n });\n },\n hasClass: function (selector) {\n var className,\n elem,\n i = 0;\n className = \" \" + selector + \" \";\n while (elem = this[i++]) {\n if (elem.nodeType === 1 && (\" \" + stripAndCollapse(getClass(elem)) + \" \").indexOf(className) > -1) {\n return true;\n }\n }\n return false;\n }\n });\n var rreturn = /\\r/g;\n jQuery.fn.extend({\n val: function (value) {\n var hooks,\n ret,\n valueIsFunction,\n elem = this[0];\n if (!arguments.length) {\n if (elem) {\n hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()];\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, \"value\")) !== undefined) {\n return ret;\n }\n ret = elem.value;\n\n // Handle most common string cases\n if (typeof ret === \"string\") {\n return ret.replace(rreturn, \"\");\n }\n\n // Handle cases where value is null/undef or number\n return ret == null ? \"\" : ret;\n }\n return;\n }\n valueIsFunction = isFunction(value);\n return this.each(function (i) {\n var val;\n if (this.nodeType !== 1) {\n return;\n }\n if (valueIsFunction) {\n val = value.call(this, i, jQuery(this).val());\n } else {\n val = value;\n }\n\n // Treat null/undefined as \"\"; convert numbers to string\n if (val == null) {\n val = \"\";\n } else if (typeof val === \"number\") {\n val += \"\";\n } else if (Array.isArray(val)) {\n val = jQuery.map(val, function (value) {\n return value == null ? \"\" : value + \"\";\n });\n }\n hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()];\n\n // If set returns undefined, fall back to normal setting\n if (!hooks || !(\"set\" in hooks) || hooks.set(this, val, \"value\") === undefined) {\n this.value = val;\n }\n });\n }\n });\n jQuery.extend({\n valHooks: {\n option: {\n get: function (elem) {\n var val = jQuery.find.attr(elem, \"value\");\n return val != null ? val :\n // Support: IE <=10 - 11 only\n // option.text throws exceptions (trac-14686, trac-14858)\n // Strip and collapse whitespace\n // https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n stripAndCollapse(jQuery.text(elem));\n }\n },\n select: {\n get: function (elem) {\n var value,\n option,\n i,\n options = elem.options,\n index = elem.selectedIndex,\n one = elem.type === \"select-one\",\n values = one ? null : [],\n max = one ? index + 1 : options.length;\n if (index < 0) {\n i = max;\n } else {\n i = one ? index : 0;\n }\n\n // Loop through all the selected options\n for (; i < max; i++) {\n option = options[i];\n\n // Support: IE <=9 only\n // IE8-9 doesn't update selected after form reset (trac-2551)\n if ((option.selected || i === index) &&\n // Don't return options that are disabled or in a disabled optgroup\n !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, \"optgroup\"))) {\n // Get the specific value for the option\n value = jQuery(option).val();\n\n // We don't need an array for one selects\n if (one) {\n return value;\n }\n\n // Multi-Selects return an array\n values.push(value);\n }\n }\n return values;\n },\n set: function (elem, value) {\n var optionSet,\n option,\n options = elem.options,\n values = jQuery.makeArray(value),\n i = options.length;\n while (i--) {\n option = options[i];\n\n /* eslint-disable no-cond-assign */\n\n if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) {\n optionSet = true;\n }\n\n /* eslint-enable no-cond-assign */\n }\n\n // Force browsers to behave consistently when non-matching value is set\n if (!optionSet) {\n elem.selectedIndex = -1;\n }\n return values;\n }\n }\n }\n });\n\n // Radios and checkboxes getter/setter\n jQuery.each([\"radio\", \"checkbox\"], function () {\n jQuery.valHooks[this] = {\n set: function (elem, value) {\n if (Array.isArray(value)) {\n return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1;\n }\n }\n };\n if (!support.checkOn) {\n jQuery.valHooks[this].get = function (elem) {\n return elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n };\n }\n });\n\n // Return jQuery for attributes-only inclusion\n var location = window.location;\n var nonce = {\n guid: Date.now()\n };\n var rquery = /\\?/;\n\n // Cross-browser xml parsing\n jQuery.parseXML = function (data) {\n var xml, parserErrorElem;\n if (!data || typeof data !== \"string\") {\n return null;\n }\n\n // Support: IE 9 - 11 only\n // IE throws on parseFromString with invalid input.\n try {\n xml = new window.DOMParser().parseFromString(data, \"text/xml\");\n } catch (e) {}\n parserErrorElem = xml && xml.getElementsByTagName(\"parsererror\")[0];\n if (!xml || parserErrorElem) {\n jQuery.error(\"Invalid XML: \" + (parserErrorElem ? jQuery.map(parserErrorElem.childNodes, function (el) {\n return el.textContent;\n }).join(\"\\n\") : data));\n }\n return xml;\n };\n var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n stopPropagationCallback = function (e) {\n e.stopPropagation();\n };\n jQuery.extend(jQuery.event, {\n trigger: function (event, data, elem, onlyHandlers) {\n var i,\n cur,\n tmp,\n bubbleType,\n ontype,\n handle,\n special,\n lastElement,\n eventPath = [elem || document],\n type = hasOwn.call(event, \"type\") ? event.type : event,\n namespaces = hasOwn.call(event, \"namespace\") ? event.namespace.split(\".\") : [];\n cur = lastElement = tmp = elem = elem || document;\n\n // Don't do events on text and comment nodes\n if (elem.nodeType === 3 || elem.nodeType === 8) {\n return;\n }\n\n // focus/blur morphs to focusin/out; ensure we're not firing them right now\n if (rfocusMorph.test(type + jQuery.event.triggered)) {\n return;\n }\n if (type.indexOf(\".\") > -1) {\n // Namespaced trigger; create a regexp to match event type in handle()\n namespaces = type.split(\".\");\n type = namespaces.shift();\n namespaces.sort();\n }\n ontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\n // Caller can pass in a jQuery.Event object, Object, or just an event type string\n event = event[jQuery.expando] ? event : new jQuery.Event(type, typeof event === \"object\" && event);\n\n // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n event.isTrigger = onlyHandlers ? 2 : 3;\n event.namespace = namespaces.join(\".\");\n event.rnamespace = event.namespace ? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\n // Clean up the event in case it is being reused\n event.result = undefined;\n if (!event.target) {\n event.target = elem;\n }\n\n // Clone any incoming data and prepend the event, creating the handler arg list\n data = data == null ? [event] : jQuery.makeArray(data, [event]);\n\n // Allow special events to draw outside the lines\n special = jQuery.event.special[type] || {};\n if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {\n return;\n }\n\n // Determine event propagation path in advance, per W3C events spec (trac-9951)\n // Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n if (!onlyHandlers && !special.noBubble && !isWindow(elem)) {\n bubbleType = special.delegateType || type;\n if (!rfocusMorph.test(bubbleType + type)) {\n cur = cur.parentNode;\n }\n for (; cur; cur = cur.parentNode) {\n eventPath.push(cur);\n tmp = cur;\n }\n\n // Only add window if we got to document (e.g., not plain obj or detached DOM)\n if (tmp === (elem.ownerDocument || document)) {\n eventPath.push(tmp.defaultView || tmp.parentWindow || window);\n }\n }\n\n // Fire handlers on the event path\n i = 0;\n while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {\n lastElement = cur;\n event.type = i > 1 ? bubbleType : special.bindType || type;\n\n // jQuery handler\n handle = (dataPriv.get(cur, \"events\") || Object.create(null))[event.type] && dataPriv.get(cur, \"handle\");\n if (handle) {\n handle.apply(cur, data);\n }\n\n // Native handler\n handle = ontype && cur[ontype];\n if (handle && handle.apply && acceptData(cur)) {\n event.result = handle.apply(cur, data);\n if (event.result === false) {\n event.preventDefault();\n }\n }\n }\n event.type = type;\n\n // If nobody prevented the default action, do it now\n if (!onlyHandlers && !event.isDefaultPrevented()) {\n if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {\n // Call a native DOM method on the target with the same name as the event.\n // Don't do default actions on window, that's where global variables be (trac-6170)\n if (ontype && isFunction(elem[type]) && !isWindow(elem)) {\n // Don't re-trigger an onFOO event when we call its FOO() method\n tmp = elem[ontype];\n if (tmp) {\n elem[ontype] = null;\n }\n\n // Prevent re-triggering of the same event, since we already bubbled it above\n jQuery.event.triggered = type;\n if (event.isPropagationStopped()) {\n lastElement.addEventListener(type, stopPropagationCallback);\n }\n elem[type]();\n if (event.isPropagationStopped()) {\n lastElement.removeEventListener(type, stopPropagationCallback);\n }\n jQuery.event.triggered = undefined;\n if (tmp) {\n elem[ontype] = tmp;\n }\n }\n }\n }\n return event.result;\n },\n // Piggyback on a donor event to simulate a different one\n // Used only for `focus(in | out)` events\n simulate: function (type, elem, event) {\n var e = jQuery.extend(new jQuery.Event(), event, {\n type: type,\n isSimulated: true\n });\n jQuery.event.trigger(e, null, elem);\n }\n });\n jQuery.fn.extend({\n trigger: function (type, data) {\n return this.each(function () {\n jQuery.event.trigger(type, data, this);\n });\n },\n triggerHandler: function (type, data) {\n var elem = this[0];\n if (elem) {\n return jQuery.event.trigger(type, data, elem, true);\n }\n }\n });\n var rbracket = /\\[\\]$/,\n rCRLF = /\\r?\\n/g,\n rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n rsubmittable = /^(?:input|select|textarea|keygen)/i;\n function buildParams(prefix, obj, traditional, add) {\n var name;\n if (Array.isArray(obj)) {\n // Serialize array item.\n jQuery.each(obj, function (i, v) {\n if (traditional || rbracket.test(prefix)) {\n // Treat each array item as a scalar.\n add(prefix, v);\n } else {\n // Item is non-scalar (array or object), encode its numeric index.\n buildParams(prefix + \"[\" + (typeof v === \"object\" && v != null ? i : \"\") + \"]\", v, traditional, add);\n }\n });\n } else if (!traditional && toType(obj) === \"object\") {\n // Serialize object item.\n for (name in obj) {\n buildParams(prefix + \"[\" + name + \"]\", obj[name], traditional, add);\n }\n } else {\n // Serialize scalar item.\n add(prefix, obj);\n }\n }\n\n // Serialize an array of form elements or a set of\n // key/values into a query string\n jQuery.param = function (a, traditional) {\n var prefix,\n s = [],\n add = function (key, valueOrFunction) {\n // If value is a function, invoke it and use its return value\n var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction;\n s[s.length] = encodeURIComponent(key) + \"=\" + encodeURIComponent(value == null ? \"\" : value);\n };\n if (a == null) {\n return \"\";\n }\n\n // If an array was passed in, assume that it is an array of form elements.\n if (Array.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {\n // Serialize the form elements\n jQuery.each(a, function () {\n add(this.name, this.value);\n });\n } else {\n // If traditional, encode the \"old\" way (the way 1.3.2 or older\n // did it), otherwise encode params recursively.\n for (prefix in a) {\n buildParams(prefix, a[prefix], traditional, add);\n }\n }\n\n // Return the resulting serialization\n return s.join(\"&\");\n };\n jQuery.fn.extend({\n serialize: function () {\n return jQuery.param(this.serializeArray());\n },\n serializeArray: function () {\n return this.map(function () {\n // Can add propHook for \"elements\" to filter or add form elements\n var elements = jQuery.prop(this, \"elements\");\n return elements ? jQuery.makeArray(elements) : this;\n }).filter(function () {\n var type = this.type;\n\n // Use .is( \":disabled\" ) so that fieldset[disabled] works\n return this.name && !jQuery(this).is(\":disabled\") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));\n }).map(function (_i, elem) {\n var val = jQuery(this).val();\n if (val == null) {\n return null;\n }\n if (Array.isArray(val)) {\n return jQuery.map(val, function (val) {\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n });\n }\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n }).get();\n }\n });\n var r20 = /%20/g,\n rhash = /#.*$/,\n rantiCache = /([?&])_=[^&]*/,\n rheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n // trac-7653, trac-8125, trac-8152: local protocol detection\n rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n rnoContent = /^(?:GET|HEAD)$/,\n rprotocol = /^\\/\\//,\n /* Prefilters\n * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n * 2) These are called:\n * - BEFORE asking for a transport\n * - AFTER param serialization (s.data is a string if s.processData is true)\n * 3) key is the dataType\n * 4) the catchall symbol \"*\" can be used\n * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n */\n prefilters = {},\n /* Transports bindings\n * 1) key is the dataType\n * 2) the catchall symbol \"*\" can be used\n * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n */\n transports = {},\n // Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n allTypes = \"*/\".concat(\"*\"),\n // Anchor tag for parsing the document origin\n originAnchor = document.createElement(\"a\");\n originAnchor.href = location.href;\n\n // Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\n function addToPrefiltersOrTransports(structure) {\n // dataTypeExpression is optional and defaults to \"*\"\n return function (dataTypeExpression, func) {\n if (typeof dataTypeExpression !== \"string\") {\n func = dataTypeExpression;\n dataTypeExpression = \"*\";\n }\n var dataType,\n i = 0,\n dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];\n if (isFunction(func)) {\n // For each dataType in the dataTypeExpression\n while (dataType = dataTypes[i++]) {\n // Prepend if requested\n if (dataType[0] === \"+\") {\n dataType = dataType.slice(1) || \"*\";\n (structure[dataType] = structure[dataType] || []).unshift(func);\n\n // Otherwise append\n } else {\n (structure[dataType] = structure[dataType] || []).push(func);\n }\n }\n }\n };\n }\n\n // Base inspection function for prefilters and transports\n function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {\n var inspected = {},\n seekingTransport = structure === transports;\n function inspect(dataType) {\n var selected;\n inspected[dataType] = true;\n jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {\n var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);\n if (typeof dataTypeOrTransport === \"string\" && !seekingTransport && !inspected[dataTypeOrTransport]) {\n options.dataTypes.unshift(dataTypeOrTransport);\n inspect(dataTypeOrTransport);\n return false;\n } else if (seekingTransport) {\n return !(selected = dataTypeOrTransport);\n }\n });\n return selected;\n }\n return 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 trac-9887\n function ajaxExtend(target, src) {\n var key,\n deep,\n flatOptions = jQuery.ajaxSettings.flatOptions || {};\n for (key in src) {\n if (src[key] !== undefined) {\n (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];\n }\n }\n if (deep) {\n jQuery.extend(true, target, deep);\n }\n return 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 */\n function ajaxHandleResponses(s, jqXHR, responses) {\n var ct,\n type,\n finalDataType,\n firstDataType,\n contents = s.contents,\n dataTypes = s.dataTypes;\n\n // Remove auto dataType and get content-type in the process\n while (dataTypes[0] === \"*\") {\n dataTypes.shift();\n if (ct === undefined) {\n ct = s.mimeType || jqXHR.getResponseHeader(\"Content-Type\");\n }\n }\n\n // Check if we're dealing with a known content-type\n if (ct) {\n for (type in contents) {\n if (contents[type] && contents[type].test(ct)) {\n dataTypes.unshift(type);\n break;\n }\n }\n }\n\n // Check to see if we have a response for the expected dataType\n if (dataTypes[0] in responses) {\n finalDataType = dataTypes[0];\n } else {\n // Try convertible dataTypes\n for (type in responses) {\n if (!dataTypes[0] || s.converters[type + \" \" + dataTypes[0]]) {\n finalDataType = type;\n break;\n }\n if (!firstDataType) {\n firstDataType = type;\n }\n }\n\n // Or just use first one\n finalDataType = finalDataType || firstDataType;\n }\n\n // If we found a dataType\n // We add the dataType to the list if needed\n // and return the corresponding response\n if (finalDataType) {\n if (finalDataType !== dataTypes[0]) {\n dataTypes.unshift(finalDataType);\n }\n return responses[finalDataType];\n }\n }\n\n /* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\n function ajaxConvert(s, response, jqXHR, isSuccess) {\n var conv2,\n current,\n conv,\n tmp,\n prev,\n converters = {},\n // Work with a copy of dataTypes in case we need to modify it for conversion\n dataTypes = s.dataTypes.slice();\n\n // Create converters map with lowercased keys\n if (dataTypes[1]) {\n for (conv in s.converters) {\n converters[conv.toLowerCase()] = s.converters[conv];\n }\n }\n current = dataTypes.shift();\n\n // Convert to each sequential dataType\n while (current) {\n if (s.responseFields[current]) {\n jqXHR[s.responseFields[current]] = response;\n }\n\n // Apply the dataFilter if provided\n if (!prev && isSuccess && s.dataFilter) {\n response = s.dataFilter(response, s.dataType);\n }\n prev = current;\n current = dataTypes.shift();\n if (current) {\n // There's only work to do if current dataType is non-auto\n if (current === \"*\") {\n current = prev;\n\n // Convert response if prev dataType is non-auto and differs from current\n } else if (prev !== \"*\" && prev !== current) {\n // Seek a direct converter\n conv = converters[prev + \" \" + current] || converters[\"* \" + current];\n\n // If none found, seek a pair\n if (!conv) {\n for (conv2 in converters) {\n // If conv2 outputs current\n tmp = conv2.split(\" \");\n if (tmp[1] === current) {\n // If prev can be converted to accepted input\n conv = converters[prev + \" \" + tmp[0]] || converters[\"* \" + tmp[0]];\n if (conv) {\n // Condense equivalence converters\n if (conv === true) {\n conv = converters[conv2];\n\n // Otherwise, insert the intermediate dataType\n } else if (converters[conv2] !== true) {\n current = tmp[0];\n dataTypes.unshift(tmp[1]);\n }\n break;\n }\n }\n }\n }\n\n // Apply converter (if not an equivalence)\n if (conv !== true) {\n // Unless errors are allowed to bubble, catch and return them\n if (conv && s.throws) {\n response = conv(response);\n } else {\n try {\n response = conv(response);\n } catch (e) {\n return {\n state: \"parsererror\",\n error: conv ? e : \"No conversion from \" + prev + \" to \" + current\n };\n }\n }\n }\n }\n }\n }\n return {\n state: \"success\",\n data: response\n };\n }\n jQuery.extend({\n // Counter for holding the number of active queries\n active: 0,\n // Last-Modified header cache for next request\n lastModified: {},\n etag: {},\n ajaxSettings: {\n url: location.href,\n type: \"GET\",\n isLocal: rlocalProtocol.test(location.protocol),\n global: true,\n processData: true,\n async: true,\n contentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n /*\n timeout: 0,\n data: null,\n dataType: null,\n username: null,\n password: null,\n cache: null,\n throws: false,\n traditional: false,\n headers: {},\n */\n\n accepts: {\n \"*\": allTypes,\n text: \"text/plain\",\n html: \"text/html\",\n xml: \"application/xml, text/xml\",\n json: \"application/json, text/javascript\"\n },\n contents: {\n xml: /\\bxml\\b/,\n html: /\\bhtml/,\n json: /\\bjson\\b/\n },\n responseFields: {\n xml: \"responseXML\",\n text: \"responseText\",\n json: \"responseJSON\"\n },\n // Data converters\n // Keys separate source (or catchall \"*\") and destination types with a single space\n converters: {\n // Convert anything to text\n \"* text\": String,\n // Text to html (true = no transformation)\n \"text html\": true,\n // Evaluate text as a json expression\n \"text json\": JSON.parse,\n // Parse text as xml\n \"text xml\": jQuery.parseXML\n },\n // For options that shouldn't be deep extended:\n // you can add your own custom options here if\n // and when you create one that shouldn't be\n // deep extended (see ajaxExtend)\n flatOptions: {\n url: true,\n context: true\n }\n },\n // Creates a full fledged settings object into target\n // with both ajaxSettings and settings fields.\n // If target is omitted, writes into ajaxSettings.\n ajaxSetup: function (target, settings) {\n return settings ?\n // Building a settings object\n ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) :\n // Extending ajaxSettings\n ajaxExtend(jQuery.ajaxSettings, target);\n },\n ajaxPrefilter: addToPrefiltersOrTransports(prefilters),\n ajaxTransport: addToPrefiltersOrTransports(transports),\n // Main method\n ajax: function (url, options) {\n // If url is an object, simulate pre-1.5 signature\n if (typeof url === \"object\") {\n options = url;\n url = undefined;\n }\n\n // Force options to be an object\n options = options || {};\n var transport,\n // URL without anti-cache param\n cacheURL,\n // Response headers\n responseHeadersString,\n responseHeaders,\n // timeout handle\n timeoutTimer,\n // Url cleanup var\n urlAnchor,\n // Request state (becomes false upon send and true upon completion)\n completed,\n // To know if global events are to be dispatched\n fireGlobals,\n // Loop variable\n i,\n // uncached part of the url\n uncached,\n // Create the final options object\n s = jQuery.ajaxSetup({}, options),\n // Callbacks context\n callbackContext = s.context || s,\n // Context for global events is callbackContext if it is a DOM node or jQuery collection\n globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,\n // Deferreds\n deferred = jQuery.Deferred(),\n completeDeferred = jQuery.Callbacks(\"once memory\"),\n // Status-dependent callbacks\n statusCode = s.statusCode || {},\n // Headers (they are sent all at once)\n requestHeaders = {},\n requestHeadersNames = {},\n // Default abort message\n strAbort = \"canceled\",\n // Fake xhr\n jqXHR = {\n readyState: 0,\n // Builds headers hashtable if needed\n getResponseHeader: function (key) {\n var match;\n if (completed) {\n if (!responseHeaders) {\n responseHeaders = {};\n while (match = rheaders.exec(responseHeadersString)) {\n responseHeaders[match[1].toLowerCase() + \" \"] = (responseHeaders[match[1].toLowerCase() + \" \"] || []).concat(match[2]);\n }\n }\n match = responseHeaders[key.toLowerCase() + \" \"];\n }\n return match == null ? null : match.join(\", \");\n },\n // Raw string\n getAllResponseHeaders: function () {\n return completed ? responseHeadersString : null;\n },\n // Caches the header\n setRequestHeader: function (name, value) {\n if (completed == null) {\n name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name;\n requestHeaders[name] = value;\n }\n return this;\n },\n // Overrides response content-type header\n overrideMimeType: function (type) {\n if (completed == null) {\n s.mimeType = type;\n }\n return this;\n },\n // Status-dependent callbacks\n statusCode: function (map) {\n var code;\n if (map) {\n if (completed) {\n // Execute the appropriate callbacks\n jqXHR.always(map[jqXHR.status]);\n } else {\n // Lazy-add the new callbacks in a way that preserves old ones\n for (code in map) {\n statusCode[code] = [statusCode[code], map[code]];\n }\n }\n }\n return this;\n },\n // Cancel the request\n abort: function (statusText) {\n var finalText = statusText || strAbort;\n if (transport) {\n transport.abort(finalText);\n }\n done(0, finalText);\n return this;\n }\n };\n\n // Attach deferreds\n deferred.promise(jqXHR);\n\n // Add protocol if not provided (prefilters might expect it)\n // Handle falsy url in the settings object (trac-10093: consistency with old signature)\n // We also use the url parameter if available\n s.url = ((url || s.url || location.href) + \"\").replace(rprotocol, location.protocol + \"//\");\n\n // Alias method option to type as per ticket trac-12004\n s.type = options.method || options.type || s.method || s.type;\n\n // Extract dataTypes list\n s.dataTypes = (s.dataType || \"*\").toLowerCase().match(rnothtmlwhite) || [\"\"];\n\n // A cross-domain request is in order when the origin doesn't match the current origin.\n if (s.crossDomain == null) {\n urlAnchor = document.createElement(\"a\");\n\n // Support: IE <=8 - 11, Edge 12 - 15\n // IE throws exception on accessing the href property if url is malformed,\n // e.g. http://example.com:80x/\n try {\n urlAnchor.href = s.url;\n\n // Support: IE <=8 - 11 only\n // Anchor's host property isn't correctly set when s.url is relative\n urlAnchor.href = urlAnchor.href;\n s.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !== urlAnchor.protocol + \"//\" + urlAnchor.host;\n } catch (e) {\n // If there is an error parsing the URL, assume it is crossDomain,\n // it can be rejected by the transport if it is invalid\n s.crossDomain = true;\n }\n }\n\n // Convert data if not already a string\n if (s.data && s.processData && typeof s.data !== \"string\") {\n s.data = jQuery.param(s.data, s.traditional);\n }\n\n // Apply prefilters\n inspectPrefiltersOrTransports(prefilters, s, options, jqXHR);\n\n // If request was aborted inside a prefilter, stop there\n if (completed) {\n return jqXHR;\n }\n\n // We can fire global events as of now if asked to\n // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n fireGlobals = jQuery.event && s.global;\n\n // Watch for a new set of requests\n if (fireGlobals && jQuery.active++ === 0) {\n jQuery.event.trigger(\"ajaxStart\");\n }\n\n // Uppercase the type\n s.type = s.type.toUpperCase();\n\n // Determine if request has content\n s.hasContent = !rnoContent.test(s.type);\n\n // Save the URL in case we're toying with the If-Modified-Since\n // and/or If-None-Match header later on\n // Remove hash to simplify url manipulation\n cacheURL = s.url.replace(rhash, \"\");\n\n // More options handling for requests with no content\n if (!s.hasContent) {\n // Remember the hash so we can put it back\n uncached = s.url.slice(cacheURL.length);\n\n // If data is available and should be processed, append data to url\n if (s.data && (s.processData || typeof s.data === \"string\")) {\n cacheURL += (rquery.test(cacheURL) ? \"&\" : \"?\") + s.data;\n\n // trac-9682: remove data so that it's not used in an eventual retry\n delete s.data;\n }\n\n // Add or update anti-cache param if needed\n if (s.cache === false) {\n cacheURL = cacheURL.replace(rantiCache, \"$1\");\n uncached = (rquery.test(cacheURL) ? \"&\" : \"?\") + \"_=\" + nonce.guid++ + uncached;\n }\n\n // Put hash and anti-cache on the URL that will be requested (gh-1732)\n s.url = cacheURL + uncached;\n\n // Change '%20' to '+' if this is encoded form body content (gh-2658)\n } else if (s.data && s.processData && (s.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") === 0) {\n s.data = s.data.replace(r20, \"+\");\n }\n\n // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n if (s.ifModified) {\n if (jQuery.lastModified[cacheURL]) {\n jqXHR.setRequestHeader(\"If-Modified-Since\", jQuery.lastModified[cacheURL]);\n }\n if (jQuery.etag[cacheURL]) {\n jqXHR.setRequestHeader(\"If-None-Match\", jQuery.etag[cacheURL]);\n }\n }\n\n // Set the correct header, if data is being sent\n if (s.data && s.hasContent && s.contentType !== false || options.contentType) {\n jqXHR.setRequestHeader(\"Content-Type\", s.contentType);\n }\n\n // Set the Accepts header for the server, depending on the dataType\n jqXHR.setRequestHeader(\"Accept\", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\") : s.accepts[\"*\"]);\n\n // Check for headers option\n for (i in s.headers) {\n jqXHR.setRequestHeader(i, s.headers[i]);\n }\n\n // Allow custom headers/mimetypes and early abort\n if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed)) {\n // Abort if not done already and return\n return jqXHR.abort();\n }\n\n // Aborting is no longer a cancellation\n strAbort = \"abort\";\n\n // Install callbacks on deferreds\n completeDeferred.add(s.complete);\n jqXHR.done(s.success);\n jqXHR.fail(s.error);\n\n // Get transport\n transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR);\n\n // If no transport, we auto-abort\n if (!transport) {\n done(-1, \"No Transport\");\n } else {\n jqXHR.readyState = 1;\n\n // Send global event\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxSend\", [jqXHR, s]);\n }\n\n // If request was aborted inside ajaxSend, stop there\n if (completed) {\n return jqXHR;\n }\n\n // Timeout\n if (s.async && s.timeout > 0) {\n timeoutTimer = window.setTimeout(function () {\n jqXHR.abort(\"timeout\");\n }, s.timeout);\n }\n try {\n completed = false;\n transport.send(requestHeaders, done);\n } catch (e) {\n // Rethrow post-completion exceptions\n if (completed) {\n throw e;\n }\n\n // Propagate others as results\n done(-1, e);\n }\n }\n\n // Callback for when everything is done\n function done(status, nativeStatusText, responses, headers) {\n var isSuccess,\n success,\n error,\n response,\n modified,\n statusText = nativeStatusText;\n\n // Ignore repeat invocations\n if (completed) {\n return;\n }\n completed = true;\n\n // Clear timeout if it exists\n if (timeoutTimer) {\n window.clearTimeout(timeoutTimer);\n }\n\n // Dereference transport for early garbage collection\n // (no matter how long the jqXHR object will be used)\n transport = undefined;\n\n // Cache response headers\n responseHeadersString = headers || \"\";\n\n // Set readyState\n jqXHR.readyState = status > 0 ? 4 : 0;\n\n // Determine if successful\n isSuccess = status >= 200 && status < 300 || status === 304;\n\n // Get response data\n if (responses) {\n response = ajaxHandleResponses(s, jqXHR, responses);\n }\n\n // Use a noop converter for missing script but not if jsonp\n if (!isSuccess && jQuery.inArray(\"script\", s.dataTypes) > -1 && jQuery.inArray(\"json\", s.dataTypes) < 0) {\n s.converters[\"text script\"] = function () {};\n }\n\n // Convert no matter what (that way responseXXX fields are always set)\n response = ajaxConvert(s, response, jqXHR, isSuccess);\n\n // If successful, handle type chaining\n if (isSuccess) {\n // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n if (s.ifModified) {\n modified = jqXHR.getResponseHeader(\"Last-Modified\");\n if (modified) {\n jQuery.lastModified[cacheURL] = modified;\n }\n modified = jqXHR.getResponseHeader(\"etag\");\n if (modified) {\n jQuery.etag[cacheURL] = modified;\n }\n }\n\n // if no content\n if (status === 204 || s.type === \"HEAD\") {\n statusText = \"nocontent\";\n\n // if not modified\n } else if (status === 304) {\n statusText = \"notmodified\";\n\n // If we have data, let's convert it\n } else {\n statusText = response.state;\n success = response.data;\n error = response.error;\n isSuccess = !error;\n }\n } else {\n // Extract error from statusText and normalize for non-aborts\n error = statusText;\n if (status || !statusText) {\n statusText = \"error\";\n if (status < 0) {\n status = 0;\n }\n }\n }\n\n // Set data for the fake xhr object\n jqXHR.status = status;\n jqXHR.statusText = (nativeStatusText || statusText) + \"\";\n\n // Success/Error\n if (isSuccess) {\n deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);\n } else {\n deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);\n }\n\n // Status-dependent callbacks\n jqXHR.statusCode(statusCode);\n statusCode = undefined;\n if (fireGlobals) {\n globalEventContext.trigger(isSuccess ? \"ajaxSuccess\" : \"ajaxError\", [jqXHR, s, isSuccess ? success : error]);\n }\n\n // Complete\n completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxComplete\", [jqXHR, s]);\n\n // Handle the global AJAX counter\n if (! --jQuery.active) {\n jQuery.event.trigger(\"ajaxStop\");\n }\n }\n }\n return jqXHR;\n },\n getJSON: function (url, data, callback) {\n return jQuery.get(url, data, callback, \"json\");\n },\n getScript: function (url, callback) {\n return jQuery.get(url, undefined, callback, \"script\");\n }\n });\n jQuery.each([\"get\", \"post\"], function (_i, method) {\n jQuery[method] = function (url, data, callback, type) {\n // Shift arguments if data argument was omitted\n if (isFunction(data)) {\n type = type || callback;\n callback = data;\n data = undefined;\n }\n\n // The url can be an options object (which then must have .url)\n return jQuery.ajax(jQuery.extend({\n url: url,\n type: method,\n dataType: type,\n data: data,\n success: callback\n }, jQuery.isPlainObject(url) && url));\n };\n });\n jQuery.ajaxPrefilter(function (s) {\n var i;\n for (i in s.headers) {\n if (i.toLowerCase() === \"content-type\") {\n s.contentType = s.headers[i] || \"\";\n }\n }\n });\n jQuery._evalUrl = function (url, options, doc) {\n return jQuery.ajax({\n url: url,\n // Make this explicit, since user can override this through ajaxSetup (trac-11264)\n type: \"GET\",\n dataType: \"script\",\n cache: true,\n async: false,\n global: false,\n // Only evaluate the response if it is successful (gh-4126)\n // dataFilter is not invoked for failure responses, so using it instead\n // of the default converter is kludgy but it works.\n converters: {\n \"text script\": function () {}\n },\n dataFilter: function (response) {\n jQuery.globalEval(response, options, doc);\n }\n });\n };\n jQuery.fn.extend({\n wrapAll: function (html) {\n var wrap;\n if (this[0]) {\n if (isFunction(html)) {\n html = html.call(this[0]);\n }\n\n // The elements to wrap the target around\n wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true);\n if (this[0].parentNode) {\n wrap.insertBefore(this[0]);\n }\n wrap.map(function () {\n var elem = this;\n while (elem.firstElementChild) {\n elem = elem.firstElementChild;\n }\n return elem;\n }).append(this);\n }\n return this;\n },\n wrapInner: function (html) {\n if (isFunction(html)) {\n return this.each(function (i) {\n jQuery(this).wrapInner(html.call(this, i));\n });\n }\n return this.each(function () {\n var self = jQuery(this),\n contents = self.contents();\n if (contents.length) {\n contents.wrapAll(html);\n } else {\n self.append(html);\n }\n });\n },\n wrap: function (html) {\n var htmlIsFunction = isFunction(html);\n return this.each(function (i) {\n jQuery(this).wrapAll(htmlIsFunction ? html.call(this, i) : html);\n });\n },\n unwrap: function (selector) {\n this.parent(selector).not(\"body\").each(function () {\n jQuery(this).replaceWith(this.childNodes);\n });\n return this;\n }\n });\n jQuery.expr.pseudos.hidden = function (elem) {\n return !jQuery.expr.pseudos.visible(elem);\n };\n jQuery.expr.pseudos.visible = function (elem) {\n return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\n };\n jQuery.ajaxSettings.xhr = function () {\n try {\n return new window.XMLHttpRequest();\n } catch (e) {}\n };\n var xhrSuccessStatus = {\n // File protocol always yields status code 0, assume 200\n 0: 200,\n // Support: IE <=9 only\n // trac-1450: sometimes IE returns 1223 when it should be 204\n 1223: 204\n },\n xhrSupported = jQuery.ajaxSettings.xhr();\n support.cors = !!xhrSupported && \"withCredentials\" in xhrSupported;\n support.ajax = xhrSupported = !!xhrSupported;\n jQuery.ajaxTransport(function (options) {\n var callback, errorCallback;\n\n // Cross domain only allowed if supported through XMLHttpRequest\n if (support.cors || xhrSupported && !options.crossDomain) {\n return {\n send: function (headers, complete) {\n var i,\n xhr = options.xhr();\n xhr.open(options.type, options.url, options.async, options.username, options.password);\n\n // Apply custom fields if provided\n if (options.xhrFields) {\n for (i in options.xhrFields) {\n xhr[i] = options.xhrFields[i];\n }\n }\n\n // Override mime type if needed\n if (options.mimeType && xhr.overrideMimeType) {\n xhr.overrideMimeType(options.mimeType);\n }\n\n // X-Requested-With header\n // For cross-domain requests, seeing as conditions for a preflight are\n // akin to a jigsaw puzzle, we simply never set it to be sure.\n // (it can always be set on a per-request basis or even using ajaxSetup)\n // For same-domain requests, won't change header if already provided.\n if (!options.crossDomain && !headers[\"X-Requested-With\"]) {\n headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n }\n\n // Set headers\n for (i in headers) {\n xhr.setRequestHeader(i, headers[i]);\n }\n\n // Callback\n callback = function (type) {\n return function () {\n if (callback) {\n callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null;\n if (type === \"abort\") {\n xhr.abort();\n } else if (type === \"error\") {\n // Support: IE <=9 only\n // On a manual native abort, IE9 throws\n // errors on any property access that is not readyState\n if (typeof xhr.status !== \"number\") {\n complete(0, \"error\");\n } else {\n complete(\n // File: protocol always yields status 0; see trac-8605, trac-14207\n xhr.status, xhr.statusText);\n }\n } else {\n complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText,\n // Support: IE <=9 only\n // IE9 has no XHR2 but throws on binary (trac-11426)\n // For XHR2 non-text, let the caller handle it (gh-2498)\n (xhr.responseType || \"text\") !== \"text\" || typeof xhr.responseText !== \"string\" ? {\n binary: xhr.response\n } : {\n text: xhr.responseText\n }, xhr.getAllResponseHeaders());\n }\n }\n };\n };\n\n // Listen to events\n xhr.onload = callback();\n errorCallback = xhr.onerror = xhr.ontimeout = callback(\"error\");\n\n // Support: IE 9 only\n // Use onreadystatechange to replace onabort\n // to handle uncaught aborts\n if (xhr.onabort !== undefined) {\n xhr.onabort = errorCallback;\n } else {\n xhr.onreadystatechange = function () {\n // Check readyState before timeout as it changes\n if (xhr.readyState === 4) {\n // Allow onerror to be called first,\n // but that will not handle a native abort\n // Also, save errorCallback to a variable\n // as xhr.onerror cannot be accessed\n window.setTimeout(function () {\n if (callback) {\n errorCallback();\n }\n });\n }\n };\n }\n\n // Create the abort callback\n callback = callback(\"abort\");\n try {\n // Do send the request (this may raise an exception)\n xhr.send(options.hasContent && options.data || null);\n } catch (e) {\n // trac-14683: Only rethrow if this hasn't been notified as an error yet\n if (callback) {\n throw e;\n }\n }\n },\n abort: function () {\n if (callback) {\n callback();\n }\n }\n };\n }\n });\n\n // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\n jQuery.ajaxPrefilter(function (s) {\n if (s.crossDomain) {\n s.contents.script = false;\n }\n });\n\n // Install script dataType\n jQuery.ajaxSetup({\n accepts: {\n script: \"text/javascript, application/javascript, \" + \"application/ecmascript, application/x-ecmascript\"\n },\n contents: {\n script: /\\b(?:java|ecma)script\\b/\n },\n converters: {\n \"text script\": function (text) {\n jQuery.globalEval(text);\n return text;\n }\n }\n });\n\n // Handle cache's special case and crossDomain\n jQuery.ajaxPrefilter(\"script\", function (s) {\n if (s.cache === undefined) {\n s.cache = false;\n }\n if (s.crossDomain) {\n s.type = \"GET\";\n }\n });\n\n // Bind script tag hack transport\n jQuery.ajaxTransport(\"script\", function (s) {\n // This transport only deals with cross domain or forced-by-attrs requests\n if (s.crossDomain || s.scriptAttrs) {\n var script, callback;\n return {\n send: function (_, complete) {\n script = jQuery(\"