{"version":3,"sources":["node_modules/browser-pack/_prelude.js","js/join.js","js/jquery.cookie.js","js/jquery.js"],"names":["ls","a","console","log","util","inspect","depth","exports","setup","opts","join","$","require","qs","window","location","href","slice","indexOf","split","i","length","q","decodeURIComponent","vars","session","cookie","token","userapi","template","fill","div","empty","append","find","clone","page","click","pagename","removeClass","addClass","val","name","email","pass","text","dumid","bind","callback","cmd","dat","error","cont","n","expires","path","S","command","submit","avatar","attr","post","b","c","dumid_confirm","confirm","process_avatar","preview","file","files","reader","FileReader","onloadend","img","Image","src","result","onload","canvas","document","createElement","ctx","getContext","width","height","drawImage","toDataURL","readAsDataURL","off","on","e","which","this","blur","load","factory","define","amd","jQuery","encode","s","config","raw","encodeURIComponent","decode","stringifyCookieValue","value","json","JSON","stringify","String","parseCookieValue","replace","pluses","parse","read","converter","isFunction","key","options","undefined","extend","defaults","days","t","Date","setTime","toUTCString","domain","secure","cookies","l","parts","shift","removeCookie","global","module","w","Error","noGlobal","isArraylike","obj","type","isWindow","nodeType","winnow","elements","qualifier","not","grep","elem","call","risSimple","test","filter","inArray","sibling","cur","dir","createOptions","object","optionsCache","each","match","rnotwhite","_","flag","detach","addEventListener","removeEventListener","completed","detachEvent","event","readyState","ready","dataAttr","data","rmultiDash","toLowerCase","getAttribute","rbrace","parseJSON","isEmptyDataObject","isEmptyObject","internalData","pvt","acceptData","ret","thisCache","internalKey","expando","isNode","cache","id","deletedIds","pop","guid","toJSON","noop","camelCase","internalRemoveData","isArray","concat","map","cleanData","support","deleteExpando","returnTrue","returnFalse","safeActiveElement","activeElement","err","createSafeFragment","list","nodeNames","safeFrag","createDocumentFragment","getAll","context","tag","elems","found","getElementsByTagName","strundefined","querySelectorAll","childNodes","nodeName","push","merge","fixDefaultChecked","rcheckableType","defaultChecked","checked","manipulationTarget","content","firstChild","appendChild","ownerDocument","disableScript","restoreScript","rscriptTypeMasked","exec","removeAttribute","setGlobalEval","refElements","_data","cloneCopyEvent","dest","hasData","oldData","curData","events","handle","add","fixCloneNodeIssues","noCloneEvent","removeEvent","parentNode","outerHTML","html5Clone","innerHTML","trim","defaultSelected","selected","defaultValue","actualDisplay","doc","style","appendTo","body","display","getDefaultComputedStyle","css","defaultDisplay","elemdisplay","iframe","documentElement","contentWindow","contentDocument","write","close","addGetHookIf","conditionFn","hookFn","get","condition","apply","arguments","vendorPropName","capName","charAt","toUpperCase","origName","cssPrefixes","showHide","show","hidden","values","index","isHidden","setPositiveNumber","subtract","matches","rnumsplit","Math","max","augmentWidthOrHeight","extra","isBorderBox","styles","cssExpand","getWidthOrHeight","valueIsBorderBox","offsetWidth","offsetHeight","getStyles","boxSizing","curCSS","rnumnonpx","boxSizingReliable","parseFloat","Tween","prop","end","easing","prototype","init","createFxNow","setTimeout","fxNow","now","genFx","includeWidth","attrs","opacity","createTween","animation","tween","collection","tweeners","defaultPrefilter","props","toggle","hooks","oldfire","anim","orig","dataShow","queue","_queueHooks","unqueued","fire","always","overflow","overflowX","overflowY","inlineBlockNeedsLayout","zoom","shrinkWrapBlocks","rfxtypes","done","hide","_removeData","start","propFilter","specialEasing","cssHooks","expand","Animation","properties","stopped","animationPrefilters","deferred","Deferred","tick","currentTime","remaining","startTime","duration","temp","percent","tweens","run","notifyWith","resolveWith","promise","originalProperties","originalOptions","stop","gotoEnd","rejectWith","fx","timer","progress","complete","fail","addToPrefiltersOrTransports","structure","dataTypeExpression","func","dataType","dataTypes","unshift","inspectPrefiltersOrTransports","jqXHR","inspected","prefilterOrFactory","dataTypeOrTransport","seekingTransport","transports","ajaxExtend","target","deep","flatOptions","ajaxSettings","ajaxHandleResponses","responses","firstDataType","ct","finalDataType","contents","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","tmp","prev","responseFields","dataFilter","state","buildParams","prefix","traditional","v","rbracket","createStandardXHR","XMLHttpRequest","createActiveXHR","ActiveXObject","getWindow","defaultView","parentWindow","class2type","toString","hasOwn","hasOwnProperty","selector","fn","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","jquery","constructor","toArray","num","pushStack","prevObject","args","first","eq","last","len","j","sort","splice","copyIsArray","copy","isPlainObject","random","isReady","msg","Array","isNumeric","ownLast","globalEval","execScript","string","makeArray","arr","results","Object","second","invert","callbackExpect","arg","proxy","Sizzle","seed","m","groups","old","nid","newContext","newSelector","preferredDoc","setDocument","documentIsHTML","rquickExpr","getElementById","contains","getElementsByClassName","qsa","rbuggyQSA","tokenize","rescape","setAttribute","toSelector","rsibling","testContext","qsaError","select","createCache","keys","Expr","cacheLength","markFunction","assert","removeChild","addHandle","handler","attrHandle","siblingCheck","diff","sourceIndex","MAX_NEGATIVE","nextSibling","createPositionalPseudo","argument","matchIndexes","setFilters","tokens","addCombinator","matcher","combinator","base","checkNonElements","doneName","xml","oldCache","outerCache","newCache","dirruns","elementMatcher","matchers","multipleContexts","contexts","condense","unmatched","newUnmatched","mapped","setMatcher","preFilter","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","relative","implicitRelative","matchContext","matchAnyContext","outermostContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","uniqueSort","getText","isXML","compile","sortInput","hasDuplicate","docElem","rbuggyMatches","classCache","tokenCache","compilerCache","sortOrder","push_native","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","runescape","funescape","escaped","escapedWhitespace","high","fromCharCode","els","node","hasCompare","parent","top","attachEvent","className","createComment","getById","getElementsByName","attrId","getAttributeNode","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","specified","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","createPseudo",">"," ","+","~","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","nodeIndex","useCache","lastChild","pseudo","idx","matched","has","innerText","lang","elemLang","hash","root","focus","hasFocus","tabIndex","enabled","disabled","selectedIndex","header","button","even","odd","lt","gt","radio","checkbox","password","image","reset","filters","parseOnly","soFar","preFilters","cached","compiled","div1","unique","isXMLDoc","rneedsContext","rsingleTag","self","is","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","children","next","until","r","targets","closest","pos","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","reverse","Callbacks","firing","memory","fired","firingLength","firingIndex","firingStart","stack","once","stopOnFalse","disable","remove","lock","locked","fireWith","tuples","then","fns","newDefer","tuple","returned","resolve","reject","notify","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","updateFunc","readyList","readyWait","holdReady","hold","wait","triggerHandler","frameElement","doScroll","doScrollCheck","container","cssText","noData","applet ","embed ","object ","removeData","dequeue","startLength","setter","clearQueue","count","defer","pnum","source","el","access","chainable","emptyGet","bulk","fragment","leadingWhitespace","tbody","htmlSerialize","cloneNode","appendChecked","noCloneChecked","checkClone","eventName","change","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","types","handleObjIn","special","eventHandle","handleObj","handlers","namespaces","origType","elemData","triggered","dispatch","delegateType","bindType","namespace","delegateCount","mappedTypes","origCount","teardown","trigger","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","namespace_re","noBubble","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","srcElement","metaKey","original","charCode","keyCode","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","related","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","attaches","one","origFn","rinlinejQuery","rnoshimcache","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","rchecked","rscriptType","rcleanScript","wrapMap","option","legend","area","param","thead","tr","col","td","safeFragment","fragmentDiv","optgroup","tfoot","colgroup","caption","th","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","buildFragment","scripts","selection","wrap","safe","nodes","createTextNode","domManip","prepend","insertBefore","before","after","keepData","html","replaceWith","replaceChild","hasScripts","set","iNoClone","_evalUrl","prependTo","insertAfter","replaceAll","insert","shrinkWrapBlocksVal","rmargin","rposition","getComputedStyle","computed","minWidth","maxWidth","getPropertyValue","currentStyle","left","rs","rsLeft","runtimeStyle","pixelLeft","computeStyleTests","pixelPositionVal","boxSizingReliableVal","reliableMarginRightVal","marginRight","reliableHiddenOffsetsVal","cssFloat","backgroundClip","clearCloneStyle","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","pixelPosition","reliableMarginRight","swap","ralpha","ropacity","rdisplayswap","rrelNum","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssNumber","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","cssProps","float","$1","margin","padding","border","suffix","expanded","unit","propHooks","eased","step","linear","p","swing","cos","PI","timerId","rfxnum","rrun","*","scale","maxIterations","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","clearTimeout","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","valHooks","optionSet","scrollHeight","nodeHook","boolHook","ruseDefault","getSetInput","removeAttr","nType","attrHooks","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rfocusable","rclickable","removeProp","for","class","notxml","tabindex","parseInt","rclass","classes","clazz","finalValue","proceed","toggleClass","stateVal","classNames","hasClass","hover","fnOver","fnOut","unbind","delegate","undelegate","nonce","rquery","rvalidtokens","requireNonComma","str","comma","open","Function","parseXML","DOMParser","parseFromString","async","loadXML","ajaxLocParts","ajaxLocation","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","prefilters","allTypes","active","lastModified","etag","url","isLocal","processData","contentType","accepts","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","status","nativeStatusText","headers","success","modified","statusText","timeoutTimer","transport","responseHeadersString","ifModified","cacheURL","callbackContext","statusCode","fireGlobals","globalEventContext","completeDeferred","responseHeaders","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","code","abort","finalText","method","crossDomain","hasContent","beforeSend","send","getJSON","getScript","throws","wrapAll","wrapInner","unwrap","visible","r20","rCRLF","rsubmitterTypes","rsubmittable","serialize","serializeArray","xhr","xhrId","xhrCallbacks","xhrSupported","cors","username","xhrFields","isAbort","onreadystatechange","responseText","script","text script","head","scriptCharset","charset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","box","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","size","andSelf","_jQuery","_$","noConflict"],"mappings":"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","file":"bundle.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o\");\n\t\t\n\tjoin.fill=function(){\n\t\t$(opts.div).empty().append( join.template.find(\".wetjoin_main\").clone() );\n\n//\t\tconsole.log(join.qs);\n\t\tif(join.qs.token)\n\t\t{\n\t\t\tjoin.vars.token=join.qs.token;\n\t\t\tjoin.page(\"token\");\n\t\t\t$(\".wetjoin_main .wetjoin_submit\").click();\n\t\t}\n\t\telse\n//\t\tif(join.qs.dumid)\n\t\t{\n\t\t\tjoin.page(\"session\");\n\t\t\t$(\".wetjoin_main .wetjoin_submit\").click();\n//\t\t\tjoin.page(\"dumid\");\n\t\t}\n//\t\telse\n//\t\t{\n//\t\t\tjoin.page(\"login\");\n//\t\t}\n\n\t};\n\n\tjoin.page=function(pagename){\n\t\t\n\t\t$(\".wetjoin\").removeClass().addClass(\"wetjoin wetjoin_page_\"+pagename);\n\t\t\n\t\tjoin.vars.token= $(\".wetjoin_main .wetjoin_token\").val() || join.vars.token;\n\t\tjoin.vars.name= $(\".wetjoin_main .wetjoin_name\" ).val() || join.vars.name;\n\t\tjoin.vars.email= $(\".wetjoin_main .wetjoin_email\").val() || join.vars.email;\n\t\tjoin.vars.pass= $(\".wetjoin_main .wetjoin_pass\" ).val() || join.vars.pass;\n\t\tjoin.vars.session=$(\".wetjoin_main .wetjoin_session\").val() || join.vars.session;\n\n\t\t$(\".wetjoin_main .wetjoin_page\").empty().append( join.template.find(\".wetjoin_page_\"+pagename).clone() );\n\n\t\t$(\".wetjoin_main .wetjoin_token\" ).val(join.vars.token);\n\t\t$(\".wetjoin_main .wetjoin_name\" ).val(join.vars.name);\n\t\t$(\".wetjoin_main .wetjoin_email\" ).val(join.vars.email);\n\t\t$(\".wetjoin_main .wetjoin_pass\" ).val(join.vars.pass);\n\t\t$(\".wetjoin_main .wetjoin_session\" ).val(join.vars.session);\n\t\t\n\t\t$(\".wetjoin_main .span_token\").text(join.vars.token);\n\t\t$(\".wetjoin_main .span_name\" ).text(join.vars.name);\n\t\t$(\".wetjoin_main .span_email\").text(join.vars.email);\n\n\t\tif(join.qs.dumid)\n\t\t{\n\t\t\t$(\".wetjoin_main .span_website\").text(join.qs.dumid.split(\"/\")[2] || join.qs.dumid);\n\t\t}\n\n\t\tjoin.bind();\n\t\treturn false;\n\t};\n\n\tjoin.callback=function(cmd,dat){\n//\t\tconsole.log(cmd,dat);\n\t\t\n\t\tif(dat.error)\n\t\t{\n\t\t\t$(\".wetjoin_main .wetjoin_error\").text( dat.error );\n\n\t\t\tif(cmd==\"session\"){\n\t\t\t\tjoin.page(\"login\");\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tvar cont=function(vars){\n\t\t\t\n\t\t\tvar q=\"\"\n\t\t\t\n\t\t\tfor(n in vars)\n\t\t\t{\n\t\t\t\tq=q+\"&\"+n+\"=\"+vars[n];\n\t\t\t}\n\t\t\t\n\t\t\tif(join.qs[\"dumid\"])\n\t\t\t{\n\t\t\t\tjoin.page(\"dumid\");\n\t\t\t}\n\t\t\telse\n\t\t\tif(join.qs[\"continue\"])\n\t\t\t{\n\t\t\t\tif(join.qs[\"continue\"].indexOf('?') === -1) { q=\"?\"+q; }\n\t\t\t\twindow.location.href=join.qs[\"continue\"]+q;\n\t\t\t}\n//\t\t\telse\n//\t\t\t{\n//\t\t\t\twindow.location.href=\"http://forum.wetgenes.com/?\"+q;\n//\t\t\t}\n\t\t}\n\t\t\t\n\n\t\tif(cmd==\"join\"){\n\t\t\tjoin.page(\"join2\");\n\t\t}\n\t\telse\n\t\tif(cmd==\"login\"){\n\t\t\tjoin.vars.session=dat.session;\n\t\t\tjoin.page(\"login2\");\n\t\t\t$.cookie(\"fud_session\",join.vars.session,{ expires: 7*7, path: '/' });\n\t\t\tcont({S:join.vars.session});\n\t\t}\n\t\telse\n\t\tif(cmd==\"avatar\"){\n\t\t\tjoin.page(\"avatar2\");\n\t\t}\n\t\telse\n\t\tif(cmd==\"forgot\"){\n\t\t\tjoin.page(\"forgot2\");\n\t\t}\n\t\telse\n\t\tif(cmd==\"session\"){\n\t\t\tjoin.vars.name=dat.name; // remember name\n\t\t\tjoin.page(\"login2\");\n\t\t\tcont({S:join.vars.session});\n\t\t}\n\t\telse\n\t\tif(cmd==\"token\"){\n\t\t\tif(dat.command==\"update\")\n\t\t\t{\n\t\t\t\tjoin.vars.name=dat.name || join.vars.name; // remember name\n\t\t\t\tjoin.vars.email=dat.email || join.vars.email; // remember name\n\t\t\t\tjoin.page(\"login\");\n\t\t\t}\n\t\t\telse\n\t\t\tif(dat.command==\"create\")\n\t\t\t{\n\t\t\t\tjoin.vars.name=dat.name || join.vars.name; // remember name\n\t\t\t\tjoin.vars.email=dat.email || join.vars.email; // remember name\n\t\t\t\tjoin.page(\"login\");\n\t\t\t}\n\t\t}\n\t};\n\n\tjoin.submit=function(cmd){\n//\t\tconsole.log(cmd);\n\n\t\t$(\".wetjoin_main .wetjoin_error\").text(\"\");\n\n\t\tvar token= $(\".wetjoin_main .wetjoin_token\" ).val();\n\t\tvar name= $(\".wetjoin_main .wetjoin_name\" ).val();\n\t\tvar email= $(\".wetjoin_main .wetjoin_email\" ).val();\n\t\tvar pass= $(\".wetjoin_main .wetjoin_pass\" ).val();\n\t\t\n\t\tvar avatar=$(\".wetjoin_main .wetjoin_avatar_preview\").attr(\"src\")\n\n\t\tif(cmd==\"join\"){\n\t\t\t$.post( join.userapi+\"create\",{\n\t\t\t\t\"name\":name,\"email\":email,\"pass\":pass\n\t\t\t},function(a,b,c){return join.callback(\"join\",a,b,c);},\"json\");\n\t\t\treturn false;\n\t\t}\n\t\telse\n\t\tif(cmd==\"avatar\"){\n\t\t\t$.post( join.userapi+\"avatar\",{\n\t\t\t\t\"name\":name,\"pass\":pass,\"avatar\":avatar,\n\t\t\t},function(a,b,c){return join.callback(\"avatar\",a,b,c);},\"json\");\n\t\t\treturn false;\n\t\t}\n\t\telse\n\t\tif(cmd==\"login\"){\n\t\t\t$('#form').submit();\n\t\t\t$.post( join.userapi+\"login\",{\n\t\t\t\t\"name\":name,\"pass\":pass\n\t\t\t},function(a,b,c){return join.callback(\"login\",a,b,c);},\"json\");\n\t\t\treturn true;\n\t\t}\n\t\telse\n\t\tif(cmd==\"forgot\"){\n\t\t\t$.post( join.userapi+\"update\",{\n\t\t\t\t\"email\":email,\"pass\":pass\n\t\t\t},function(a,b,c){return join.callback(\"forgot\",a,b,c);},\"json\");\n\t\t\treturn false;\n\t\t}\n\t\telse\n\t\tif(cmd==\"token\"){\n\t\t\t$.post( join.userapi+\"token\",{\n\t\t\t\t\"token\":token\n\t\t\t},function(a,b,c){return join.callback(\"token\",a,b,c);},\"json\");\n\t\t\treturn false;\n\t\t}\n\t\telse\n\t\tif(cmd==\"session\"){\n\t\t\t$.post( join.userapi+\"session\",{\n\t\t\t\t\"session\":(join.vars.session || \"\")\n\t\t\t},function(a,b,c){return join.callback(\"session\",a,b,c);},\"json\");\n\t\t\treturn false;\n\t\t}\n\t};\n\t\n\tjoin.dumid_confirm=function(confirm)\n\t{\n\t\tif(join.qs[\"dumid\"])\n\t\t{\n\t\t\tif(confirm)\n\t\t\t{\n\t\t\t\tif(join.qs[\"dumid\"].indexOf('?') === -1)\n\t\t\t\t{\n\t\t\t\t\twindow.location.href=join.qs[\"dumid\"]+\"?confirm=\"+join.vars.session;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\twindow.location.href=join.qs[\"dumid\"]+\"&confirm=\"+join.vars.session;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\twindow.location.href=join.qs[\"dumid\"]+\"&deny=1\";\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tjoin.page(\"login2\");\n\t\t}\n\t\treturn false;\n\t};\n\n\tjoin.process_avatar=function()\n\t{\n\n\t\tvar preview=$(\".wetjoin_main .wetjoin_avatar_preview\")\n\t\tvar file=$(\".wetjoin_main .wetjoin_avatar\")[0].files[0]\n\n\t\tpreview.attr(\"src\",\"\");\n\n\t\tif(file)\n\t\t{\n\t\t\tvar reader=new FileReader()\n\t\t\treader.onloadend=function()\n\t\t\t{\n\t\t\t\tvar img=new Image();\n\t\t\t\timg.src=reader.result;\n\t\t\t\timg.onload=function()\n\t\t\t\t{\n\t\t\t\t\tvar canvas=document.createElement('canvas');\t\t\t\n\t\t\t\t\tvar ctx=canvas.getContext('2d');\n\t\t\t\t\tcanvas.width=100;\n\t\t\t\t\tcanvas.height=100;\n\t\t\t\t\tctx.drawImage(img,0,0,100,100);\t\n\t\t\t\t\tpreview.attr(\"src\",canvas.toDataURL());\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.readAsDataURL(file)\n\t\t}\n\n\t}\n\n\n\tjoin.bind=function(){\n\t\t$(\".wetjoin_main .wetjoin_header_join\" ).off(\"click\").on(\"click\",function(){return join.page(\"join\");});\n\t\t$(\".wetjoin_main .wetjoin_header_login\" ).off(\"click\").on(\"click\",function(){return join.page(\"login\");});\n\t\t$(\".wetjoin_main .wetjoin_header_forgot\" ).off(\"click\").on(\"click\",function(){return join.page(\"forgot\");});\n\t\t$(\".wetjoin_main .wetjoin_header_avatar\" ).off(\"click\").on(\"click\",function(){return join.page(\"avatar\");});\n\n\t\t$(\".wetjoin_main .wetjoin_submit_avatar\" ).off(\"click\").on(\"click\",function(){return join.submit(\"avatar\");});\n\t\t$(\".wetjoin_main .wetjoin_submit_login\" ).off(\"click\").on(\"click\",function(){return join.submit(\"login\");});\n\t\t$(\".wetjoin_main .wetjoin_submit_join\" ).off(\"click\").on(\"click\",function(){return join.submit(\"join\");});\n\t\t$(\".wetjoin_main .wetjoin_submit_forgot\" ).off(\"click\").on(\"click\",function(){return join.submit(\"forgot\");});\n\t\t$(\".wetjoin_main .wetjoin_submit_token\" ).off(\"click\").on(\"click\",function(){return join.submit(\"token\");});\n\t\t$(\".wetjoin_main .wetjoin_submit_session\").off(\"click\").on(\"click\",function(){return join.submit(\"session\");});\n\n\t\t$(\".wetjoin_main .wetjoin_confirm\").off(\"click\").on(\"click\",function(){return join.dumid_confirm(true);});\n\t\t$(\".wetjoin_main .wetjoin_deny\" ).off(\"click\").on(\"click\",function(){return join.dumid_confirm(false);});\n\n\t\t$(\".wetjoin_main .wetjoin_avatar\" ).on(\"change\",function(){ return join.process_avatar() });\n\n\t\t// enter in inputs will auto force a submit\n\t\t$(\".wetjoin_main input\").off(\"keypress\").on(\"keypress\",function(e){\n\t\t\tif(e.which == 13)\n\t\t\t{\n\t\t\t\t$(this).blur();\n\t\t\t\t$(\".wetjoin_main .wetjoin_submit\").click();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t};\n\t\n\n\tjoin.template.load(\"join.template.html\",join.fill);\n\t\n\treturn join;\n\n};\n","/*!\n * jQuery Cookie Plugin v1.4.1\n * https://github.com/carhartl/jquery-cookie\n *\n * Copyright 2013 Klaus Hartl\n * Released under the MIT license\n */\n(function (factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD\n\t\tdefine(['jquery'], factory);\n\t} else if (typeof exports === 'object') {\n\t\t// CommonJS\n\t\tfactory(require('./jquery.js'));\n\t} else {\n\t\t// Browser globals\n\t\tfactory(jQuery);\n\t}\n}(function ($) {\n\n\tvar pluses = /\\+/g;\n\n\tfunction encode(s) {\n\t\treturn config.raw ? s : encodeURIComponent(s);\n\t}\n\n\tfunction decode(s) {\n\t\treturn config.raw ? s : decodeURIComponent(s);\n\t}\n\n\tfunction stringifyCookieValue(value) {\n\t\treturn encode(config.json ? JSON.stringify(value) : String(value));\n\t}\n\n\tfunction parseCookieValue(s) {\n\t\tif (s.indexOf('\"') === 0) {\n\t\t\t// This is a quoted cookie as according to RFC2068, unescape...\n\t\t\ts = s.slice(1, -1).replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, '\\\\');\n\t\t}\n\n\t\ttry {\n\t\t\t// Replace server-side written pluses with spaces.\n\t\t\t// If we can't decode the cookie, ignore it, it's unusable.\n\t\t\t// If we can't parse the cookie, ignore it, it's unusable.\n\t\t\ts = decodeURIComponent(s.replace(pluses, ' '));\n\t\t\treturn config.json ? JSON.parse(s) : s;\n\t\t} catch(e) {}\n\t}\n\n\tfunction read(s, converter) {\n\t\tvar value = config.raw ? s : parseCookieValue(s);\n\t\treturn $.isFunction(converter) ? converter(value) : value;\n\t}\n\n\tvar config = $.cookie = function (key, value, options) {\n\n\t\t// Write\n\n\t\tif (value !== undefined && !$.isFunction(value)) {\n\t\t\toptions = $.extend({}, config.defaults, options);\n\n\t\t\tif (typeof options.expires === 'number') {\n\t\t\t\tvar days = options.expires, t = options.expires = new Date();\n\t\t\t\tt.setTime(+t + days * 864e+5);\n\t\t\t}\n\n\t\t\treturn (document.cookie = [\n\t\t\t\tencode(key), '=', stringifyCookieValue(value),\n\t\t\t\toptions.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE\n\t\t\t\toptions.path ? '; path=' + options.path : '',\n\t\t\t\toptions.domain ? '; domain=' + options.domain : '',\n\t\t\t\toptions.secure ? '; secure' : ''\n\t\t\t].join(''));\n\t\t}\n\n\t\t// Read\n\n\t\tvar result = key ? undefined : {};\n\n\t\t// To prevent the for loop in the first place assign an empty array\n\t\t// in case there are no cookies at all. Also prevents odd result when\n\t\t// calling $.cookie().\n\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\n\t\tfor (var i = 0, l = cookies.length; i < l; i++) {\n\t\t\tvar parts = cookies[i].split('=');\n\t\t\tvar name = decode(parts.shift());\n\t\t\tvar cookie = parts.join('=');\n\n\t\t\tif (key && key === name) {\n\t\t\t\t// If second argument (value) is a function it's a converter...\n\t\t\t\tresult = read(cookie, value);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Prevent storing a cookie that we couldn't decode.\n\t\t\tif (!key && (cookie = read(cookie)) !== undefined) {\n\t\t\t\tresult[name] = cookie;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tconfig.defaults = {};\n\n\t$.removeCookie = function (key, options) {\n\t\tif ($.cookie(key) === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Must not alter options, thus extending a fresh object...\n\t\t$.cookie(key, '', $.extend({}, options, { expires: -1 }));\n\t\treturn !$.cookie(key);\n\t};\n\n}));\n","/*!\n * jQuery JavaScript Library v1.11.1\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-05-01T17:42Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper window is present,\n\t\t// execute the factory and get jQuery\n\t\t// For environments that do not inherently posses a window with a document\n\t\t// (such as Node.js), expose a jQuery-making factory as module.exports\n\t\t// This accentuates the need for the creation of a real window\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Can't do this because several apps including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n// Support: Firefox 18+\n//\n\nvar deletedIds = [];\n\nvar slice = deletedIds.slice;\n\nvar concat = deletedIds.concat;\n\nvar push = deletedIds.push;\n\nvar indexOf = deletedIds.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\tversion = \"1.11.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android<4.1, IE<9\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: deletedIds.sort,\n\tsplice: deletedIds.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar src, copyIsArray, copy, name, options, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\t/* jshint eqeqeq: false */\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\treturn !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Handle iteration over inherited properties before own properties.\n\t\tif ( support.ownLast ) {\n\t\t\tfor ( key in obj ) {\n\t\t\t\treturn hasOwn.call( obj, key );\n\t\t\t}\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call(obj) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && jQuery.trim( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisArray = isArraylike( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android<4.1, IE<9\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArraylike( Object(arr) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( indexOf ) {\n\t\t\t\treturn indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\twhile ( j < len ) {\n\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)\n\t\tif ( len !== len ) {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tisArray = isArraylike( elems ),\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar args, proxy, tmp;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: function() {\n\t\treturn +( new Date() );\n\t},\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n});\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nfunction isArraylike( obj ) {\n\tvar length = obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\tif ( obj.nodeType === 1 && length ) {\n\t\treturn true;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v1.10.19\n * http://sizzlejs.com/\n *\n * Copyright 2013 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-04-18\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + -(new Date()),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tstrundefined = typeof undefined,\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf if we can't use a native one\n\tindexOf = arr.indexOf || function( elem ) {\n\t\tvar i = 0,\n\t\t\tlen = this.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( this[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar match, elem, m, nodeType,\n\t\t// QSA vars\n\t\ti, groups, old, nid, newContext, newSelector;\n\n\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\n\tcontext = context || document;\n\tresults = results || [];\n\n\tif ( !selector || typeof selector !== \"string\" ) {\n\t\treturn results;\n\t}\n\n\tif ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\n\tif ( documentIsHTML && !seed ) {\n\n\t\t// Shortcuts\n\t\tif ( (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document (jQuery #6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\n\t\t// QSA path\n\t\tif ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\t\t\tnid = old = expando;\n\t\t\tnewContext = context;\n\t\t\tnewSelector = nodeType === 9 && selector;\n\n\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t// IE 8 doesn't work on object elements\n\t\t\tif ( nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t} else {\n\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t}\n\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\ti = groups.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tgroups[i] = nid + toSelector( groups[i] );\n\t\t\t\t}\n\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;\n\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t}\n\n\t\t\tif ( newSelector ) {\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch(qsaError) {\n\t\t\t\t} finally {\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.removeAttribute(\"id\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {Function(string, Object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = attrs.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== strundefined && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc,\n\t\tparent = doc.defaultView;\n\n\t// If no document and documentElement is available, return\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Set our document\n\tdocument = doc;\n\tdocElem = doc.documentElement;\n\n\t// Support tests\n\tdocumentIsHTML = !isXML( doc );\n\n\t// Support: IE>8\n\t// If iframe document is assigned to \"document\" variable and if iframe has been reloaded,\n\t// IE will throw \"permission denied\" error when accessing \"document\" variable, see jQuery #13936\n\t// IE6-8 do not support the defaultView property so parent will be undefined\n\tif ( parent && parent !== parent.top ) {\n\t\t// IE11 does not have attachEvent, so all must suffer\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", function() {\n\t\t\t\tsetDocument();\n\t\t\t}, false );\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", function() {\n\t\t\t\tsetDocument();\n\t\t\t});\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( doc.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Check if getElementsByClassName can be trusted\n\tsupport.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) {\n\t\tdiv.innerHTML = \"
\";\n\n\t\t// Support: Safari<4\n\t\t// Catch class over-caching\n\t\tdiv.firstChild.className = \"i\";\n\t\t// Support: Opera<10\n\t\t// Catch gEBCN failure to find non-leading classes\n\t\treturn div.getElementsByClassName(\"i\").length === 2;\n\t});\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !doc.getElementsByName || !doc.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== strundefined && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [ m ] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== strundefined ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\t\t\t}\n\t\t} :\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdiv.innerHTML = \"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll(\"[msallowclip^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = doc.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully does not implement inclusive descendent\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === doc ? -1 :\n\t\t\t\tb === doc ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn doc;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch(e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, diff, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && cache[2];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\t\t\t\t\t\tif ( (oldCache = outerCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\treturn ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Keep `i` a string if there are no elements so `matchedCount` will be \"00\" below\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is no seed and only one group\n\tif ( match.length === 1 ) {\n\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\trsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome<14\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = (/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/);\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t});\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t});\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;\n\t});\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t}));\n};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tret = [],\n\t\t\tself = this,\n\t\t\tlen = self.length;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], false) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], true) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n});\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\n\t\t\t\t\t// scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[1],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn typeof rootjQuery.ready !== \"undefined\" ?\n\t\t\t\trootjQuery.ready( selector ) :\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.extend({\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\njQuery.fn.extend({\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && (pos ?\n\t\t\t\t\tpos.index(cur) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector(cur, selectors)) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.unique(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter(selector)\n\t\t);\n\t}\n});\n\nfunction sibling( cur, dir ) {\n\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\n\treturn cur;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tret = jQuery.unique( ret );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tret = ret.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\nvar rnotwhite = (/\\S+/g);\n\n\n\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t});\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\t\t// Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\n\t\t\t\t\t(function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== \"string\" ) {\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t})( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\tfiringLength = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[1] ](function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[1] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[0] ] = function() {\n\t\t\t\tdeferred[ tuple[0] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[0] + \"With\" ] = list.fireWith;\n\t\t});\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\n\t\t\t\t\t} else if ( !(--remaining) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend({\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( !document.body ) {\n\t\t\treturn setTimeout( jQuery.ready );\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n});\n\n/**\n * Clean-up method for dom ready events\n */\nfunction detach() {\n\tif ( document.addEventListener ) {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", completed, false );\n\t\twindow.removeEventListener( \"load\", completed, false );\n\n\t} else {\n\t\tdocument.detachEvent( \"onreadystatechange\", completed );\n\t\twindow.detachEvent( \"onload\", completed );\n\t}\n}\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\t// readyState === \"complete\" is good enough for us to call the dom ready in oldIE\n\tif ( document.addEventListener || event.type === \"load\" || document.readyState === \"complete\" ) {\n\t\tdetach();\n\t\tjQuery.ready();\n\t}\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// we once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed, false );\n\n\t\t// If IE event model is used\n\t\t} else {\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", completed );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t(function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll(\"left\");\n\t\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// detach all dom ready events\n\t\t\t\t\t\tdetach();\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n\nvar strundefined = typeof undefined;\n\n\n\n// Support: IE<9\n// Iteration over object's inherited properties before its own\nvar i;\nfor ( i in jQuery( support ) ) {\n\tbreak;\n}\nsupport.ownLast = i !== \"0\";\n\n// Note: most support tests are defined in their respective modules.\n// false until the test is run\nsupport.inlineBlockNeedsLayout = false;\n\n// Execute ASAP in case we need to set body.style.zoom\njQuery(function() {\n\t// Minified: var a,b,c,d\n\tvar val, div, body, container;\n\n\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\n\tif ( !body || !body.style ) {\n\t\t// Return for frameset docs that don't have a body\n\t\treturn;\n\t}\n\n\t// Setup\n\tdiv = document.createElement( \"div\" );\n\tcontainer = document.createElement( \"div\" );\n\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\n\tbody.appendChild( container ).appendChild( div );\n\n\tif ( typeof div.style.zoom !== strundefined ) {\n\t\t// Support: IE<8\n\t\t// Check if natively block-level elements act like inline-block\n\t\t// elements when setting their display to 'inline' and giving\n\t\t// them layout\n\t\tdiv.style.cssText = \"display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1\";\n\n\t\tsupport.inlineBlockNeedsLayout = val = div.offsetWidth === 3;\n\t\tif ( val ) {\n\t\t\t// Prevent IE 6 from affecting layout for positioned elements #11048\n\t\t\t// Prevent IE from shrinking the body in IE 7 mode #12869\n\t\t\t// Support: IE<8\n\t\t\tbody.style.zoom = 1;\n\t\t}\n\t}\n\n\tbody.removeChild( container );\n});\n\n\n\n\n(function() {\n\tvar div = document.createElement( \"div\" );\n\n\t// Execute the test only if not already executed in another module.\n\tif (support.deleteExpando == null) {\n\t\t// Support: IE<9\n\t\tsupport.deleteExpando = true;\n\t\ttry {\n\t\t\tdelete div.test;\n\t\t} catch( e ) {\n\t\t\tsupport.deleteExpando = false;\n\t\t}\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n})();\n\n\n/**\n * Determines whether an object can have data\n */\njQuery.acceptData = function( elem ) {\n\tvar noData = jQuery.noData[ (elem.nodeName + \" \").toLowerCase() ],\n\t\tnodeType = +elem.nodeType || 1;\n\n\t// Do not set data on non-element DOM nodes because it will not be cleared (#8335).\n\treturn nodeType !== 1 && nodeType !== 9 ?\n\t\tfalse :\n\n\t\t// Nodes accept data unless otherwise specified; rejection can be conditional\n\t\t!noData || noData !== true && elem.getAttribute(\"classid\") === noData;\n};\n\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction internalData( elem, name, data, pvt /* Internal Use Only */ ) {\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar ret, thisCache,\n\t\tinternalKey = jQuery.expando,\n\n\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t// can't GC object references properly across the DOM-JS boundary\n\t\tisNode = elem.nodeType,\n\n\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t// attached directly to the object so GC can occur automatically\n\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t// Avoid doing any more work than we need to when trying to get data on an\n\t// object that has no data at all\n\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === \"string\" ) {\n\t\treturn;\n\t}\n\n\tif ( !id ) {\n\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t// ends up in the global cache\n\t\tif ( isNode ) {\n\t\t\tid = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++;\n\t\t} else {\n\t\t\tid = internalKey;\n\t\t}\n\t}\n\n\tif ( !cache[ id ] ) {\n\t\t// Avoid exposing jQuery metadata on plain JS objects when the object\n\t\t// is serialized using JSON.stringify\n\t\tcache[ id ] = isNode ? {} : { toJSON: jQuery.noop };\n\t}\n\n\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t// shallow copied over onto the existing cache\n\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\tif ( pvt ) {\n\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t} else {\n\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t}\n\t}\n\n\tthisCache = cache[ id ];\n\n\t// jQuery data() is stored in a separate object inside the object's internal data\n\t// cache in order to avoid key collisions between internal data and user-defined\n\t// data.\n\tif ( !pvt ) {\n\t\tif ( !thisCache.data ) {\n\t\t\tthisCache.data = {};\n\t\t}\n\n\t\tthisCache = thisCache.data;\n\t}\n\n\tif ( data !== undefined ) {\n\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t}\n\n\t// Check for both converted-to-camel and non-converted data property names\n\t// If a data property was specified\n\tif ( typeof name === \"string\" ) {\n\n\t\t// First Try to find as-is property data\n\t\tret = thisCache[ name ];\n\n\t\t// Test for null|undefined property data\n\t\tif ( ret == null ) {\n\n\t\t\t// Try to find the camelCased property\n\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t}\n\t} else {\n\t\tret = thisCache;\n\t}\n\n\treturn ret;\n}\n\nfunction internalRemoveData( elem, name, pvt ) {\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar thisCache, i,\n\t\tisNode = elem.nodeType,\n\n\t\t// See jQuery.data for more information\n\t\tcache = isNode ? jQuery.cache : elem,\n\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t// If there is already no cache entry for this object, there is no\n\t// purpose in continuing\n\tif ( !cache[ id ] ) {\n\t\treturn;\n\t}\n\n\tif ( name ) {\n\n\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\tif ( thisCache ) {\n\n\t\t\t// Support array or space separated string names for data keys\n\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\tname = [ name ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = name.split(\" \");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = name.concat( jQuery.map( name, jQuery.camelCase ) );\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t}\n\n\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t// and let the cache object itself get destroyed\n\t\t\tif ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// See jQuery.data for more information\n\tif ( !pvt ) {\n\t\tdelete cache[ id ].data;\n\n\t\t// Don't destroy the parent cache unless the internal data object\n\t\t// had been the only thing left in it\n\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Destroy the cache\n\tif ( isNode ) {\n\t\tjQuery.cleanData( [ elem ], true );\n\n\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t/* jshint eqeqeq: false */\n\t} else if ( support.deleteExpando || cache != cache.window ) {\n\t\t/* jshint eqeqeq: true */\n\t\tdelete cache[ id ];\n\n\t// When all else fails, null\n\t} else {\n\t\tcache[ id ] = null;\n\t}\n}\n\njQuery.extend({\n\tcache: {},\n\n\t// The following elements (space-suffixed to avoid Object.prototype collisions)\n\t// throw uncatchable exceptions if you attempt to set expando properties\n\tnoData: {\n\t\t\"applet \": true,\n\t\t\"embed \": true,\n\t\t// ...but Flash objects (which have this classid) *can* handle expandos\n\t\t\"object \": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name );\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data, true );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name, true );\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[0],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Special expections of .data basically thwart jQuery.access,\n\t\t// so implement the relevant behavior ourselves\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice(5) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\treturn arguments.length > 1 ?\n\n\t\t\t// Sets one value\n\t\t\tthis.each(function() {\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t}) :\n\n\t\t\t// Gets one value\n\t\t\t// Try to fetch any internally stored data first\n\t\t\telem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined;\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray(data) ) {\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// not intended for public consumption - generates a queueHooks object, or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tjQuery._removeData( elem, type + \"queue\" );\n\t\t\t\tjQuery._removeData( elem, key );\n\t\t\t})\n\t\t});\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = jQuery._data( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n});\nvar pnum = (/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/).source;\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n\t};\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlength = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\tjQuery.access( elems, fn, i, key[i], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n};\nvar rcheckableType = (/^(?:checkbox|radio)$/i);\n\n\n\n(function() {\n\t// Minified: var a,b,c\n\tvar input = document.createElement( \"input\" ),\n\t\tdiv = document.createElement( \"div\" ),\n\t\tfragment = document.createDocumentFragment();\n\n\t// Setup\n\tdiv.innerHTML = \"
a\";\n\n\t// IE strips leading whitespace when .innerHTML is used\n\tsupport.leadingWhitespace = div.firstChild.nodeType === 3;\n\n\t// Make sure that tbody elements aren't automatically inserted\n\t// IE will insert them into empty tables\n\tsupport.tbody = !div.getElementsByTagName( \"tbody\" ).length;\n\n\t// Make sure that link elements get serialized correctly by innerHTML\n\t// This requires a wrapper element in IE\n\tsupport.htmlSerialize = !!div.getElementsByTagName( \"link\" ).length;\n\n\t// Makes sure cloning an html5 element does not cause problems\n\t// Where outerHTML is undefined, this still works\n\tsupport.html5Clone =\n\t\tdocument.createElement( \"nav\" ).cloneNode( true ).outerHTML !== \"<:nav>\";\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tinput.type = \"checkbox\";\n\tinput.checked = true;\n\tfragment.appendChild( input );\n\tsupport.appendChecked = input.checked;\n\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\t// Support: IE6-IE11+\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tfragment.appendChild( div );\n\tdiv.innerHTML = \"\";\n\n\t// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3\n\t// old WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<9\n\t// Opera does not clone events (and typeof div.attachEvent === undefined).\n\t// IE9-10 clones events bound via attachEvent, but they don't trigger with .click()\n\tsupport.noCloneEvent = true;\n\tif ( div.attachEvent ) {\n\t\tdiv.attachEvent( \"onclick\", function() {\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\n\t\tdiv.cloneNode( true ).click();\n\t}\n\n\t// Execute the test only if not already executed in another module.\n\tif (support.deleteExpando == null) {\n\t\t// Support: IE<9\n\t\tsupport.deleteExpando = true;\n\t\ttry {\n\t\t\tdelete div.test;\n\t\t} catch( e ) {\n\t\t\tsupport.deleteExpando = false;\n\t\t}\n\t}\n})();\n\n\n(function() {\n\tvar i, eventName,\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event)\n\tfor ( i in { submit: true, change: true, focusin: true }) {\n\t\teventName = \"on\" + i;\n\n\t\tif ( !(support[ i + \"Bubbles\" ] = eventName in window) ) {\n\t\t\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)\n\t\t\tdiv.setAttribute( eventName, \"t\" );\n\t\t\tsupport[ i + \"Bubbles\" ] = div.attributes[ eventName ].expando === false;\n\t\t}\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n})();\n\n\nvar rformElems = /^(?:input|select|textarea)$/i,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)$/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\t\tvar tmp, events, t, handleObjIn,\n\t\t\tspecial, eventHandle, handleObj,\n\t\t\thandlers, type, namespaces, origType,\n\t\t\telemData = jQuery._data( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !(events = elemData.events) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !(eventHandle = elemData.handle) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !(handlers = events[ type ]) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\t\tvar j, handleObj, tmp,\n\t\t\torigCount, t, events,\n\t\t\tspecial, handlers, type,\n\t\t\tnamespaces, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[2] && new RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery._removeData( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\tvar handle, ontype, cur,\n\t\t\tbubbleType, special, tmp, i,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split(\".\") : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf(\".\") >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join(\".\");\n\t\tevent.namespace_re = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && jQuery.acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&\n\t\t\t\tjQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\ttry {\n\t\t\t\t\t\telem[ type ]();\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\n\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\n\t\t\t\t\t}\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, ret, handleObj, matched, j,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( jQuery._data( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( (event.result = ret) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar sel, handleObj, matches, i,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG instance trees (#13180)\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && cur.nodeType && (!event.button || event.type !== \"click\") ) {\n\n\t\t\t/* jshint eqeqeq: false */\n\t\t\tfor ( ; cur != this; cur = cur.parentNode || this ) {\n\t\t\t\t/* jshint eqeqeq: true */\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== \"click\") ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, handlers: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Fix target property (#1925)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Support: Chrome 23+, Safari?\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: \"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar body, eventDoc, doc,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\n\t\t\t\t\t\t// let .trigger() run the handlers\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( jQuery.nodeName( this, \"input\" ) && this.type === \"checkbox\" && this.click ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === strundefined ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\t\t\t\t// Support: IE < 9, Android < 4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If preventDefault exists, run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// Support: IE\n\t\t// Otherwise set the returnValue property of the original event to false\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// If stopPropagation exists, run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\t// Support: IE\n\t\t// Set the cancelBubble property of the original event to true\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopImmediatePropagation ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// IE submit delegation\nif ( !support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !jQuery._data( form, \"submitBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( form, \"submitBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"changeBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( elem, \"changeBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = jQuery._data( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tjQuery._data( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = jQuery._data( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tjQuery._removeData( doc, fix );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery._data( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar type, origFn;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) {\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[0];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n});\n\n\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\t\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /\\s*$/g,\n\n\t// We have to close these tags to support XHTML (#13200)\n\twrapMap = {\n\t\toption: [ 1, \"\" ],\n\t\tlegend: [ 1, \"
\", \"
\" ],\n\t\tarea: [ 1, \"\", \"\" ],\n\t\tparam: [ 1, \"\", \"\" ],\n\t\tthead: [ 1, \"\", \"
\" ],\n\t\ttr: [ 2, \"\", \"
\" ],\n\t\tcol: [ 2, \"\", \"
\" ],\n\t\ttd: [ 3, \"\", \"
\" ],\n\n\t\t// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n\t\t// unless wrapped in a div with non-breaking characters in front of it.\n\t\t_default: support.htmlSerialize ? [ 0, \"\", \"\" ] : [ 1, \"X
\", \"
\" ]\n\t},\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement(\"div\") );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\nfunction getAll( context, tag ) {\n\tvar elems, elem,\n\t\ti = 0,\n\t\tfound = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || \"*\" ) :\n\t\t\tundefined;\n\n\tif ( !found ) {\n\t\tfor ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( !tag || jQuery.nodeName( elem, tag ) ) {\n\t\t\t\tfound.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( found, getAll( elem, tag ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], found ) :\n\t\tfound;\n}\n\n// Used in buildFragment, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( rcheckableType.test( elem.type ) ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n\n// Support: IE<8\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement(\"tbody\") ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = (jQuery.find.attr( elem, \"type\" ) !== null) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\tif ( match ) {\n\t\telem.type = match[1];\n\t} else {\n\t\telem.removeAttribute(\"type\");\n\t}\n\treturn elem;\n}\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar elem,\n\t\ti = 0;\n\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\tjQuery._data( elem, \"globalEval\", !refElements || jQuery._data( refElements[i], \"globalEval\" ) );\n\t}\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction fixCloneNodeIssues( src, dest ) {\n\tvar nodeName, e, data;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 copies events bound via attachEvent when using cloneNode.\n\tif ( !support.noCloneEvent && dest[ jQuery.expando ] ) {\n\t\tdata = jQuery._data( dest );\n\n\t\tfor ( e in data.events ) {\n\t\t\tjQuery.removeEvent( dest, e, data.handle );\n\t\t}\n\n\t\t// Event data gets referenced instead of copied if the expando gets copied too\n\t\tdest.removeAttribute( jQuery.expando );\n\t}\n\n\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\n\tif ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdisableScript( dest ).text = src.text;\n\t\trestoreScript( dest );\n\n\t// IE6-10 improperly clones children of object elements using classid.\n\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t} else if ( nodeName === \"object\" ) {\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar destElements, node, clone, i, srcElements,\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\tif ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( (!support.noCloneEvent || !support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\t// Fix all IE cloning issues\n\t\t\tfor ( i = 0; (node = srcElements[i]) != null; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tfixCloneNodeIssues( node, destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0; (node = srcElements[i]) != null; i++ ) {\n\t\t\t\t\tcloneCopyEvent( node, destElements[i] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\tdestElements = srcElements = node = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tbuildFragment: function( elems, context, scripts, selection ) {\n\t\tvar j, elem, contains,\n\t\t\ttmp, tag, tbody, wrap,\n\t\t\tl = elems.length,\n\n\t\t\t// Ensure a safe fragment\n\t\t\tsafe = createSafeFragment( context ),\n\n\t\t\tnodes = [],\n\t\t\ti = 0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\telem = elems[ i ];\n\n\t\t\tif ( elem || elem === 0 ) {\n\n\t\t\t\t// Add nodes directly\n\t\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t\t// Convert non-html into a text node\n\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t\t// Convert html into DOM nodes\n\t\t\t\t} else {\n\t\t\t\t\ttmp = tmp || safe.appendChild( context.createElement(\"div\") );\n\n\t\t\t\t\t// Deserialize a standard representation\n\t\t\t\t\ttag = (rtagName.exec( elem ) || [ \"\", \"\" ])[ 1 ].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\n\t\t\t\t\ttmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, \"<$1>\" ) + wrap[2];\n\n\t\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\t\tj = wrap[0];\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Manually add leading whitespace removed by IE\n\t\t\t\t\tif ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tnodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted from table fragments\n\t\t\t\t\tif ( !support.tbody ) {\n\n\t\t\t\t\t\t// String was a , *may* have spurious \n\t\t\t\t\t\telem = tag === \"table\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\ttmp.firstChild :\n\n\t\t\t\t\t\t\t// String was a bare or \n\t\t\t\t\t\t\twrap[1] === \"
\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\t\ttmp :\n\t\t\t\t\t\t\t\t0;\n\n\t\t\t\t\t\tj = elem && elem.childNodes.length;\n\t\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( (tbody = elem.childNodes[j]), \"tbody\" ) && !tbody.childNodes.length ) {\n\t\t\t\t\t\t\t\telem.removeChild( tbody );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t\t// Fix #12392 for WebKit and IE > 9\n\t\t\t\t\ttmp.textContent = \"\";\n\n\t\t\t\t\t// Fix #12392 for oldIE\n\t\t\t\t\twhile ( tmp.firstChild ) {\n\t\t\t\t\t\ttmp.removeChild( tmp.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remember the top-level container for proper cleanup\n\t\t\t\t\ttmp = safe.lastChild;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Fix #11356: Clear elements from fragment\n\t\tif ( tmp ) {\n\t\t\tsafe.removeChild( tmp );\n\t\t}\n\n\t\t// Reset defaultChecked for any radios and checkboxes\n\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\tif ( !support.appendChecked ) {\n\t\t\tjQuery.grep( getAll( nodes, \"input\" ), fixDefaultChecked );\n\t\t}\n\n\t\ti = 0;\n\t\twhile ( (elem = nodes[ i++ ]) ) {\n\n\t\t\t// #4087 - If origin and destination elements are the same, and this is\n\t\t\t// that element, do not do anything\n\t\t\tif ( selection && jQuery.inArray( elem, selection ) !== -1 ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Append to fragment\n\t\t\ttmp = getAll( safe.appendChild( elem ), \"script\" );\n\n\t\t\t// Preserve script evaluation history\n\t\t\tif ( contains ) {\n\t\t\t\tsetGlobalEval( tmp );\n\t\t\t}\n\n\t\t\t// Capture executables\n\t\t\tif ( scripts ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (elem = tmp[ j++ ]) ) {\n\t\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\t\tscripts.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttmp = null;\n\n\t\treturn safe;\n\t},\n\n\tcleanData: function( elems, /* internal */ acceptData ) {\n\t\tvar elem, type, id, data,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tdeleteExpando = support.deleteExpando,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t\t\t\t// we must handle all of these cases\n\t\t\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\t\t\tdelete elem[ internalKey ];\n\n\t\t\t\t\t\t} else if ( typeof elem.removeAttribute !== strundefined ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdeletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t});\n\t},\n\n\tafter: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t});\n\t},\n\n\tremove: function( selector, keepData /* Internal Use Only */ ) {\n\t\tvar elem,\n\t\t\telems = selector ? jQuery.filter( selector, this ) : this,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem ) );\n\t\t\t}\n\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\tif ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\t\tsetGlobalEval( getAll( elem, \"script\" ) );\n\t\t\t\t}\n\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\n\t\t\t// If this is a select, ensure that it displays empty (#12336)\n\t\t\t// Support: IE<9\n\t\t\tif ( elem.options && jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\telem.options.length = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map(function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( support.htmlSerialize || !rnoshimcache.test( value ) ) &&\n\t\t\t\t( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ (rtagName.exec( value ) || [ \"\", \"\" ])[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar arg = arguments[ 0 ];\n\n\t\t// Make the changes, replacing each context element with the new content\n\t\tthis.domManip( arguments, function( elem ) {\n\t\t\targ = this.parentNode;\n\n\t\t\tjQuery.cleanData( getAll( this ) );\n\n\t\t\tif ( arg ) {\n\t\t\t\targ.replaceChild( elem, this );\n\t\t\t}\n\t\t});\n\n\t\t// Force removal if there was no new content (e.g., from empty arguments)\n\t\treturn arg && (arg.length || arg.nodeType) ? this : this.remove();\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = concat.apply( [], args );\n\n\t\tvar first, node, hasScripts,\n\t\t\tscripts, doc, fragment,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tset = this,\n\t\t\tiNoClone = l - 1,\n\t\t\tvalue = args[0],\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( isFunction ||\n\t\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\t\treturn this.each(function( index ) {\n\t\t\t\tvar self = set.eq( index );\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\targs[0] = value.call( this, index, self.html() );\n\t\t\t\t}\n\t\t\t\tself.domManip( args, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( l ) {\n\t\t\tfragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\t\thasScripts = scripts.length;\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tnode = fragment;\n\n\t\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback.call( this[i], node, i );\n\t\t\t\t}\n\n\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t\t// Reenable scripts\n\t\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t\t!jQuery._data( node, \"globalEval\" ) && jQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\t\tif ( node.src ) {\n\t\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.globalEval( ( node.text || node.textContent || node.innerHTML || \"\" ).replace( rcleanScript, \"\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fix #11809: Avoid leaking memory\n\t\t\t\tfragment = first = null;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone(true);\n\t\t\tjQuery( insert[i] )[ original ]( elems );\n\n\t\t\t// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\n\nvar iframe,\n\telemdisplay = {};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar style,\n\t\telem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\t// getDefaultComputedStyle might be reliably used only on attached element\n\t\tdisplay = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?\n\n\t\t\t// Use of this method is a temporary fix (more like optmization) until something better comes along,\n\t\t\t// since it was removed from specification and supported only in FF\n\t\t\tstyle.display : jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = (iframe || jQuery( \"