{"version":3,"file":"js/main.js","mappings":"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","sources":["webpack://far.konto.web/./assets/js/minasidor/far/far.lazycontent.js","webpack://far.konto.web/./assets/js/minasidor/far/far.showmore.js","webpack://far.konto.web/./assets/js/minasidor/lib/jquery.mask.js","webpack://far.konto.web/./assets/js/minasidor/lib/jquery.validate-1.14.0.min.js","webpack://far.konto.web/./assets/js/minasidor/lib/picker.js","webpack://far.konto.web/./assets/js/minasidor/lib/polyfill.startswith.js","webpack://far.konto.web/./node_modules/jquery/dist/jquery.js","webpack://far.konto.web/webpack/bootstrap","webpack://far.konto.web/webpack/runtime/compat get default export","webpack://far.konto.web/webpack/runtime/define property getters","webpack://far.konto.web/webpack/runtime/hasOwnProperty shorthand","webpack://far.konto.web/./assets/js/minasidor/far/far.alerts.js","webpack://far.konto.web/./assets/js/minasidor/far/far.buttonAriaState.js","webpack://far.konto.web/./assets/js/minasidor/far/far.coursesummary.js","webpack://far.konto.web/./assets/js/minasidor/far/far.datepicker.js","webpack://far.konto.web/./assets/js/minasidor/far/far.datetime.js","webpack://far.konto.web/./assets/js/minasidor/far/far.gdpr.js","webpack://far.konto.web/./assets/js/minasidor/far/far.input.js","webpack://far.konto.web/./assets/js/minasidor/far/far.modal.js","webpack://far.konto.web/./assets/js/minasidor/far/far.toggle.js","webpack://far.konto.web/./assets/js/minasidor/far/far.validation.js","webpack://far.konto.web/./assets/js/minasidor/far/far.createaccount.js","webpack://far.konto.web/./assets/js/minasidor/ondocumentready.js","webpack://far.konto.web/./assets/ts/behaviours/handleInfoMessage.ts","webpack://far.konto.web/./assets/ts/behaviours/formSubmitButton.ts","webpack://far.konto.web/./assets/ts/main.ts"],"sourcesContent":["import jQuery from \"jquery\";\r\n(function (far, $) {\r\n far.lazyContent = {};\r\n\r\n var _queuedContent = new Array();\r\n var _initialLazyLoadingDelay = 200;\r\n\r\n //#region Public functions ====================================================\r\n\r\n far.lazyContent.initialize = function () {\r\n queueLazyLoadingContent();\r\n };\r\n\r\n $(document).on(\"click\", \".coursedocument\", function (event) {\r\n event.preventDefault();\r\n var $this = $(this);\r\n var id = $this.attr(\"data-id\");\r\n var name = $this.attr(\"data-filename\");\r\n var action = $this.attr(\"data-action\");\r\n var url = \"/courses/\" + action + \"/?id=\" + id + \"&fileName=\" + name;\r\n document.location = url;\r\n });\r\n\r\n //#endregion\r\n\r\n //#region Private functions ===================================================\r\n\r\n function queueLazyLoadingContent() {\r\n $(\".js-ajaxloader\").each(function () {\r\n var element = $(this);\r\n element.addClass(\"js-loading\");\r\n _queuedContent.push({\r\n target: element,\r\n url: element.attr(\"data-url\"),\r\n oncomplete: element.attr(\"data-oncomplete\"),\r\n });\r\n });\r\n\r\n _queuedContent = _queuedContent.reverse(); // bottom-up order\r\n\r\n setTimeout(loadQueuedContent, _initialLazyLoadingDelay);\r\n }\r\n\r\n function loadQueuedContent() {\r\n if (_queuedContent.length === 0) {\r\n return;\r\n }\r\n\r\n var item = _queuedContent.pop();\r\n $.get(item.url)\r\n .done(function (data) {\r\n item.target.removeClass(\"js-loading\").html(data);\r\n if (typeof item.oncomplete !== \"undefined\") {\r\n eval(item.oncomplete);\r\n }\r\n })\r\n .fail(function (error) {\r\n console.log(error);\r\n })\r\n .always(function () {\r\n loadQueuedContent();\r\n });\r\n }\r\n\r\n //#endregion\r\n})(window.far || (window.far = {}), jQuery);\r\n","import jQuery from \"jquery\";\r\n(function (far, $) {\r\n far.showmore = {};\r\n\r\n //#region Public functions ====================================================\r\n\r\n far.showmore.initialize = function () {\r\n wireShowMoreLinks();\r\n };\r\n\r\n //#endregion\r\n\r\n //#region Private functions ===================================================\r\n\r\n function wireShowMoreLinks() {\r\n $(\".js-showmore\").click(showMore);\r\n }\r\n\r\n function showMore(event) {\r\n event.preventDefault();\r\n\r\n var self = $(this),\r\n id = self.attr(\"id\"),\r\n container = self.data(\"container\"),\r\n src = self.attr(\"data-src\"),\r\n onComplete = self.attr(\"data-oncomplete\"),\r\n loading = self.hasClass(\"disabled\"),\r\n text = self.text();\r\n\r\n if (!loading) {\r\n self.text(\"Laddar...\");\r\n self.addClass(\"disabled\");\r\n\r\n $.get(src)\r\n .done(function (data) {\r\n //HANTERA KNAPPEN\r\n var result = $(data);\r\n\r\n var items = result;\r\n\r\n var button = result.find(\"#\" + id);\r\n\r\n if (button.length > 0) {\r\n self.attr(\"data-src\", button.attr(\"data-src\"));\r\n self.attr(\"href\", button.attr(\"href\"));\r\n } else {\r\n self.remove();\r\n }\r\n\r\n $(container).append(items);\r\n\r\n console.log(onComplete);\r\n if (typeof onComplete !== \"undefined\") {\r\n eval(onComplete);\r\n }\r\n\r\n self.removeClass(\"disabled\");\r\n self.text(text);\r\n\r\n far.buttonAriaState.initialize();\r\n })\r\n .fail(function (err) {\r\n self.removeClass(\"disabled\");\r\n self.text(text);\r\n console.log(err);\r\n });\r\n }\r\n }\r\n\r\n //#endregion\r\n})(window.far || (window.far = {}), jQuery);\r\n","/**\r\n * jquery.mask.js\r\n * @version: v1.14.0\r\n * @author: Igor Escobar\r\n *\r\n * Created by Igor Escobar on 2012-03-10. Please report any bug at http://blog.igorescobar.com\r\n *\r\n * Copyright (c) 2012 Igor Escobar http://blog.igorescobar.com\r\n *\r\n * The MIT License (http://www.opensource.org/licenses/mit-license.php)\r\n *\r\n * Permission is hereby granted, free of charge, to any person\r\n * obtaining a copy of this software and associated documentation\r\n * files (the \"Software\"), to deal in the Software without\r\n * restriction, including without limitation the rights to use,\r\n * copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the\r\n * Software is furnished to do so, subject to the following\r\n * conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\n * OTHER DEALINGS IN THE SOFTWARE.\r\n */\r\n\r\n/* jshint laxbreak: true */\r\n/* global define, jQuery, Zepto */\r\n\r\n'use strict';\r\n\r\n// UMD (Universal Module Definition) patterns for JavaScript modules that work everywhere.\r\n// https://github.com/umdjs/umd/blob/master/jqueryPluginCommonjs.js\r\n(function (factory) {\r\n\r\n if (typeof define === 'function' && define.amd) {\r\n define(['jquery'], factory);\r\n } else if (typeof exports === 'object') {\r\n module.exports = factory(require('jquery'));\r\n } else {\r\n factory(jQuery || Zepto);\r\n }\r\n\r\n}(function ($) {\r\n\r\n var Mask = function (el, mask, options) {\r\n\r\n var p = {\r\n invalid: [],\r\n getCaret: function () {\r\n try {\r\n var sel,\r\n pos = 0,\r\n ctrl = el.get(0),\r\n dSel = document.selection,\r\n cSelStart = ctrl.selectionStart;\r\n\r\n // IE Support\r\n if (dSel && navigator.appVersion.indexOf('MSIE 10') === -1) {\r\n sel = dSel.createRange();\r\n sel.moveStart('character', -p.val().length);\r\n pos = sel.text.length;\r\n }\r\n // Firefox support\r\n else if (cSelStart || cSelStart === '0') {\r\n pos = cSelStart;\r\n }\r\n\r\n return pos;\r\n } catch (e) {}\r\n },\r\n setCaret: function(pos) {\r\n try {\r\n if (el.is(':focus')) {\r\n var range, ctrl = el.get(0);\r\n\r\n // Firefox, WebKit, etc..\r\n if (ctrl.setSelectionRange) {\r\n ctrl.focus();\r\n ctrl.setSelectionRange(pos, pos);\r\n } else { // IE\r\n range = ctrl.createTextRange();\r\n range.collapse(true);\r\n range.moveEnd('character', pos);\r\n range.moveStart('character', pos);\r\n range.select();\r\n }\r\n }\r\n } catch (e) {}\r\n },\r\n events: function() {\r\n el\r\n .on('keydown.mask', function(e) {\r\n el.data('mask-keycode', e.keyCode || e.which);\r\n })\r\n .on($.jMaskGlobals.useInput ? 'input.mask' : 'keyup.mask', p.behaviour)\r\n .on('paste.mask drop.mask', function() {\r\n setTimeout(function() {\r\n el.keydown().keyup();\r\n }, 100);\r\n })\r\n .on('change.mask', function(){\r\n el.data('changed', true);\r\n })\r\n .on('blur.mask', function(){\r\n if (oldValue !== p.val() && !el.data('changed')) {\r\n el.trigger('change');\r\n }\r\n el.data('changed', false);\r\n })\r\n // it's very important that this callback remains in this position\r\n // otherwhise oldValue it's going to work buggy\r\n .on('blur.mask', function() {\r\n oldValue = p.val();\r\n })\r\n // select all text on focus\r\n .on('focus.mask', function (e) {\r\n if (options.selectOnFocus === true) {\r\n $(e.target).select();\r\n }\r\n })\r\n // clear the value if it not complete the mask\r\n .on('focusout.mask', function() {\r\n if (options.clearIfNotMatch && !regexMask.test(p.val())) {\r\n p.val('');\r\n }\r\n });\r\n },\r\n getRegexMask: function() {\r\n var maskChunks = [], translation, pattern, optional, recursive, oRecursive, r;\r\n\r\n for (var i = 0; i < mask.length; i++) {\r\n translation = jMask.translation[mask.charAt(i)];\r\n\r\n if (translation) {\r\n\r\n pattern = translation.pattern.toString().replace(/.{1}$|^.{1}/g, '');\r\n optional = translation.optional;\r\n recursive = translation.recursive;\r\n\r\n if (recursive) {\r\n maskChunks.push(mask.charAt(i));\r\n oRecursive = {digit: mask.charAt(i), pattern: pattern};\r\n } else {\r\n maskChunks.push(!optional && !recursive ? pattern : (pattern + '?'));\r\n }\r\n\r\n } else {\r\n maskChunks.push(mask.charAt(i).replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'));\r\n }\r\n }\r\n\r\n r = maskChunks.join('');\r\n\r\n if (oRecursive) {\r\n r = r.replace(new RegExp('(' + oRecursive.digit + '(.*' + oRecursive.digit + ')?)'), '($1)?')\r\n .replace(new RegExp(oRecursive.digit, 'g'), oRecursive.pattern);\r\n }\r\n\r\n return new RegExp(r);\r\n },\r\n destroyEvents: function() {\r\n el.off(['input', 'keydown', 'keyup', 'paste', 'drop', 'blur', 'focusout', ''].join('.mask '));\r\n },\r\n val: function(v) {\r\n var isInput = el.is('input'),\r\n method = isInput ? 'val' : 'text',\r\n r;\r\n\r\n if (arguments.length > 0) {\r\n if (el[method]() !== v) {\r\n el[method](v);\r\n }\r\n r = el;\r\n } else {\r\n r = el[method]();\r\n }\r\n\r\n return r;\r\n },\r\n getMCharsBeforeCount: function(index, onCleanVal) {\r\n for (var count = 0, i = 0, maskL = mask.length; i < maskL && i < index; i++) {\r\n if (!jMask.translation[mask.charAt(i)]) {\r\n index = onCleanVal ? index + 1 : index;\r\n count++;\r\n }\r\n }\r\n return count;\r\n },\r\n caretPos: function (originalCaretPos, oldLength, newLength, maskDif) {\r\n var translation = jMask.translation[mask.charAt(Math.min(originalCaretPos - 1, mask.length - 1))];\r\n\r\n return !translation ? p.caretPos(originalCaretPos + 1, oldLength, newLength, maskDif)\r\n : Math.min(originalCaretPos + newLength - oldLength - maskDif, newLength);\r\n },\r\n behaviour: function(e) {\r\n e = e || window.event;\r\n p.invalid = [];\r\n\r\n var keyCode = el.data('mask-keycode');\r\n\r\n if ($.inArray(keyCode, jMask.byPassKeys) === -1) {\r\n var caretPos = p.getCaret(),\r\n currVal = p.val(),\r\n currValL = currVal.length,\r\n newVal = p.getMasked(),\r\n newValL = newVal.length,\r\n maskDif = p.getMCharsBeforeCount(newValL - 1) - p.getMCharsBeforeCount(currValL - 1),\r\n changeCaret = caretPos < currValL;\r\n\r\n p.val(newVal);\r\n\r\n if (changeCaret) {\r\n // Avoid adjusting caret on backspace or delete\r\n if (!(keyCode === 8 || keyCode === 46)) {\r\n caretPos = p.caretPos(caretPos, currValL, newValL, maskDif);\r\n }\r\n p.setCaret(caretPos);\r\n }\r\n\r\n return p.callbacks(e);\r\n }\r\n },\r\n getMasked: function(skipMaskChars, val) {\r\n var buf = [],\r\n value = val === undefined ? p.val() : val + '',\r\n m = 0, maskLen = mask.length,\r\n v = 0, valLen = value.length,\r\n offset = 1, addMethod = 'push',\r\n resetPos = -1,\r\n lastMaskChar,\r\n check;\r\n\r\n if (options.reverse) {\r\n addMethod = 'unshift';\r\n offset = -1;\r\n lastMaskChar = 0;\r\n m = maskLen - 1;\r\n v = valLen - 1;\r\n check = function () {\r\n return m > -1 && v > -1;\r\n };\r\n } else {\r\n lastMaskChar = maskLen - 1;\r\n check = function () {\r\n return m < maskLen && v < valLen;\r\n };\r\n }\r\n\r\n while (check()) {\r\n var maskDigit = mask.charAt(m),\r\n valDigit = value.charAt(v),\r\n translation = jMask.translation[maskDigit];\r\n\r\n if (translation) {\r\n if (valDigit.match(translation.pattern)) {\r\n buf[addMethod](valDigit);\r\n if (translation.recursive) {\r\n if (resetPos === -1) {\r\n resetPos = m;\r\n } else if (m === lastMaskChar) {\r\n m = resetPos - offset;\r\n }\r\n\r\n if (lastMaskChar === resetPos) {\r\n m -= offset;\r\n }\r\n }\r\n m += offset;\r\n } else if (translation.optional) {\r\n m += offset;\r\n v -= offset;\r\n } else if (translation.fallback) {\r\n buf[addMethod](translation.fallback);\r\n m += offset;\r\n v -= offset;\r\n } else {\r\n p.invalid.push({p: v, v: valDigit, e: translation.pattern});\r\n }\r\n v += offset;\r\n } else {\r\n if (!skipMaskChars) {\r\n buf[addMethod](maskDigit);\r\n }\r\n\r\n if (valDigit === maskDigit) {\r\n v += offset;\r\n }\r\n\r\n m += offset;\r\n }\r\n }\r\n\r\n var lastMaskCharDigit = mask.charAt(lastMaskChar);\r\n if (maskLen === valLen + 1 && !jMask.translation[lastMaskCharDigit]) {\r\n buf.push(lastMaskCharDigit);\r\n }\r\n\r\n return buf.join('');\r\n },\r\n callbacks: function (e) {\r\n var val = p.val(),\r\n changed = val !== oldValue,\r\n defaultArgs = [val, e, el, options],\r\n callback = function(name, criteria, args) {\r\n if (typeof options[name] === 'function' && criteria) {\r\n options[name].apply(this, args);\r\n }\r\n };\r\n\r\n callback('onChange', changed === true, defaultArgs);\r\n callback('onKeyPress', changed === true, defaultArgs);\r\n callback('onComplete', val.length === mask.length, defaultArgs);\r\n callback('onInvalid', p.invalid.length > 0, [val, e, el, p.invalid, options]);\r\n }\r\n };\r\n\r\n el = $(el);\r\n var jMask = this, oldValue = p.val(), regexMask;\r\n\r\n mask = typeof mask === 'function' ? mask(p.val(), undefined, el, options) : mask;\r\n\r\n\r\n // public methods\r\n jMask.mask = mask;\r\n jMask.options = options;\r\n jMask.remove = function() {\r\n var caret = p.getCaret();\r\n p.destroyEvents();\r\n p.val(jMask.getCleanVal());\r\n p.setCaret(caret - p.getMCharsBeforeCount(caret));\r\n return el;\r\n };\r\n\r\n // get value without mask\r\n jMask.getCleanVal = function() {\r\n return p.getMasked(true);\r\n };\r\n\r\n // get masked value without the value being in the input or element\r\n jMask.getMaskedVal = function(val) {\r\n return p.getMasked(false, val);\r\n };\r\n\r\n jMask.init = function(onlyMask) {\r\n onlyMask = onlyMask || false;\r\n options = options || {};\r\n\r\n jMask.clearIfNotMatch = $.jMaskGlobals.clearIfNotMatch;\r\n jMask.byPassKeys = $.jMaskGlobals.byPassKeys;\r\n jMask.translation = $.extend({}, $.jMaskGlobals.translation, options.translation);\r\n\r\n jMask = $.extend(true, {}, jMask, options);\r\n\r\n regexMask = p.getRegexMask();\r\n\r\n if (onlyMask === false) {\r\n\r\n if (options.placeholder) {\r\n el.attr('placeholder' , options.placeholder);\r\n }\r\n\r\n // this is necessary, otherwise if the user submit the form\r\n // and then press the \"back\" button, the autocomplete will erase\r\n // the data. Works fine on IE9+, FF, Opera, Safari.\r\n if (el.data('mask')) {\r\n el.attr('autocomplete', 'off');\r\n }\r\n\r\n p.destroyEvents();\r\n p.events();\r\n\r\n var caret = p.getCaret();\r\n p.val(p.getMasked());\r\n p.setCaret(caret + p.getMCharsBeforeCount(caret, true));\r\n\r\n } else {\r\n p.events();\r\n p.val(p.getMasked());\r\n }\r\n };\r\n\r\n jMask.init(!el.is('input'));\r\n };\r\n\r\n $.maskWatchers = {};\r\n var HTMLAttributes = function () {\r\n var input = $(this),\r\n options = {},\r\n prefix = 'data-mask-',\r\n mask = input.attr('data-mask');\r\n\r\n if (input.attr(prefix + 'reverse')) {\r\n options.reverse = true;\r\n }\r\n\r\n if (input.attr(prefix + 'clearifnotmatch')) {\r\n options.clearIfNotMatch = true;\r\n }\r\n\r\n if (input.attr(prefix + 'selectonfocus') === 'true') {\r\n options.selectOnFocus = true;\r\n }\r\n\r\n if (notSameMaskObject(input, mask, options)) {\r\n return input.data('mask', new Mask(this, mask, options));\r\n }\r\n },\r\n notSameMaskObject = function(field, mask, options) {\r\n options = options || {};\r\n var maskObject = $(field).data('mask'),\r\n stringify = JSON.stringify,\r\n value = $(field).val() || $(field).text();\r\n try {\r\n if (typeof mask === 'function') {\r\n mask = mask(value);\r\n }\r\n return typeof maskObject !== 'object' || stringify(maskObject.options) !== stringify(options) || maskObject.mask !== mask;\r\n } catch (e) {}\r\n },\r\n eventSupported = function(eventName) {\r\n var el = document.createElement('div'), isSupported;\r\n\r\n eventName = 'on' + eventName;\r\n isSupported = (eventName in el);\r\n\r\n if ( !isSupported ) {\r\n el.setAttribute(eventName, 'return;');\r\n isSupported = typeof el[eventName] === 'function';\r\n }\r\n el = null;\r\n\r\n return isSupported;\r\n };\r\n\r\n $.fn.mask = function(mask, options) {\r\n options = options || {};\r\n var selector = this.selector,\r\n globals = $.jMaskGlobals,\r\n interval = globals.watchInterval,\r\n watchInputs = options.watchInputs || globals.watchInputs,\r\n maskFunction = function() {\r\n if (notSameMaskObject(this, mask, options)) {\r\n return $(this).data('mask', new Mask(this, mask, options));\r\n }\r\n };\r\n\r\n $(this).each(maskFunction);\r\n\r\n if (selector && selector !== '' && watchInputs) {\r\n clearInterval($.maskWatchers[selector]);\r\n $.maskWatchers[selector] = setInterval(function(){\r\n $(document).find(selector).each(maskFunction);\r\n }, interval);\r\n }\r\n return this;\r\n };\r\n\r\n $.fn.masked = function(val) {\r\n return this.data('mask').getMaskedVal(val);\r\n };\r\n\r\n $.fn.unmask = function() {\r\n clearInterval($.maskWatchers[this.selector]);\r\n delete $.maskWatchers[this.selector];\r\n return this.each(function() {\r\n var dataMask = $(this).data('mask');\r\n if (dataMask) {\r\n dataMask.remove().removeData('mask');\r\n }\r\n });\r\n };\r\n\r\n $.fn.cleanVal = function() {\r\n return this.data('mask').getCleanVal();\r\n };\r\n\r\n $.applyDataMask = function(selector) {\r\n selector = selector || $.jMaskGlobals.maskElements;\r\n var $selector = (selector instanceof $) ? selector : $(selector);\r\n $selector.filter($.jMaskGlobals.dataMaskAttr).each(HTMLAttributes);\r\n };\r\n\r\n var globals = {\r\n maskElements: 'input,td,span,div',\r\n dataMaskAttr: '*[data-mask]',\r\n dataMask: true,\r\n watchInterval: 300,\r\n watchInputs: true,\r\n useInput: eventSupported('input'),\r\n watchDataMask: false,\r\n byPassKeys: [9, 16, 17, 18, 36, 37, 38, 39, 40, 91],\r\n translation: {\r\n '0': {pattern: /\\d/},\r\n '9': {pattern: /\\d/, optional: true},\r\n '#': {pattern: /\\d/, recursive: true},\r\n 'A': {pattern: /[a-zA-Z0-9]/},\r\n 'S': {pattern: /[a-zA-Z]/}\r\n }\r\n };\r\n\r\n $.jMaskGlobals = $.jMaskGlobals || {};\r\n globals = $.jMaskGlobals = $.extend(true, {}, globals, $.jMaskGlobals);\r\n\r\n // looking for inputs with data-mask attribute\r\n if (globals.dataMask) {\r\n $.applyDataMask();\r\n }\r\n\r\n setInterval(function() {\r\n if ($.jMaskGlobals.watchDataMask) {\r\n $.applyDataMask();\r\n }\r\n }, globals.watchInterval);\r\n}));\r\n","/*! jQuery Validation Plugin - v1.14.0 - 6/30/2015\r\n * http://jqueryvalidation.org/\r\n * Copyright (c) 2015 Jörn Zaefferer; Licensed MIT */\r\n!function(a){\"function\"==typeof define&&define.amd?define([\"jquery\"],a):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn(\"Nothing selected, can't validate, returning nothing.\"));var c=a.data(this[0],\"validator\");return c?c:(this.attr(\"novalidate\",\"novalidate\"),c=new a.validator(b,this[0]),a.data(this[0],\"validator\",c),c.settings.onsubmit&&(this.on(\"click.validate\",\":submit\",function(b){c.settings.submitHandler&&(c.submitButton=b.target),a(this).hasClass(\"cancel\")&&(c.cancelSubmit=!0),void 0!==a(this).attr(\"formnovalidate\")&&(c.cancelSubmit=!0)}),this.on(\"submit.validate\",function(b){function d(){var d,e;return c.settings.submitHandler?(c.submitButton&&(d=a(\"\").attr(\"name\",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),e=c.settings.submitHandler.call(c,c.currentForm,b),c.submitButton&&d.remove(),void 0!==e?e:!1):!0}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is(\"form\")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,d=d.concat(c.errorList)}),c.errorList=d),b},rules:function(b,c){var d,e,f,g,h,i,j=this[0];if(b)switch(d=a.data(j.form,\"validator\").settings,e=d.rules,f=a.validator.staticRules(j),b){case\"add\":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case\"remove\":return c?(i={},a.each(c.split(/\\s/),function(b,c){i[c]=f[c],delete f[c],\"required\"===c&&a(j).removeAttr(\"aria-required\")}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g),a(j).attr(\"aria-required\",\"true\")),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}),a.extend(a.expr[\":\"],{blank:function(b){return!a.trim(\"\"+a(b).val())},filled:function(b){return!!a.trim(\"\"+a(b).val())},unchecked:function(b){return!a(b).prop(\"checked\")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp(\"\\\\{\"+a+\"\\\\}\",\"g\"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:\"error\",validClass:\"valid\",errorElement:\"label\",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:\":hidden\",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&\"\"===this.elementValue(b)||-1!==a.inArray(c.keyCode,d)||(b.name in this.submitted||b===this.lastElement)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){\"radio\"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){\"radio\"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:\"This field is required.\",remote:\"Please fix this field.\",email:\"Please enter a valid email address.\",url:\"Please enter a valid URL.\",date:\"Please enter a valid date.\",dateISO:\"Please enter a valid date ( ISO ).\",number:\"Please enter a valid number.\",digits:\"Please enter only digits.\",creditcard:\"Please enter a valid credit card number.\",equalTo:\"Please enter the same value again.\",maxlength:a.validator.format(\"Please enter no more than {0} characters.\"),minlength:a.validator.format(\"Please enter at least {0} characters.\"),rangelength:a.validator.format(\"Please enter a value between {0} and {1} characters long.\"),range:a.validator.format(\"Please enter a value between {0} and {1}.\"),max:a.validator.format(\"Please enter a value less than or equal to {0}.\"),min:a.validator.format(\"Please enter a value greater than or equal to {0}.\")},autoCreateRanges:!1,prototype:{init:function(){function b(b){var c=a.data(this.form,\"validator\"),d=\"on\"+b.type.replace(/^validate/,\"\"),e=c.settings;e[d]&&!a(this).is(e.ignore)&&e[d].call(c,this,b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.groups={};a.each(this.settings.groups,function(b,c){\"string\"==typeof c&&(c=c.split(/\\s/)),a.each(c,function(a,c){d[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).on(\"focusin.validate focusout.validate keyup.validate\",\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox']\",b).on(\"click.validate\",\"select, option, [type='radio'], [type='checkbox']\",b),this.settings.invalidHandler&&a(this.currentForm).on(\"invalid-form.validate\",this.settings.invalidHandler),a(this.currentForm).find(\"[required], [data-rule-required], .required\").attr(\"aria-required\",\"true\")},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler(\"invalid-form\",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c=this.clean(b),d=this.validationTargetFor(c),e=!0;return this.lastElement=d,void 0===d?delete this.invalid[c.name]:(this.prepareElement(d),this.currentElements=a(d),e=this.check(d)!==!1,e?delete this.invalid[d.name]:this.invalid[d.name]=!0),a(b).attr(\"aria-invalid\",!e),this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),e},showErrors:function(b){if(b){a.extend(this.errorMap,b),this.errorList=[];for(var c in b)this.errorList.push({message:b[c],element:this.findByName(c)[0]});this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.submitted={},this.lastElement=null,this.prepareForm(),this.hideErrors();var b,c=this.elements().removeData(\"previousValue\").removeAttr(\"aria-invalid\");if(this.settings.unhighlight)for(b=0;c[b];b++)this.settings.unhighlight.call(this,c[b],this.settings.errorClass,\"\");else c.removeClass(this.settings.errorClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(\"\"),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(\":visible\").focus().trigger(\"focusin\")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find(\"input, select, textarea\").not(\":submit, :reset, :image, :disabled\").not(this.settings.ignore).filter(function(){return!this.name&&b.settings.debug&&window.console&&console.error(\"%o has no name assigned\",this),this.name in c||!b.objectLength(a(this).rules())?!1:(c[this.name]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(\" \").join(\".\");return a(this.settings.errorElement+\".\"+b,this.errorContext)},reset:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([]),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d=a(b),e=b.type;return\"radio\"===e||\"checkbox\"===e?this.findByName(b.name).filter(\":checked\").val():\"number\"===e&&\"undefined\"!=typeof b.validity?b.validity.badInput?!1:d.val():(c=d.val(),\"string\"==typeof c?c.replace(/\\r/g,\"\"):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f=a(b).rules(),g=a.map(f,function(a,b){return b}).length,h=!1,i=this.elementValue(b);for(d in f){e={method:d,parameters:f[d]};try{if(c=a.validator.methods[d].call(this,i,b,e.parameters),\"dependency-mismatch\"===c&&1===g){h=!0;continue}if(h=!1,\"pending\"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(j){throw this.settings.debug&&window.console&&console.log(\"Exception occurred when checking element \"+b.id+\", check the '\"+e.method+\"' method.\",j),j instanceof TypeError&&(j.message+=\". Exception occurred when checking element \"+b.id+\", check the '\"+e.method+\"' method.\"),j}}if(!h)return this.objectLength(f)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data(\"msg\"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data(\"msg\")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;aWarning: No message defined for \"+b.name+\"\")},formatAndAdd:function(b,c){var d=this.defaultMessage(b,c.method),e=/\\$?\\{(\\d+)\\}/g;\"function\"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,\"{$1}\"),c.parameters)),this.errorList.push({message:d,element:b,method:c.method}),this.errorMap[b.name]=d,this.submitted[b.name]=d},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g=this.errorsFor(b),h=this.idOrName(b),i=a(b).attr(\"aria-describedby\");g.length?(g.removeClass(this.settings.validClass).addClass(this.settings.errorClass),g.html(c)):(g=a(\"<\"+this.settings.errorElement+\">\").attr(\"id\",h+\"-error\").addClass(this.settings.errorClass).html(c||\"\"),d=g,this.settings.wrapper&&(d=g.hide().show().wrap(\"<\"+this.settings.wrapper+\"/>\").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement(d,a(b)):d.insertAfter(b),g.is(\"label\")?g.attr(\"for\",h):0===g.parents(\"label[for='\"+h+\"']\").length&&(f=g.attr(\"id\").replace(/(:|\\.|\\[|\\]|\\$)/g,\"\\\\$1\"),i?i.match(new RegExp(\"\\\\b\"+f+\"\\\\b\"))||(i+=\" \"+f):i=f,a(b).attr(\"aria-describedby\",i),e=this.groups[b.name],e&&a.each(this.groups,function(b,c){c===e&&a(\"[name='\"+b+\"']\",this.currentForm).attr(\"aria-describedby\",g.attr(\"id\"))}))),!c&&this.settings.success&&(g.text(\"\"),\"string\"==typeof this.settings.success?g.addClass(this.settings.success):this.settings.success(g,b)),this.toShow=this.toShow.add(g)},errorsFor:function(b){var c=this.idOrName(b),d=a(b).attr(\"aria-describedby\"),e=\"label[for='\"+c+\"'], label[for='\"+c+\"'] *\";return d&&(e=e+\", #\"+d.replace(/\\s+/g,\", #\")),this.errors().filter(e)},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find(\"[name='\"+b+\"']\")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case\"select\":return a(\"option:selected\",c).length;case\"input\":if(this.checkable(c))return this.findByName(c.name).filter(\":checked\").length}return b.length},depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):!0},dependTypes:{\"boolean\":function(a){return a},string:function(b,c){return!!a(b,c.form).length},\"function\":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&\"dependency-mismatch\"},startRequest:function(a){this.pending[a.name]||(this.pendingRequest++,this.pending[a.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler(\"invalid-form\",[this]),this.formSubmitted=!1)},previousValue:function(b){return a.data(b,\"previousValue\")||a.data(b,\"previousValue\",{old:null,valid:!0,message:this.defaultMessage(b,\"remote\")})},destroy:function(){this.resetForm(),a(this.currentForm).off(\".validate\").removeData(\"validator\")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr(\"class\");return d&&a.each(d.split(\" \"),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&\"range\"!==b&&(a[c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute(\"type\");for(c in a.validator.methods)\"required\"===c?(d=b.getAttribute(c),\"\"===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute(\"type\");for(c in a.validator.methods)d=f.data(\"rule\"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,\"validator\");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case\"string\":f=!!a(e.depends,c.form).length;break;case\"function\":f=e.depends.call(c,c)}f?b[d]=void 0!==e.param?e.param:!0:delete b[d]}}),a.each(b,function(d,e){b[d]=a.isFunction(e)?e(c):e}),a.each([\"minlength\",\"maxlength\"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each([\"rangelength\",\"range\"],function(){var c;b[this]&&(a.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:\"string\"==typeof b[this]&&(c=b[this].replace(/[\\[\\]]/g,\"\").split(/[\\s,]+/),b[this]=[Number(c[0]),Number(c[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if(\"string\"==typeof b){var c={};a.each(b.split(/\\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return\"dependency-mismatch\";if(\"select\"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:b.length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})).?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a).toString())},dateISO:function(a,b){return this.optional(b)||/^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\\d+$/.test(a)},creditcard:function(a,b){if(this.optional(b))return\"dependency-mismatch\";if(/[^0-9 \\-]+/.test(a))return!1;var c,d,e=0,f=0,g=!1;if(a=a.replace(/\\D/g,\"\"),a.length<13||a.length>19)return!1;for(c=a.length-1;c>=0;c--)d=a.charAt(c),f=parseInt(d,10),g&&(f*=2)>9&&(f-=9),e+=f,g=!g;return e%10===0},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||d>=e},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||c>=a},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.off(\".validate-equalTo\").on(\"blur.validate-equalTo\",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d){if(this.optional(c))return\"dependency-mismatch\";var e,f,g=this.previousValue(c);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),g.originalMessage=this.settings.messages[c.name].remote,this.settings.messages[c.name].remote=g.message,d=\"string\"==typeof d&&{url:d}||d,g.old===b?g.valid:(g.old=b,e=this,this.startRequest(c),f={},f[c.name]=b,a.ajax(a.extend(!0,{mode:\"abort\",port:\"validate\"+c.name,dataType:\"json\",data:f,context:e.currentForm,success:function(d){var f,h,i,j=d===!0||\"true\"===d;e.settings.messages[c.name].remote=g.originalMessage,j?(i=e.formSubmitted,e.prepareElement(c),e.formSubmitted=i,e.successList.push(c),delete e.invalid[c.name],e.showErrors()):(f={},h=d||e.defaultMessage(c,\"remote\"),f[c.name]=g.message=a.isFunction(h)?h(b):h,e.invalid[c.name]=!0,e.showErrors(f)),g.valid=j,e.stopRequest(c,j)}},d)),\"pending\")}}});var b,c={};a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,d){var e=a.port;\"abort\"===a.mode&&(c[e]&&c[e].abort(),c[e]=d)}):(b=a.ajax,a.ajax=function(d){var e=(\"mode\"in d?d:a.ajaxSettings).mode,f=(\"port\"in d?d:a.ajaxSettings).port;return\"abort\"===e?(c[f]&&c[f].abort(),c[f]=b.apply(this,arguments),c[f]):b.apply(this,arguments)})});","/*!\r\n * pickadate.js v3.5.6, 2015/04/20\r\n * By Amsul, http://amsul.ca\r\n * Hosted on http://amsul.github.io/pickadate.js\r\n * Licensed under MIT\r\n */\r\n\r\n(function ( factory ) {\r\n\r\n // AMD.\r\n if ( typeof define == 'function' && define.amd )\r\n define( 'picker', ['jquery'], factory )\r\n\r\n // Node.js/browserify.\r\n else if ( typeof exports == 'object' )\r\n module.exports = factory( require('jquery') )\r\n\r\n // Browser globals.\r\n else this.Picker = factory( jQuery )\r\n\r\n}(function( $ ) {\r\n\r\nvar $window = $( window )\r\nvar $document = $( document )\r\nvar $html = $( document.documentElement )\r\nvar supportsTransitions = document.documentElement.style.transition != null\r\n\r\n\r\n/**\r\n * The picker constructor that creates a blank picker.\r\n */\r\nfunction PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {\r\n\r\n // If there’s no element, return the picker constructor.\r\n if ( !ELEMENT ) return PickerConstructor\r\n\r\n\r\n var\r\n IS_DEFAULT_THEME = false,\r\n\r\n\r\n // The state of the picker.\r\n STATE = {\r\n id: ELEMENT.id || 'P' + Math.abs( ~~(Math.random() * new Date()) )\r\n },\r\n\r\n\r\n // Merge the defaults and options passed.\r\n SETTINGS = COMPONENT ? $.extend( true, {}, COMPONENT.defaults, OPTIONS ) : OPTIONS || {},\r\n\r\n\r\n // Merge the default classes with the settings classes.\r\n CLASSES = $.extend( {}, PickerConstructor.klasses(), SETTINGS.klass ),\r\n\r\n\r\n // The element node wrapper into a jQuery object.\r\n $ELEMENT = $( ELEMENT ),\r\n\r\n\r\n // Pseudo picker constructor.\r\n PickerInstance = function() {\r\n return this.start()\r\n },\r\n\r\n\r\n // The picker prototype.\r\n P = PickerInstance.prototype = {\r\n\r\n constructor: PickerInstance,\r\n\r\n $node: $ELEMENT,\r\n\r\n\r\n /**\r\n * Initialize everything\r\n */\r\n start: function() {\r\n\r\n // If it’s already started, do nothing.\r\n if ( STATE && STATE.start ) return P\r\n\r\n\r\n // Update the picker states.\r\n STATE.methods = {}\r\n STATE.start = true\r\n STATE.open = false\r\n STATE.type = ELEMENT.type\r\n\r\n\r\n // Confirm focus state, convert into text input to remove UA stylings,\r\n // and set as readonly to prevent keyboard popup.\r\n ELEMENT.autofocus = ELEMENT == getActiveElement()\r\n ELEMENT.readOnly = !SETTINGS.editable\r\n ELEMENT.id = ELEMENT.id || STATE.id\r\n if ( ELEMENT.type != 'text' ) {\r\n ELEMENT.type = 'text'\r\n }\r\n\r\n\r\n // Create a new picker component with the settings.\r\n P.component = new COMPONENT(P, SETTINGS)\r\n\r\n\r\n // Create the picker root and then prepare it.\r\n P.$root = $( '
' )\r\n prepareElementRoot()\r\n\r\n\r\n // Create the picker holder and then prepare it.\r\n P.$holder = $( createWrappedComponent() ).appendTo( P.$root )\r\n prepareElementHolder()\r\n\r\n\r\n // If there’s a format for the hidden input element, create the element.\r\n if ( SETTINGS.formatSubmit ) {\r\n prepareElementHidden()\r\n }\r\n\r\n\r\n // Prepare the input element.\r\n prepareElement()\r\n\r\n\r\n // Insert the hidden input as specified in the settings.\r\n if ( SETTINGS.containerHidden ) $( SETTINGS.containerHidden ).append( P._hidden )\r\n else $ELEMENT.after( P._hidden )\r\n\r\n\r\n // Insert the root as specified in the settings.\r\n if ( SETTINGS.container ) $( SETTINGS.container ).append( P.$root )\r\n else $ELEMENT.after( P.$root )\r\n\r\n\r\n // Bind the default component and settings events.\r\n P.on({\r\n start: P.component.onStart,\r\n render: P.component.onRender,\r\n stop: P.component.onStop,\r\n open: P.component.onOpen,\r\n close: P.component.onClose,\r\n set: P.component.onSet\r\n }).on({\r\n start: SETTINGS.onStart,\r\n render: SETTINGS.onRender,\r\n stop: SETTINGS.onStop,\r\n open: SETTINGS.onOpen,\r\n close: SETTINGS.onClose,\r\n set: SETTINGS.onSet\r\n })\r\n\r\n\r\n // Once we’re all set, check the theme in use.\r\n IS_DEFAULT_THEME = isUsingDefaultTheme( P.$holder[0] )\r\n\r\n\r\n // If the element has autofocus, open the picker.\r\n if ( ELEMENT.autofocus ) {\r\n P.open()\r\n }\r\n\r\n\r\n // Trigger queued the “start” and “render” events.\r\n return P.trigger( 'start' ).trigger( 'render' )\r\n }, //start\r\n\r\n\r\n /**\r\n * Render a new picker\r\n */\r\n render: function( entireComponent ) {\r\n\r\n // Insert a new component holder in the root or box.\r\n if ( entireComponent ) {\r\n P.$holder = $( createWrappedComponent() )\r\n prepareElementHolder()\r\n P.$root.html( P.$holder )\r\n }\r\n else P.$root.find( '.' + CLASSES.box ).html( P.component.nodes( STATE.open ) )\r\n\r\n // Trigger the queued “render” events.\r\n return P.trigger( 'render' )\r\n }, //render\r\n\r\n\r\n /**\r\n * Destroy everything\r\n */\r\n stop: function() {\r\n\r\n // If it’s already stopped, do nothing.\r\n if ( !STATE.start ) return P\r\n\r\n // Then close the picker.\r\n P.close()\r\n\r\n // Remove the hidden field.\r\n if ( P._hidden ) {\r\n P._hidden.parentNode.removeChild( P._hidden )\r\n }\r\n\r\n // Remove the root.\r\n P.$root.remove()\r\n\r\n // Remove the input class, remove the stored data, and unbind\r\n // the events (after a tick for IE - see `P.close`).\r\n $ELEMENT.removeClass( CLASSES.input ).removeData( NAME )\r\n setTimeout( function() {\r\n $ELEMENT.off( '.' + STATE.id )\r\n }, 0)\r\n\r\n // Restore the element state\r\n ELEMENT.type = STATE.type\r\n ELEMENT.readOnly = false\r\n\r\n // Trigger the queued “stop” events.\r\n P.trigger( 'stop' )\r\n\r\n // Reset the picker states.\r\n STATE.methods = {}\r\n STATE.start = false\r\n\r\n return P\r\n }, //stop\r\n\r\n\r\n /**\r\n * Open up the picker\r\n */\r\n open: function( dontGiveFocus ) {\r\n\r\n // If it’s already open, do nothing.\r\n if ( STATE.open ) return P\r\n\r\n // Add the “active” class.\r\n $ELEMENT.addClass( CLASSES.active )\r\n aria( ELEMENT, 'expanded', true )\r\n\r\n // * A Firefox bug, when `html` has `overflow:hidden`, results in\r\n // killing transitions :(. So add the “opened” state on the next tick.\r\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289\r\n setTimeout( function() {\r\n\r\n // Add the “opened” class to the picker root.\r\n P.$root.addClass( CLASSES.opened )\r\n aria( P.$root[0], 'hidden', false )\r\n\r\n }, 0 )\r\n\r\n // If we have to give focus, bind the element and doc events.\r\n if ( dontGiveFocus !== false ) {\r\n\r\n // Set it as open.\r\n STATE.open = true\r\n\r\n // Prevent the page from scrolling.\r\n if ( IS_DEFAULT_THEME ) {\r\n $html.\r\n css( 'overflow', 'hidden' ).\r\n css( 'padding-right', '+=' + getScrollbarWidth() )\r\n }\r\n\r\n // Pass focus to the root element’s jQuery object.\r\n focusPickerOnceOpened()\r\n\r\n // Bind the document events.\r\n $document.on( 'click.' + STATE.id + ' focusin.' + STATE.id, function( event ) {\r\n\r\n var target = event.target\r\n\r\n // If the target of the event is not the element, close the picker picker.\r\n // * Don’t worry about clicks or focusins on the root because those don’t bubble up.\r\n // Also, for Firefox, a click on an `option` element bubbles up directly\r\n // to the doc. So make sure the target wasn't the doc.\r\n // * In Firefox stopPropagation() doesn’t prevent right-click events from bubbling,\r\n // which causes the picker to unexpectedly close when right-clicking it. So make\r\n // sure the event wasn’t a right-click.\r\n if ( target != ELEMENT && target != document && event.which != 3 ) {\r\n\r\n // If the target was the holder that covers the screen,\r\n // keep the element focused to maintain tabindex.\r\n P.close( target === P.$holder[0] )\r\n }\r\n\r\n }).on( 'keydown.' + STATE.id, function( event ) {\r\n\r\n var\r\n // Get the keycode.\r\n keycode = event.keyCode,\r\n\r\n // Translate that to a selection change.\r\n keycodeToMove = P.component.key[ keycode ],\r\n\r\n // Grab the target.\r\n target = event.target\r\n\r\n\r\n // On escape, close the picker and give focus.\r\n if ( keycode == 27 ) {\r\n P.close( true )\r\n }\r\n\r\n\r\n // Check if there is a key movement or “enter” keypress on the element.\r\n else if ( target == P.$holder[0] && ( keycodeToMove || keycode == 13 ) ) {\r\n\r\n // Prevent the default action to stop page movement.\r\n event.preventDefault()\r\n\r\n // Trigger the key movement action.\r\n if ( keycodeToMove ) {\r\n PickerConstructor._.trigger( P.component.key.go, P, [ PickerConstructor._.trigger( keycodeToMove ) ] )\r\n }\r\n\r\n // On “enter”, if the highlighted item isn’t disabled, set the value and close.\r\n else if ( !P.$root.find( '.' + CLASSES.highlighted ).hasClass( CLASSES.disabled ) ) {\r\n P.set( 'select', P.component.item.highlight )\r\n if ( SETTINGS.closeOnSelect ) {\r\n P.close( true )\r\n }\r\n }\r\n }\r\n\r\n\r\n // If the target is within the root and “enter” is pressed,\r\n // prevent the default action and trigger a click on the target instead.\r\n else if ( $.contains( P.$root[0], target ) && keycode == 13 ) {\r\n event.preventDefault()\r\n target.click()\r\n }\r\n })\r\n }\r\n\r\n // Trigger the queued “open” events.\r\n return P.trigger( 'open' )\r\n }, //open\r\n\r\n\r\n /**\r\n * Close the picker\r\n */\r\n close: function( giveFocus ) {\r\n\r\n // If we need to give focus, do it before changing states.\r\n if ( giveFocus ) {\r\n if ( SETTINGS.editable ) {\r\n ELEMENT.focus()\r\n }\r\n else {\r\n // ....ah yes! It would’ve been incomplete without a crazy workaround for IE :|\r\n // The focus is triggered *after* the close has completed - causing it\r\n // to open again. So unbind and rebind the event at the next tick.\r\n P.$holder.off( 'focus.toOpen' ).focus()\r\n setTimeout( function() {\r\n P.$holder.on( 'focus.toOpen', handleFocusToOpenEvent )\r\n }, 0 )\r\n }\r\n }\r\n\r\n // Remove the “active” class.\r\n $ELEMENT.removeClass( CLASSES.active )\r\n aria( ELEMENT, 'expanded', false )\r\n\r\n // * A Firefox bug, when `html` has `overflow:hidden`, results in\r\n // killing transitions :(. So remove the “opened” state on the next tick.\r\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289\r\n setTimeout( function() {\r\n\r\n // Remove the “opened” and “focused” class from the picker root.\r\n P.$root.removeClass( CLASSES.opened + ' ' + CLASSES.focused )\r\n aria( P.$root[0], 'hidden', true )\r\n\r\n }, 0 )\r\n\r\n // If it’s already closed, do nothing more.\r\n if ( !STATE.open ) return P\r\n\r\n // Set it as closed.\r\n STATE.open = false\r\n\r\n // Allow the page to scroll.\r\n if ( IS_DEFAULT_THEME ) {\r\n $html.\r\n css( 'overflow', '' ).\r\n css( 'padding-right', '-=' + getScrollbarWidth() )\r\n }\r\n\r\n // Unbind the document events.\r\n $document.off( '.' + STATE.id )\r\n\r\n // Trigger the queued “close” events.\r\n return P.trigger( 'close' )\r\n }, //close\r\n\r\n\r\n /**\r\n * Clear the values\r\n */\r\n clear: function( options ) {\r\n return P.set( 'clear', null, options )\r\n }, //clear\r\n\r\n\r\n /**\r\n * Set something\r\n */\r\n set: function( thing, value, options ) {\r\n\r\n var thingItem, thingValue,\r\n thingIsObject = $.isPlainObject( thing ),\r\n thingObject = thingIsObject ? thing : {}\r\n\r\n // Make sure we have usable options.\r\n options = thingIsObject && $.isPlainObject( value ) ? value : options || {}\r\n\r\n if ( thing ) {\r\n\r\n // If the thing isn’t an object, make it one.\r\n if ( !thingIsObject ) {\r\n thingObject[ thing ] = value\r\n }\r\n\r\n // Go through the things of items to set.\r\n for ( thingItem in thingObject ) {\r\n\r\n // Grab the value of the thing.\r\n thingValue = thingObject[ thingItem ]\r\n\r\n // First, if the item exists and there’s a value, set it.\r\n if ( thingItem in P.component.item ) {\r\n if ( thingValue === undefined ) thingValue = null\r\n P.component.set( thingItem, thingValue, options )\r\n }\r\n\r\n // Then, check to update the element value and broadcast a change.\r\n if ( thingItem == 'select' || thingItem == 'clear' ) {\r\n $ELEMENT.\r\n val( thingItem == 'clear' ? '' : P.get( thingItem, SETTINGS.format ) ).\r\n trigger( 'change' )\r\n }\r\n }\r\n\r\n // Render a new picker.\r\n P.render()\r\n }\r\n\r\n // When the method isn’t muted, trigger queued “set” events and pass the `thingObject`.\r\n return options.muted ? P : P.trigger( 'set', thingObject )\r\n }, //set\r\n\r\n\r\n /**\r\n * Get something\r\n */\r\n get: function( thing, format ) {\r\n\r\n // Make sure there’s something to get.\r\n thing = thing || 'value'\r\n\r\n // If a picker state exists, return that.\r\n if ( STATE[ thing ] != null ) {\r\n return STATE[ thing ]\r\n }\r\n\r\n // Return the submission value, if that.\r\n if ( thing == 'valueSubmit' ) {\r\n if ( P._hidden ) {\r\n return P._hidden.value\r\n }\r\n thing = 'value'\r\n }\r\n\r\n // Return the value, if that.\r\n if ( thing == 'value' ) {\r\n return ELEMENT.value\r\n }\r\n\r\n // Check if a component item exists, return that.\r\n if ( thing in P.component.item ) {\r\n if ( typeof format == 'string' ) {\r\n var thingValue = P.component.get( thing )\r\n return thingValue ?\r\n PickerConstructor._.trigger(\r\n P.component.formats.toString,\r\n P.component,\r\n [ format, thingValue ]\r\n ) : ''\r\n }\r\n return P.component.get( thing )\r\n }\r\n }, //get\r\n\r\n\r\n\r\n /**\r\n * Bind events on the things.\r\n */\r\n on: function( thing, method, internal ) {\r\n\r\n var thingName, thingMethod,\r\n thingIsObject = $.isPlainObject( thing ),\r\n thingObject = thingIsObject ? thing : {}\r\n\r\n if ( thing ) {\r\n\r\n // If the thing isn’t an object, make it one.\r\n if ( !thingIsObject ) {\r\n thingObject[ thing ] = method\r\n }\r\n\r\n // Go through the things to bind to.\r\n for ( thingName in thingObject ) {\r\n\r\n // Grab the method of the thing.\r\n thingMethod = thingObject[ thingName ]\r\n\r\n // If it was an internal binding, prefix it.\r\n if ( internal ) {\r\n thingName = '_' + thingName\r\n }\r\n\r\n // Make sure the thing methods collection exists.\r\n STATE.methods[ thingName ] = STATE.methods[ thingName ] || []\r\n\r\n // Add the method to the relative method collection.\r\n STATE.methods[ thingName ].push( thingMethod )\r\n }\r\n }\r\n\r\n return P\r\n }, //on\r\n\r\n\r\n\r\n /**\r\n * Unbind events on the things.\r\n */\r\n off: function() {\r\n var i, thingName,\r\n names = arguments;\r\n for ( i = 0, namesCount = names.length; i < namesCount; i += 1 ) {\r\n thingName = names[i]\r\n if ( thingName in STATE.methods ) {\r\n delete STATE.methods[thingName]\r\n }\r\n }\r\n return P\r\n },\r\n\r\n\r\n /**\r\n * Fire off method events.\r\n */\r\n trigger: function( name, data ) {\r\n var _trigger = function( name ) {\r\n var methodList = STATE.methods[ name ]\r\n if ( methodList ) {\r\n methodList.map( function( method ) {\r\n PickerConstructor._.trigger( method, P, [ data ] )\r\n })\r\n }\r\n }\r\n _trigger( '_' + name )\r\n _trigger( name )\r\n return P\r\n } //trigger\r\n } //PickerInstance.prototype\r\n\r\n\r\n /**\r\n * Wrap the picker holder components together.\r\n */\r\n function createWrappedComponent() {\r\n\r\n // Create a picker wrapper holder\r\n return PickerConstructor._.node( 'div',\r\n\r\n // Create a picker wrapper node\r\n PickerConstructor._.node( 'div',\r\n\r\n // Create a picker frame\r\n PickerConstructor._.node( 'div',\r\n\r\n // Create a picker box node\r\n PickerConstructor._.node( 'div',\r\n\r\n // Create the components nodes.\r\n P.component.nodes( STATE.open ),\r\n\r\n // The picker box class\r\n CLASSES.box\r\n ),\r\n\r\n // Picker wrap class\r\n CLASSES.wrap\r\n ),\r\n\r\n // Picker frame class\r\n CLASSES.frame\r\n ),\r\n\r\n // Picker holder class\r\n CLASSES.holder,\r\n\r\n 'tabindex=\"-1\"'\r\n ) //endreturn\r\n } //createWrappedComponent\r\n\r\n\r\n\r\n /**\r\n * Prepare the input element with all bindings.\r\n */\r\n function prepareElement() {\r\n\r\n $ELEMENT.\r\n\r\n // Store the picker data by component name.\r\n data(NAME, P).\r\n\r\n // Add the “input” class name.\r\n addClass(CLASSES.input).\r\n\r\n // If there’s a `data-value`, update the value of the element.\r\n val( $ELEMENT.data('value') ?\r\n P.get('select', SETTINGS.format) :\r\n ELEMENT.value\r\n )\r\n\r\n\r\n // Only bind keydown events if the element isn’t editable.\r\n if ( !SETTINGS.editable ) {\r\n\r\n $ELEMENT.\r\n\r\n // On focus/click, open the picker.\r\n on( 'focus.' + STATE.id + ' click.' + STATE.id, function(event) {\r\n event.preventDefault()\r\n P.open()\r\n }).\r\n\r\n // Handle keyboard event based on the picker being opened or not.\r\n on( 'keydown.' + STATE.id, handleKeydownEvent )\r\n }\r\n\r\n\r\n // Update the aria attributes.\r\n aria(ELEMENT, {\r\n haspopup: true,\r\n expanded: false,\r\n readonly: false,\r\n owns: ELEMENT.id + '_root'\r\n })\r\n }\r\n\r\n\r\n /**\r\n * Prepare the root picker element with all bindings.\r\n */\r\n function prepareElementRoot() {\r\n aria( P.$root[0], 'hidden', true )\r\n }\r\n\r\n\r\n /**\r\n * Prepare the holder picker element with all bindings.\r\n */\r\n function prepareElementHolder() {\r\n\r\n P.$holder.\r\n\r\n on({\r\n\r\n // For iOS8.\r\n keydown: handleKeydownEvent,\r\n\r\n 'focus.toOpen': handleFocusToOpenEvent,\r\n\r\n blur: function() {\r\n // Remove the “target” class.\r\n $ELEMENT.removeClass( CLASSES.target )\r\n },\r\n\r\n // When something within the holder is focused, stop from bubbling\r\n // to the doc and remove the “focused” state from the root.\r\n focusin: function( event ) {\r\n P.$root.removeClass( CLASSES.focused )\r\n event.stopPropagation()\r\n },\r\n\r\n // When something within the holder is clicked, stop it\r\n // from bubbling to the doc.\r\n 'mousedown click': function( event ) {\r\n\r\n var target = event.target\r\n\r\n // Make sure the target isn’t the root holder so it can bubble up.\r\n if ( target != P.$holder[0] ) {\r\n\r\n event.stopPropagation()\r\n\r\n // * For mousedown events, cancel the default action in order to\r\n // prevent cases where focus is shifted onto external elements\r\n // when using things like jQuery mobile or MagnificPopup (ref: #249 & #120).\r\n // Also, for Firefox, don’t prevent action on the `option` element.\r\n if ( event.type == 'mousedown' && !$( target ).is( 'input, select, textarea, button, option' )) {\r\n\r\n event.preventDefault()\r\n\r\n // Re-focus onto the holder so that users can click away\r\n // from elements focused within the picker.\r\n P.$holder[0].focus()\r\n }\r\n }\r\n }\r\n\r\n }).\r\n\r\n // If there’s a click on an actionable element, carry out the actions.\r\n on( 'click', '[data-pick], [data-nav], [data-clear], [data-close]', function() {\r\n\r\n var $target = $( this ),\r\n targetData = $target.data(),\r\n targetDisabled = $target.hasClass( CLASSES.navDisabled ) || $target.hasClass( CLASSES.disabled ),\r\n\r\n // * For IE, non-focusable elements can be active elements as well\r\n // (http://stackoverflow.com/a/2684561).\r\n activeElement = getActiveElement()\r\n activeElement = activeElement && ( activeElement.type || activeElement.href )\r\n\r\n // If it’s disabled or nothing inside is actively focused, re-focus the element.\r\n if ( targetDisabled || activeElement && !$.contains( P.$root[0], activeElement ) ) {\r\n P.$holder[0].focus()\r\n }\r\n\r\n // If something is superficially changed, update the `highlight` based on the `nav`.\r\n if ( !targetDisabled && targetData.nav ) {\r\n P.set( 'highlight', P.component.item.highlight, { nav: targetData.nav } )\r\n }\r\n\r\n // If something is picked, set `select` then close with focus.\r\n else if ( !targetDisabled && 'pick' in targetData ) {\r\n P.set( 'select', targetData.pick )\r\n if ( SETTINGS.closeOnSelect ) {\r\n P.close( true )\r\n }\r\n }\r\n\r\n // If a “clear” button is pressed, empty the values and close with focus.\r\n else if ( targetData.clear ) {\r\n P.clear()\r\n if ( SETTINGS.closeOnClear ) {\r\n P.close( true )\r\n }\r\n }\r\n\r\n else if ( targetData.close ) {\r\n P.close( true )\r\n }\r\n\r\n }) //P.$holder\r\n\r\n }\r\n\r\n\r\n /**\r\n * Prepare the hidden input element along with all bindings.\r\n */\r\n function prepareElementHidden() {\r\n\r\n var name\r\n\r\n if ( SETTINGS.hiddenName === true ) {\r\n name = ELEMENT.name\r\n ELEMENT.name = ''\r\n }\r\n else {\r\n name = [\r\n typeof SETTINGS.hiddenPrefix == 'string' ? SETTINGS.hiddenPrefix : '',\r\n typeof SETTINGS.hiddenSuffix == 'string' ? SETTINGS.hiddenSuffix : '_submit'\r\n ]\r\n name = name[0] + ELEMENT.name + name[1]\r\n }\r\n\r\n P._hidden = $(\r\n ''\r\n )[0]\r\n\r\n $ELEMENT.\r\n\r\n // If the value changes, update the hidden input with the correct format.\r\n on('change.' + STATE.id, function() {\r\n P._hidden.value = ELEMENT.value ?\r\n P.get('select', SETTINGS.formatSubmit) :\r\n ''\r\n })\r\n }\r\n\r\n\r\n // Wait for transitions to end before focusing the holder. Otherwise, while\r\n // using the `container` option, the view jumps to the container.\r\n function focusPickerOnceOpened() {\r\n\r\n if (IS_DEFAULT_THEME && supportsTransitions) {\r\n P.$holder.find('.' + CLASSES.frame).one('transitionend', function() {\r\n P.$holder[0].focus()\r\n })\r\n }\r\n else {\r\n P.$holder[0].focus()\r\n }\r\n }\r\n\r\n\r\n function handleFocusToOpenEvent(event) {\r\n\r\n // Stop the event from propagating to the doc.\r\n event.stopPropagation()\r\n\r\n // Add the “target” class.\r\n $ELEMENT.addClass( CLASSES.target )\r\n\r\n // Add the “focused” class to the root.\r\n P.$root.addClass( CLASSES.focused )\r\n\r\n // And then finally open the picker.\r\n P.open()\r\n }\r\n\r\n\r\n // For iOS8.\r\n function handleKeydownEvent( event ) {\r\n\r\n var keycode = event.keyCode,\r\n\r\n // Check if one of the delete keys was pressed.\r\n isKeycodeDelete = /^(8|46)$/.test(keycode)\r\n\r\n // For some reason IE clears the input value on “escape”.\r\n if ( keycode == 27 ) {\r\n P.close( true )\r\n return false\r\n }\r\n\r\n // Check if `space` or `delete` was pressed or the picker is closed with a key movement.\r\n if ( keycode == 32 || isKeycodeDelete || !STATE.open && P.component.key[keycode] ) {\r\n\r\n // Prevent it from moving the page and bubbling to doc.\r\n event.preventDefault()\r\n event.stopPropagation()\r\n\r\n // If `delete` was pressed, clear the values and close the picker.\r\n // Otherwise open the picker.\r\n if ( isKeycodeDelete ) { P.clear().close() }\r\n else { P.open() }\r\n }\r\n }\r\n\r\n\r\n // Return a new picker instance.\r\n return new PickerInstance()\r\n} //PickerConstructor\r\n\r\n\r\n\r\n/**\r\n * The default classes and prefix to use for the HTML classes.\r\n */\r\nPickerConstructor.klasses = function( prefix ) {\r\n prefix = prefix || 'picker'\r\n return {\r\n\r\n picker: prefix,\r\n opened: prefix + '--opened',\r\n focused: prefix + '--focused',\r\n\r\n input: prefix + '__input',\r\n active: prefix + '__input--active',\r\n target: prefix + '__input--target',\r\n\r\n holder: prefix + '__holder',\r\n\r\n frame: prefix + '__frame',\r\n wrap: prefix + '__wrap',\r\n\r\n box: prefix + '__box'\r\n }\r\n} //PickerConstructor.klasses\r\n\r\n\r\n\r\n/**\r\n * Check if the default theme is being used.\r\n */\r\nfunction isUsingDefaultTheme( element ) {\r\n\r\n var theme,\r\n prop = 'position'\r\n\r\n // For IE.\r\n if ( element.currentStyle ) {\r\n theme = element.currentStyle[prop]\r\n }\r\n\r\n // For normal browsers.\r\n else if ( window.getComputedStyle ) {\r\n theme = getComputedStyle( element )[prop]\r\n }\r\n\r\n return theme == 'fixed'\r\n}\r\n\r\n\r\n\r\n/**\r\n * Get the width of the browser’s scrollbar.\r\n * Taken from: https://github.com/VodkaBears/Remodal/blob/master/src/jquery.remodal.js\r\n */\r\nfunction getScrollbarWidth() {\r\n\r\n if ( $html.height() <= $window.height() ) {\r\n return 0\r\n }\r\n\r\n var $outer = $( '
' ).\r\n appendTo( 'body' )\r\n\r\n // Get the width without scrollbars.\r\n var widthWithoutScroll = $outer[0].offsetWidth\r\n\r\n // Force adding scrollbars.\r\n $outer.css( 'overflow', 'scroll' )\r\n\r\n // Add the inner div.\r\n var $inner = $( '
' ).appendTo( $outer )\r\n\r\n // Get the width with scrollbars.\r\n var widthWithScroll = $inner[0].offsetWidth\r\n\r\n // Remove the divs.\r\n $outer.remove()\r\n\r\n // Return the difference between the widths.\r\n return widthWithoutScroll - widthWithScroll\r\n}\r\n\r\n\r\n\r\n/**\r\n * PickerConstructor helper methods.\r\n */\r\nPickerConstructor._ = {\r\n\r\n /**\r\n * Create a group of nodes. Expects:\r\n * `\r\n {\r\n min: {Integer},\r\n max: {Integer},\r\n i: {Integer},\r\n node: {String},\r\n item: {Function}\r\n }\r\n * `\r\n */\r\n group: function( groupObject ) {\r\n\r\n var\r\n // Scope for the looped object\r\n loopObjectScope,\r\n\r\n // Create the nodes list\r\n nodesList = '',\r\n\r\n // The counter starts from the `min`\r\n counter = PickerConstructor._.trigger( groupObject.min, groupObject )\r\n\r\n\r\n // Loop from the `min` to `max`, incrementing by `i`\r\n for ( ; counter <= PickerConstructor._.trigger( groupObject.max, groupObject, [ counter ] ); counter += groupObject.i ) {\r\n\r\n // Trigger the `item` function within scope of the object\r\n loopObjectScope = PickerConstructor._.trigger( groupObject.item, groupObject, [ counter ] )\r\n\r\n // Splice the subgroup and create nodes out of the sub nodes\r\n nodesList += PickerConstructor._.node(\r\n groupObject.node,\r\n loopObjectScope[ 0 ], // the node\r\n loopObjectScope[ 1 ], // the classes\r\n loopObjectScope[ 2 ] // the attributes\r\n )\r\n }\r\n\r\n // Return the list of nodes\r\n return nodesList\r\n }, //group\r\n\r\n\r\n /**\r\n * Create a dom node string\r\n */\r\n node: function( wrapper, item, klass, attribute ) {\r\n\r\n // If the item is false-y, just return an empty string\r\n if ( !item ) return ''\r\n\r\n // If the item is an array, do a join\r\n item = $.isArray( item ) ? item.join( '' ) : item\r\n\r\n // Check for the class\r\n klass = klass ? ' class=\"' + klass + '\"' : ''\r\n\r\n // Check for any attributes\r\n attribute = attribute ? ' ' + attribute : ''\r\n\r\n // Return the wrapped item\r\n return '<' + wrapper + klass + attribute + '>' + item + ''\r\n }, //node\r\n\r\n\r\n /**\r\n * Lead numbers below 10 with a zero.\r\n */\r\n lead: function( number ) {\r\n return ( number < 10 ? '0': '' ) + number\r\n },\r\n\r\n\r\n /**\r\n * Trigger a function otherwise return the value.\r\n */\r\n trigger: function( callback, scope, args ) {\r\n return typeof callback == 'function' ? callback.apply( scope, args || [] ) : callback\r\n },\r\n\r\n\r\n /**\r\n * If the second character is a digit, length is 2 otherwise 1.\r\n */\r\n digits: function( string ) {\r\n return ( /\\d/ ).test( string[ 1 ] ) ? 2 : 1\r\n },\r\n\r\n\r\n /**\r\n * Tell if something is a date object.\r\n */\r\n isDate: function( value ) {\r\n return {}.toString.call( value ).indexOf( 'Date' ) > -1 && this.isInteger( value.getDate() )\r\n },\r\n\r\n\r\n /**\r\n * Tell if something is an integer.\r\n */\r\n isInteger: function( value ) {\r\n return {}.toString.call( value ).indexOf( 'Number' ) > -1 && value % 1 === 0\r\n },\r\n\r\n\r\n /**\r\n * Create ARIA attribute strings.\r\n */\r\n ariaAttr: ariaAttr\r\n} //PickerConstructor._\r\n\r\n\r\n\r\n/**\r\n * Extend the picker with a component and defaults.\r\n */\r\nPickerConstructor.extend = function( name, Component ) {\r\n\r\n // Extend jQuery.\r\n $.fn[ name ] = function( options, action ) {\r\n\r\n // Grab the component data.\r\n var componentData = this.data( name )\r\n\r\n // If the picker is requested, return the data object.\r\n if ( options == 'picker' ) {\r\n return componentData\r\n }\r\n\r\n // If the component data exists and `options` is a string, carry out the action.\r\n if ( componentData && typeof options == 'string' ) {\r\n return PickerConstructor._.trigger( componentData[ options ], componentData, [ action ] )\r\n }\r\n\r\n // Otherwise go through each matched element and if the component\r\n // doesn’t exist, create a new picker using `this` element\r\n // and merging the defaults and options with a deep copy.\r\n return this.each( function() {\r\n var $this = $( this )\r\n if ( !$this.data( name ) ) {\r\n new PickerConstructor( this, name, Component, options )\r\n }\r\n })\r\n }\r\n\r\n // Set the defaults.\r\n $.fn[ name ].defaults = Component.defaults\r\n} //PickerConstructor.extend\r\n\r\n\r\n\r\nfunction aria(element, attribute, value) {\r\n if ( $.isPlainObject(attribute) ) {\r\n for ( var key in attribute ) {\r\n ariaSet(element, key, attribute[key])\r\n }\r\n }\r\n else {\r\n ariaSet(element, attribute, value)\r\n }\r\n}\r\nfunction ariaSet(element, attribute, value) {\r\n element.setAttribute(\r\n (attribute == 'role' ? '' : 'aria-') + attribute,\r\n value\r\n )\r\n}\r\nfunction ariaAttr(attribute, data) {\r\n if ( !$.isPlainObject(attribute) ) {\r\n attribute = { attribute: data }\r\n }\r\n data = ''\r\n for ( var key in attribute ) {\r\n var attr = (key == 'role' ? '' : 'aria-') + key,\r\n attrVal = attribute[key]\r\n data += attrVal == null ? '' : attr + '=\"' + attribute[key] + '\"'\r\n }\r\n return data\r\n}\r\n\r\n// IE8 bug throws an error for activeElements within iframes.\r\nfunction getActiveElement() {\r\n try {\r\n return document.activeElement\r\n } catch ( err ) { }\r\n}\r\n\r\n\r\n\r\n// Expose the picker constructor.\r\nreturn PickerConstructor\r\n\r\n\r\n}));\r\n\r\n\r\n\r\n","if (!String.prototype.startsWith) {\r\n (function () {\r\n 'use strict'; // needed to support `apply`/`call` with `undefined`/`null`\r\n var defineProperty = (function () {\r\n // IE 8 only supports `Object.defineProperty` on DOM elements\r\n try {\r\n var object = {};\r\n var $defineProperty = Object.defineProperty;\r\n var result = $defineProperty(object, object, object) && $defineProperty;\r\n } catch (error) { }\r\n return result;\r\n }());\r\n var toString = {}.toString;\r\n var startsWith = function (search) {\r\n if (this == null) {\r\n throw TypeError();\r\n }\r\n var string = String(this);\r\n if (search && toString.call(search) == '[object RegExp]') {\r\n throw TypeError();\r\n }\r\n var stringLength = string.length;\r\n var searchString = String(search);\r\n var searchLength = searchString.length;\r\n var position = arguments.length > 1 ? arguments[1] : undefined;\r\n // `ToInteger`\r\n var pos = position ? Number(position) : 0;\r\n if (pos != pos) { // better `isNaN`\r\n pos = 0;\r\n }\r\n var start = Math.min(Math.max(pos, 0), stringLength);\r\n // Avoid the `indexOf` call if no match is possible\r\n if (searchLength + start > stringLength) {\r\n return false;\r\n }\r\n var index = -1;\r\n while (++index < searchLength) {\r\n if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n if (defineProperty) {\r\n defineProperty(String.prototype, 'startsWith', {\r\n 'value': startsWith,\r\n 'configurable': true,\r\n 'writable': true\r\n });\r\n } else {\r\n String.prototype.startsWith = startsWith;\r\n }\r\n }());\r\n}","/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"