{"version":3,"file":"forms.min.js","mappings":"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","sources":["webpack://daf/./node_modules/bootstrap-datepicker/dist/js/bootstrap-datepicker.js","webpack://daf/./node_modules/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nl.min.js","webpack://daf/./node_modules/bootstrap/js/dist/collapse.js","webpack://daf/./node_modules/bootstrap/js/dist/util.js","webpack://daf/./node_modules/jquery/dist/jquery.js","webpack://daf/webpack/bootstrap","webpack://daf/./src/Feature/Forms/code/src/scripts/lib/clockpicker.js","webpack://daf/./src/Feature/Forms/code/src/scripts/Forms.js"],"sourcesContent":["/*!\n * Datepicker for Bootstrap v1.10.0 (https://github.com/uxsolutions/bootstrap-datepicker)\n *\n * Licensed under the Apache License v2.0 (https://www.apache.org/licenses/LICENSE-2.0)\n */\n\n(function(factory){\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n factory(require('jquery'));\n } else {\n factory(jQuery);\n }\n}(function($, undefined){\n\tfunction UTCDate(){\n\t\treturn new Date(Date.UTC.apply(Date, arguments));\n\t}\n\tfunction UTCToday(){\n\t\tvar today = new Date();\n\t\treturn UTCDate(today.getFullYear(), today.getMonth(), today.getDate());\n\t}\n\tfunction isUTCEquals(date1, date2) {\n\t\treturn (\n\t\t\tdate1.getUTCFullYear() === date2.getUTCFullYear() &&\n\t\t\tdate1.getUTCMonth() === date2.getUTCMonth() &&\n\t\t\tdate1.getUTCDate() === date2.getUTCDate()\n\t\t);\n\t}\n\tfunction alias(method, deprecationMsg){\n\t\treturn function(){\n\t\t\tif (deprecationMsg !== undefined) {\n\t\t\t\t$.fn.datepicker.deprecated(deprecationMsg);\n\t\t\t}\n\n\t\t\treturn this[method].apply(this, arguments);\n\t\t};\n\t}\n\tfunction isValidDate(d) {\n\t\treturn d && !isNaN(d.getTime());\n\t}\n\n\tvar DateArray = (function(){\n\t\tvar extras = {\n\t\t\tget: function(i){\n\t\t\t\treturn this.slice(i)[0];\n\t\t\t},\n\t\t\tcontains: function(d){\n\t\t\t\t// Array.indexOf is not cross-browser;\n\t\t\t\t// $.inArray doesn't work with Dates\n\t\t\t\tvar val = d && d.valueOf();\n\t\t\t\tfor (var i=0, l=this.length; i < l; i++)\n // Use date arithmetic to allow dates with different times to match\n if (0 <= this[i].valueOf() - val && this[i].valueOf() - val < 1000*60*60*24)\n\t\t\t\t\t\treturn i;\n\t\t\t\treturn -1;\n\t\t\t},\n\t\t\tremove: function(i){\n\t\t\t\tthis.splice(i,1);\n\t\t\t},\n\t\t\treplace: function(new_array){\n\t\t\t\tif (!new_array)\n\t\t\t\t\treturn;\n\t\t\t\tif (!Array.isArray(new_array))\n\t\t\t\t\tnew_array = [new_array];\n\t\t\t\tthis.clear();\n\t\t\t\tthis.push.apply(this, new_array);\n\t\t\t},\n\t\t\tclear: function(){\n\t\t\t\tthis.length = 0;\n\t\t\t},\n\t\t\tcopy: function(){\n\t\t\t\tvar a = new DateArray();\n\t\t\t\ta.replace(this);\n\t\t\t\treturn a;\n\t\t\t}\n\t\t};\n\n\t\treturn function(){\n\t\t\tvar a = [];\n\t\t\ta.push.apply(a, arguments);\n\t\t\t$.extend(a, extras);\n\t\t\treturn a;\n\t\t};\n\t})();\n\n\n\t// Picker object\n\n\tvar Datepicker = function(element, options){\n\t\t$.data(element, 'datepicker', this);\n\n\t\tthis._events = [];\n\t\tthis._secondaryEvents = [];\n\n\t\tthis._process_options(options);\n\n\t\tthis.dates = new DateArray();\n\t\tthis.viewDate = this.o.defaultViewDate;\n\t\tthis.focusDate = null;\n\n\t\tthis.element = $(element);\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.inputField = this.isInput ? this.element : this.element.find('input');\n\t\tthis.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .input-group-append, .input-group-prepend, .btn') : false;\n\t\tif (this.component && this.component.length === 0){\n\t\t\tthis.component = false;\n }\n\n\t\tif (this.o.isInline === null){\n\t\t\tthis.isInline = !this.component && !this.isInput;\n\t\t} else {\n\t\t\tthis.isInline = this.o.isInline;\n\t\t}\n\n\t\tthis.picker = $(DPGlobal.template);\n\n\t\t// Checking templates and inserting\n\t\tif (this._check_template(this.o.templates.leftArrow)) {\n\t\t\tthis.picker.find('.prev').html(this.o.templates.leftArrow);\n\t\t}\n\n\t\tif (this._check_template(this.o.templates.rightArrow)) {\n\t\t\tthis.picker.find('.next').html(this.o.templates.rightArrow);\n\t\t}\n\n\t\tthis._buildEvents();\n\t\tthis._attachEvents();\n\n\t\tif (this.isInline){\n\t\t\tthis.picker.addClass('datepicker-inline').appendTo(this.element);\n\t\t}\n\t\telse {\n\t\t\tthis.picker.addClass('datepicker-dropdown dropdown-menu');\n\t\t}\n\n\t\tif (this.o.rtl){\n\t\t\tthis.picker.addClass('datepicker-rtl');\n\t\t}\n\n\t\tif (this.o.calendarWeeks) {\n\t\t\tthis.picker.find('.datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear')\n\t\t\t\t.attr('colspan', function(i, val){\n\t\t\t\t\treturn Number(val) + 1;\n\t\t\t\t});\n\t\t}\n\n\t\tthis._process_options({\n\t\t\tstartDate: this._o.startDate,\n\t\t\tendDate: this._o.endDate,\n\t\t\tdaysOfWeekDisabled: this.o.daysOfWeekDisabled,\n\t\t\tdaysOfWeekHighlighted: this.o.daysOfWeekHighlighted,\n\t\t\tdatesDisabled: this.o.datesDisabled\n\t\t});\n\n\t\tthis._allow_update = false;\n\t\tthis.setViewMode(this.o.startView);\n\t\tthis._allow_update = true;\n\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\n\t\tthis.update();\n\n\t\tif (this.isInline){\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tDatepicker.prototype = {\n\t\tconstructor: Datepicker,\n\n\t\t_resolveViewName: function(view){\n\t\t\t$.each(DPGlobal.viewModes, function(i, viewMode){\n\t\t\t\tif (view === i || $.inArray(view, viewMode.names) !== -1){\n\t\t\t\t\tview = i;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn view;\n\t\t},\n\n\t\t_resolveDaysOfWeek: function(daysOfWeek){\n\t\t\tif (!Array.isArray(daysOfWeek))\n\t\t\t\tdaysOfWeek = daysOfWeek.split(/[,\\s]*/);\n\t\t\treturn $.map(daysOfWeek, Number);\n\t\t},\n\n\t\t_check_template: function(tmp){\n\t\t\ttry {\n\t\t\t\t// If empty\n\t\t\t\tif (tmp === undefined || tmp === \"\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// If no html, everything ok\n\t\t\t\tif ((tmp.match(/[<>]/g) || []).length <= 0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// Checking if html is fine\n\t\t\t\tvar jDom = $(tmp);\n\t\t\t\treturn jDom.length > 0;\n\t\t\t}\n\t\t\tcatch (ex) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t_process_options: function(opts){\n\t\t\t// Store raw options for reference\n\t\t\tthis._o = $.extend({}, this._o, opts);\n\t\t\t// Processed options\n\t\t\tvar o = this.o = $.extend({}, this._o);\n\n\t\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t\t// fallback to 2 letter code eg \"de\"\n\t\t\tvar lang = o.language;\n\t\t\tif (!dates[lang]){\n\t\t\t\tlang = lang.split('-')[0];\n\t\t\t\tif (!dates[lang])\n\t\t\t\t\tlang = defaults.language;\n\t\t\t}\n\t\t\to.language = lang;\n\n\t\t\t// Retrieve view index from any aliases\n\t\t\to.startView = this._resolveViewName(o.startView);\n\t\t\to.minViewMode = this._resolveViewName(o.minViewMode);\n\t\t\to.maxViewMode = this._resolveViewName(o.maxViewMode);\n\n\t\t\t// Check view is between min and max\n\t\t\to.startView = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, o.startView));\n\n\t\t\t// true, false, or Number > 0\n\t\t\tif (o.multidate !== true){\n\t\t\t\to.multidate = Number(o.multidate) || false;\n\t\t\t\tif (o.multidate !== false)\n\t\t\t\t\to.multidate = Math.max(0, o.multidate);\n\t\t\t}\n\t\t\to.multidateSeparator = String(o.multidateSeparator);\n\n\t\t\to.weekStart %= 7;\n\t\t\to.weekEnd = (o.weekStart + 6) % 7;\n\n\t\t\tvar format = DPGlobal.parseFormat(o.format);\n\t\t\tif (o.startDate !== -Infinity){\n\t\t\t\tif (!!o.startDate){\n\t\t\t\t\tif (o.startDate instanceof Date)\n\t\t\t\t\t\to.startDate = this._local_to_utc(this._zero_time(o.startDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.startDate = DPGlobal.parseDate(o.startDate, format, o.language, o.assumeNearbyYear);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.startDate = -Infinity;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (o.endDate !== Infinity){\n\t\t\t\tif (!!o.endDate){\n\t\t\t\t\tif (o.endDate instanceof Date)\n\t\t\t\t\t\to.endDate = this._local_to_utc(this._zero_time(o.endDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.endDate = DPGlobal.parseDate(o.endDate, format, o.language, o.assumeNearbyYear);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.endDate = Infinity;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\to.daysOfWeekDisabled = this._resolveDaysOfWeek(o.daysOfWeekDisabled||[]);\n\t\t\to.daysOfWeekHighlighted = this._resolveDaysOfWeek(o.daysOfWeekHighlighted||[]);\n\n\t\t\to.datesDisabled = o.datesDisabled||[];\n\t\t\tif (!Array.isArray(o.datesDisabled)) {\n\t\t\t\to.datesDisabled = o.datesDisabled.split(',');\n\t\t\t}\n\t\t\to.datesDisabled = $.map(o.datesDisabled, function(d){\n\t\t\t\treturn DPGlobal.parseDate(d, format, o.language, o.assumeNearbyYear);\n\t\t\t});\n\n\t\t\tvar plc = String(o.orientation).toLowerCase().split(/\\s+/g),\n\t\t\t\t_plc = o.orientation.toLowerCase();\n\t\t\tplc = $.grep(plc, function(word){\n\t\t\t\treturn /^auto|left|right|top|bottom$/.test(word);\n\t\t\t});\n\t\t\to.orientation = {x: 'auto', y: 'auto'};\n\t\t\tif (!_plc || _plc === 'auto')\n\t\t\t\t; // no action\n\t\t\telse if (plc.length === 1){\n\t\t\t\tswitch (plc[0]){\n\t\t\t\t\tcase 'top':\n\t\t\t\t\tcase 'bottom':\n\t\t\t\t\t\to.orientation.y = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'left':\n\t\t\t\t\tcase 'right':\n\t\t\t\t\t\to.orientation.x = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn /^left|right$/.test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.x = _plc[0] || 'auto';\n\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn /^top|bottom$/.test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.y = _plc[0] || 'auto';\n\t\t\t}\n\t\t\tif (o.defaultViewDate instanceof Date || typeof o.defaultViewDate === 'string') {\n\t\t\t\to.defaultViewDate = DPGlobal.parseDate(o.defaultViewDate, format, o.language, o.assumeNearbyYear);\n\t\t\t} else if (o.defaultViewDate) {\n\t\t\t\tvar year = o.defaultViewDate.year || new Date().getFullYear();\n\t\t\t\tvar month = o.defaultViewDate.month || 0;\n\t\t\t\tvar day = o.defaultViewDate.day || 1;\n\t\t\t\to.defaultViewDate = UTCDate(year, month, day);\n\t\t\t} else {\n\t\t\t\to.defaultViewDate = UTCToday();\n\t\t\t}\n\t\t},\n\t\t_applyEvents: function(evs){\n\t\t\tfor (var i=0, el, ch, ev; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t} else if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.on(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_unapplyEvents: function(evs){\n\t\t\tfor (var i=0, el, ev, ch; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t} else if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.off(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_buildEvents: function(){\n var events = {\n keyup: $.proxy(function(e){\n if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)\n this.update();\n }, this),\n keydown: $.proxy(this.keydown, this),\n paste: $.proxy(this.paste, this)\n };\n\n if (this.o.showOnFocus === true) {\n events.focus = $.proxy(this.show, this);\n }\n\n if (this.isInput) { // single input\n this._events = [\n [this.element, events]\n ];\n }\n // component: input + button\n else if (this.component && this.inputField.length) {\n this._events = [\n // For components that are not readonly, allow keyboard nav\n [this.inputField, events],\n [this.component, {\n click: $.proxy(this.show, this)\n }]\n ];\n }\n\t\t\telse {\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\tthis._events.push(\n\t\t\t\t// Component: listen for blur on element descendants\n\t\t\t\t[this.element, '*', {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}],\n\t\t\t\t// Input: listen for blur on element\n\t\t\t\t[this.element, {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t);\n\n\t\t\tif (this.o.immediateUpdates) {\n\t\t\t\t// Trigger input updates immediately on changed year/month\n\t\t\t\tthis._events.push([this.element, {\n\t\t\t\t\t'changeYear changeMonth': $.proxy(function(e){\n\t\t\t\t\t\tthis.update(e.date);\n\t\t\t\t\t}, this)\n\t\t\t\t}]);\n\t\t\t}\n\n\t\t\tthis._secondaryEvents = [\n\t\t\t\t[this.picker, {\n\t\t\t\t\tclick: $.proxy(this.click, this)\n\t\t\t\t}],\n\t\t\t\t[this.picker, '.prev, .next', {\n\t\t\t\t\tclick: $.proxy(this.navArrowsClick, this)\n\t\t\t\t}],\n\t\t\t\t[this.picker, '.day:not(.disabled)', {\n\t\t\t\t\tclick: $.proxy(this.dayCellClick, this)\n\t\t\t\t}],\n\t\t\t\t[$(window), {\n\t\t\t\t\tresize: $.proxy(this.place, this)\n\t\t\t\t}],\n\t\t\t\t[$(document), {\n\t\t\t\t\t'mousedown touchstart': $.proxy(function(e){\n\t\t\t\t\t\t// Clicked outside the datepicker, hide it\n\t\t\t\t\t\tif (!(\n\t\t\t\t\t\t\tthis.element.is(e.target) ||\n\t\t\t\t\t\t\tthis.element.find(e.target).length ||\n\t\t\t\t\t\t\tthis.picker.is(e.target) ||\n\t\t\t\t\t\t\tthis.picker.find(e.target).length ||\n\t\t\t\t\t\t\tthis.isInline\n\t\t\t\t\t\t)){\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t];\n\t\t},\n\t\t_attachEvents: function(){\n\t\t\tthis._detachEvents();\n\t\t\tthis._applyEvents(this._events);\n\t\t},\n\t\t_detachEvents: function(){\n\t\t\tthis._unapplyEvents(this._events);\n\t\t},\n\t\t_attachSecondaryEvents: function(){\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis._applyEvents(this._secondaryEvents);\n\t\t},\n\t\t_detachSecondaryEvents: function(){\n\t\t\tthis._unapplyEvents(this._secondaryEvents);\n\t\t},\n\t\t_trigger: function(event, altdate){\n\t\t\tvar date = altdate || this.dates.get(-1),\n\t\t\t\tlocal_date = this._utc_to_local(date);\n\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: event,\n\t\t\t\tdate: local_date,\n\t\t\t\tviewMode: this.viewMode,\n\t\t\t\tdates: $.map(this.dates, this._utc_to_local),\n\t\t\t\tformat: $.proxy(function(ix, format){\n\t\t\t\t\tif (arguments.length === 0){\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t\tformat = this.o.format;\n\t\t\t\t\t} else if (typeof ix === 'string'){\n\t\t\t\t\t\tformat = ix;\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t}\n\t\t\t\t\tformat = format || this.o.format;\n\t\t\t\t\tvar date = this.dates.get(ix);\n\t\t\t\t\treturn DPGlobal.formatDate(date, format, this.o.language);\n\t\t\t\t}, this)\n\t\t\t});\n\t\t},\n\n\t\tshow: function(){\n\t\t\tif (this.inputField.is(':disabled') || (this.inputField.prop('readonly') && this.o.enableOnReadonly === false))\n\t\t\t\treturn;\n\t\t\tif (!this.isInline)\n\t\t\t\tthis.picker.appendTo(this.o.container);\n\t\t\tthis.place();\n\t\t\tthis.picker.show();\n\t\t\tthis._attachSecondaryEvents();\n\t\t\tthis._trigger('show');\n\t\t\tif ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {\n\t\t\t\t$(this.element).blur();\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\thide: function(){\n\t\t\tif (this.isInline || !this.picker.is(':visible'))\n\t\t\t\treturn this;\n\t\t\tthis.focusDate = null;\n\t\t\tthis.picker.hide().detach();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.setViewMode(this.o.startView);\n\n\t\t\tif (this.o.forceParse && this.inputField.val())\n\t\t\t\tthis.setValue();\n\t\t\tthis._trigger('hide');\n\t\t\treturn this;\n\t\t},\n\n\t\tdestroy: function(){\n\t\t\tthis.hide();\n\t\t\tthis._detachEvents();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.picker.remove();\n\t\t\tdelete this.element.data().datepicker;\n\t\t\tif (!this.isInput){\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\tpaste: function(e){\n\t\t\tvar dateString;\n\t\t\tif (e.originalEvent.clipboardData && e.originalEvent.clipboardData.types\n\t\t\t\t&& $.inArray('text/plain', e.originalEvent.clipboardData.types) !== -1) {\n\t\t\t\tdateString = e.originalEvent.clipboardData.getData('text/plain');\n\t\t\t} else if (window.clipboardData) {\n\t\t\t\tdateString = window.clipboardData.getData('Text');\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.setDate(dateString);\n\t\t\tthis.update();\n\t\t\te.preventDefault();\n\t\t},\n\n\t\t_utc_to_local: function(utc){\n\t\t\tif (!utc) {\n\t\t\t\treturn utc;\n\t\t\t}\n\n\t\t\tvar local = new Date(utc.getTime() + (utc.getTimezoneOffset() * 60000));\n\n\t\t\tif (local.getTimezoneOffset() !== utc.getTimezoneOffset()) {\n\t\t\t\tlocal = new Date(utc.getTime() + (local.getTimezoneOffset() * 60000));\n\t\t\t}\n\n\t\t\treturn local;\n\t\t},\n\t\t_local_to_utc: function(local){\n\t\t\treturn local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));\n\t\t},\n\t\t_zero_time: function(local){\n\t\t\treturn local && new Date(local.getFullYear(), local.getMonth(), local.getDate());\n\t\t},\n\t\t_zero_utc_time: function(utc){\n\t\t\treturn utc && UTCDate(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate());\n\t\t},\n\n\t\tgetDates: function(){\n\t\t\treturn $.map(this.dates, this._utc_to_local);\n\t\t},\n\n\t\tgetUTCDates: function(){\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn new Date(d);\n\t\t\t});\n\t\t},\n\n\t\tgetDate: function(){\n\t\t\treturn this._utc_to_local(this.getUTCDate());\n\t\t},\n\n\t\tgetUTCDate: function(){\n\t\t\tvar selected_date = this.dates.get(-1);\n\t\t\tif (selected_date !== undefined) {\n\t\t\t\treturn new Date(selected_date);\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\n\t\tclearDates: function(){\n\t\t\tthis.inputField.val('');\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.update();\n\t\t\tif (this.o.autoclose) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tsetDates: function(){\n\t\t\tvar args = Array.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.update.apply(this, args);\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.setValue();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetUTCDates: function(){\n\t\t\tvar args = Array.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.setDates.apply(this, $.map(args, this._utc_to_local));\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDate: alias('setDates'),\n\t\tsetUTCDate: alias('setUTCDates'),\n\t\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead'),\n\n\t\tsetValue: function(){\n\t\t\tvar formatted = this.getFormattedDate();\n\t\t\tthis.inputField.val(formatted);\n\t\t\treturn this;\n\t\t},\n\n\t\tgetFormattedDate: function(format){\n\t\t\tif (format === undefined)\n\t\t\t\tformat = this.o.format;\n\n\t\t\tvar lang = this.o.language;\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn DPGlobal.formatDate(d, format, lang);\n\t\t\t}).join(this.o.multidateSeparator);\n\t\t},\n\n\t\tgetStartDate: function(){\n\t\t\treturn this.o.startDate;\n\t\t},\n\n\t\tsetStartDate: function(startDate){\n\t\t\tthis._process_options({startDate: startDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tgetEndDate: function(){\n\t\t\treturn this.o.endDate;\n\t\t},\n\n\t\tsetEndDate: function(endDate){\n\t\t\tthis._process_options({endDate: endDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekDisabled: function(daysOfWeekDisabled){\n\t\t\tthis._process_options({daysOfWeekDisabled: daysOfWeekDisabled});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekHighlighted: function(daysOfWeekHighlighted){\n\t\t\tthis._process_options({daysOfWeekHighlighted: daysOfWeekHighlighted});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDatesDisabled: function(datesDisabled){\n\t\t\tthis._process_options({datesDisabled: datesDisabled});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tplace: function(){\n\t\t\tif (this.isInline)\n\t\t\t\treturn this;\n\t\t\tvar calendarWidth = this.picker.outerWidth(),\n\t\t\t\tcalendarHeight = this.picker.outerHeight(),\n\t\t\t\tvisualPadding = 10,\n\t\t\t\tcontainer = $(this.o.container),\n\t\t\t\twindowWidth = container.width(),\n\t\t\t\tscrollTop = this.o.container === 'body' ? $(document).scrollTop() : container.scrollTop(),\n\t\t\t\tappendOffset = container.offset();\n\n\t\t\tvar parentsZindex = [0];\n\t\t\tthis.element.parents().each(function(){\n\t\t\t\tvar itemZIndex = $(this).css('z-index');\n\t\t\t\tif (itemZIndex !== 'auto' && Number(itemZIndex) !== 0) parentsZindex.push(Number(itemZIndex));\n\t\t\t});\n\t\t\tvar zIndex = Math.max.apply(Math, parentsZindex) + this.o.zIndexOffset;\n\t\t\tvar offset = this.component ? this.component.parent().offset() : this.element.offset();\n\t\t\tvar height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);\n\t\t\tvar width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);\n\t\t\tvar left = offset.left - appendOffset.left;\n\t\t\tvar top = offset.top - appendOffset.top;\n\n\t\t\tif (this.o.container !== 'body') {\n\t\t\t\ttop += scrollTop;\n\t\t\t}\n\n\t\t\tthis.picker.removeClass(\n\t\t\t\t'datepicker-orient-top datepicker-orient-bottom '+\n\t\t\t\t'datepicker-orient-right datepicker-orient-left'\n\t\t\t);\n\n\t\t\tif (this.o.orientation.x !== 'auto'){\n\t\t\t\tthis.picker.addClass('datepicker-orient-' + this.o.orientation.x);\n\t\t\t\tif (this.o.orientation.x === 'right')\n\t\t\t\t\tleft -= calendarWidth - width;\n\t\t\t}\n\t\t\t// auto x orientation is best-placement: if it crosses a window\n\t\t\t// edge, fudge it sideways\n\t\t\telse {\n\t\t\t\tif (offset.left < 0) {\n\t\t\t\t\t// component is outside the window on the left side. Move it into visible range\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\tleft -= offset.left - visualPadding;\n\t\t\t\t} else if (left + calendarWidth > windowWidth) {\n\t\t\t\t\t// the calendar passes the widow right edge. Align it to component right side\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\tleft += width - calendarWidth;\n\t\t\t\t} else {\n\t\t\t\t\tif (this.o.rtl) {\n\t\t\t\t\t\t// Default to right\n\t\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Default to left\n\t\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// auto y orientation is best-situation: top or bottom, no fudging,\n\t\t\t// decision based on which shows more of the calendar\n\t\t\tvar yorient = this.o.orientation.y,\n\t\t\t\ttop_overflow;\n\t\t\tif (yorient === 'auto'){\n\t\t\t\ttop_overflow = -scrollTop + top - calendarHeight;\n\t\t\t\tyorient = top_overflow < 0 ? 'bottom' : 'top';\n\t\t\t}\n\n\t\t\tthis.picker.addClass('datepicker-orient-' + yorient);\n\t\t\tif (yorient === 'top')\n\t\t\t\ttop -= calendarHeight + parseInt(this.picker.css('padding-top'));\n\t\t\telse\n\t\t\t\ttop += height;\n\n\t\t\tif (this.o.rtl) {\n\t\t\t\tvar right = windowWidth - (left + width);\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tright: right,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tleft: left,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\t_allow_update: true,\n\t\tupdate: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn this;\n\n\t\t\tvar oldDates = this.dates.copy(),\n\t\t\t\tdates = [],\n\t\t\t\tfromArgs = false;\n\t\t\tif (arguments.length){\n\t\t\t\t$.each(arguments, $.proxy(function(i, date){\n\t\t\t\t\tif (date instanceof Date)\n\t\t\t\t\t\tdate = this._local_to_utc(date);\n\t\t\t\t\tdates.push(date);\n\t\t\t\t}, this));\n\t\t\t\tfromArgs = true;\n\t\t\t} else {\n\t\t\t\tdates = this.isInput\n\t\t\t\t\t\t? this.element.val()\n\t\t\t\t\t\t: this.element.data('date') || this.inputField.val();\n\t\t\t\tif (dates && this.o.multidate)\n\t\t\t\t\tdates = dates.split(this.o.multidateSeparator);\n\t\t\t\telse\n\t\t\t\t\tdates = [dates];\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\n\t\t\tdates = $.map(dates, $.proxy(function(date){\n\t\t\t\treturn DPGlobal.parseDate(date, this.o.format, this.o.language, this.o.assumeNearbyYear);\n\t\t\t}, this));\n\t\t\tdates = $.grep(dates, $.proxy(function(date){\n\t\t\t\treturn (\n\t\t\t\t\t!this.dateWithinRange(date) ||\n\t\t\t\t\t!date\n\t\t\t\t);\n\t\t\t}, this), true);\n\t\t\tthis.dates.replace(dates);\n\n\t\t\tif (this.o.updateViewDate) {\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis.viewDate = new Date(this.dates.get(-1));\n\t\t\t\telse if (this.viewDate < this.o.startDate)\n\t\t\t\t\tthis.viewDate = new Date(this.o.startDate);\n\t\t\t\telse if (this.viewDate > this.o.endDate)\n\t\t\t\t\tthis.viewDate = new Date(this.o.endDate);\n\t\t\t\telse\n\t\t\t\t\tthis.viewDate = this.o.defaultViewDate;\n\t\t\t}\n\n\t\t\tif (fromArgs){\n\t\t\t\t// setting date by clicking\n\t\t\t\tthis.setValue();\n\t\t\t\tthis.element.change();\n\t\t\t}\n\t\t\telse if (this.dates.length){\n\t\t\t\t// setting date by typing\n\t\t\t\tif (String(oldDates) !== String(this.dates) && fromArgs) {\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\t\tthis.element.change();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!this.dates.length && oldDates.length) {\n\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tthis.element.change();\n\t\t\t}\n\n\t\t\tthis.fill();\n\t\t\treturn this;\n\t\t},\n\n\t\tfillDow: function(){\n if (this.o.showWeekDays) {\n\t\t\tvar dowCnt = this.o.weekStart,\n\t\t\t\thtml = '';\n\t\t\tif (this.o.calendarWeeks){\n\t\t\t\thtml += ' ';\n\t\t\t}\n\t\t\twhile (dowCnt < this.o.weekStart + 7){\n\t\t\t\thtml += '';\n\t\t\t}\n\t\t\thtml += '';\n\t\t\tthis.picker.find('.datepicker-days thead').append(html);\n }\n\t\t},\n\n\t\tfillMonths: function(){\n var localDate = this._utc_to_local(this.viewDate);\n\t\t\tvar html = '';\n\t\t\tvar focused;\n\t\t\tfor (var i = 0; i < 12; i++){\n\t\t\t\tfocused = localDate && localDate.getMonth() === i ? ' focused' : '';\n\t\t\t\thtml += '' + dates[this.o.language].monthsShort[i] + '';\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-months td').html(html);\n\t\t},\n\n\t\tsetRange: function(range){\n\t\t\tif (!range || !range.length)\n\t\t\t\tdelete this.range;\n\t\t\telse\n\t\t\t\tthis.range = $.map(range, function(d){\n\t\t\t\t\treturn d.valueOf();\n\t\t\t\t});\n\t\t\tthis.fill();\n\t\t},\n\n\t\tgetClassNames: function(date){\n\t\t\tvar cls = [],\n\t\t\t\tyear = this.viewDate.getUTCFullYear(),\n\t\t\t\tmonth = this.viewDate.getUTCMonth(),\n\t\t\t\ttoday = UTCToday();\n\t\t\tif (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){\n\t\t\t\tcls.push('old');\n\t\t\t} else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){\n\t\t\t\tcls.push('new');\n\t\t\t}\n\t\t\tif (this.focusDate && date.valueOf() === this.focusDate.valueOf())\n\t\t\t\tcls.push('focused');\n\t\t\t// Compare internal UTC date with UTC today, not local today\n\t\t\tif (this.o.todayHighlight && isUTCEquals(date, today)) {\n\t\t\t\tcls.push('today');\n\t\t\t}\n\t\t\tif (this.dates.contains(date) !== -1)\n\t\t\t\tcls.push('active');\n\t\t\tif (!this.dateWithinRange(date)){\n\t\t\t\tcls.push('disabled');\n\t\t\t}\n\t\t\tif (this.dateIsDisabled(date)){\n\t\t\t\tcls.push('disabled', 'disabled-date');\n\t\t\t}\n\t\t\tif ($.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1){\n\t\t\t\tcls.push('highlighted');\n\t\t\t}\n\n\t\t\tif (this.range){\n\t\t\t\tif (date > this.range[0] && date < this.range[this.range.length-1]){\n\t\t\t\t\tcls.push('range');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(date.valueOf(), this.range) !== -1){\n\t\t\t\t\tcls.push('selected');\n\t\t\t\t}\n\t\t\t\tif (date.valueOf() === this.range[0]){\n cls.push('range-start');\n }\n if (date.valueOf() === this.range[this.range.length-1]){\n cls.push('range-end');\n }\n\t\t\t}\n\t\t\treturn cls;\n\t\t},\n\n\t\t_fill_yearsView: function(selector, cssClass, factor, year, startYear, endYear, beforeFn){\n\t\t\tvar html = '';\n\t\t\tvar step = factor / 10;\n\t\t\tvar view = this.picker.find(selector);\n\t\t\tvar startVal = Math.floor(year / factor) * factor;\n\t\t\tvar endVal = startVal + step * 9;\n\t\t\tvar focusedVal = Math.floor(this.viewDate.getFullYear() / step) * step;\n\t\t\tvar selected = $.map(this.dates, function(d){\n\t\t\t\treturn Math.floor(d.getUTCFullYear() / step) * step;\n\t\t\t});\n\n\t\t\tvar classes, tooltip, before;\n\t\t\tfor (var currVal = startVal - step; currVal <= endVal + step; currVal += step) {\n\t\t\t\tclasses = [cssClass];\n\t\t\t\ttooltip = null;\n\n\t\t\t\tif (currVal === startVal - step) {\n\t\t\t\t\tclasses.push('old');\n\t\t\t\t} else if (currVal === endVal + step) {\n\t\t\t\t\tclasses.push('new');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(currVal, selected) !== -1) {\n\t\t\t\t\tclasses.push('active');\n\t\t\t\t}\n\t\t\t\tif (currVal < startYear || currVal > endYear) {\n\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t}\n\t\t\t\tif (currVal === focusedVal) {\n\t\t\t\t classes.push('focused');\n }\n\n\t\t\t\tif (beforeFn !== $.noop) {\n\t\t\t\t\tbefore = beforeFn(new Date(currVal, 0, 1));\n\t\t\t\t\tif (before === undefined) {\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\t} else if (typeof before === 'boolean') {\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\t} else if (typeof before === 'string') {\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\t}\n\t\t\t\t\tif (before.enabled === false) {\n\t\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t\t}\n\t\t\t\t\tif (before.classes) {\n\t\t\t\t\t\tclasses = classes.concat(before.classes.split(/\\s+/));\n\t\t\t\t\t}\n\t\t\t\t\tif (before.tooltip) {\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\thtml += '' + currVal + '';\n\t\t\t}\n\n\t\t\tview.find('.datepicker-switch').text(startVal + '-' + endVal);\n\t\t\tview.find('td').html(html);\n\t\t},\n\n\t\tfill: function(){\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\ttodaytxt = dates[this.o.language].today || dates['en'].today || '',\n\t\t\t\tcleartxt = dates[this.o.language].clear || dates['en'].clear || '',\n titleFormat = dates[this.o.language].titleFormat || dates['en'].titleFormat,\n todayDate = UTCToday(),\n titleBtnVisible = (this.o.todayBtn === true || this.o.todayBtn === 'linked') && todayDate >= this.o.startDate && todayDate <= this.o.endDate && !this.weekOfDateIsDisabled(todayDate),\n\t\t\t\ttooltip,\n\t\t\t\tbefore;\n\t\t\tif (isNaN(year) || isNaN(month))\n\t\t\t\treturn;\n\t\t\tthis.picker.find('.datepicker-days .datepicker-switch')\n\t\t\t\t\t\t.text(DPGlobal.formatDate(d, titleFormat, this.o.language));\n\t\t\tthis.picker.find('tfoot .today')\n\t\t\t\t\t\t.text(todaytxt)\n .css('display', titleBtnVisible ? 'table-cell' : 'none');\n\t\t\tthis.picker.find('tfoot .clear')\n\t\t\t\t\t\t.text(cleartxt)\n\t\t\t\t\t\t.css('display', this.o.clearBtn === true ? 'table-cell' : 'none');\n\t\t\tthis.picker.find('thead .datepicker-title')\n\t\t\t\t\t\t.text(this.o.title)\n\t\t\t\t\t\t.css('display', typeof this.o.title === 'string' && this.o.title !== '' ? 'table-cell' : 'none');\n\t\t\tthis.updateNavArrows();\n\t\t\tthis.fillMonths();\n\t\t\tvar prevMonth = UTCDate(year, month, 0),\n\t\t\t\tday = prevMonth.getUTCDate();\n\t\t\tprevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tif (prevMonth.getUTCFullYear() < 100){\n nextMonth.setUTCFullYear(prevMonth.getUTCFullYear());\n }\n\t\t\tnextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\tvar html = [];\n\t\t\tvar weekDay, clsName;\n\t\t\twhile (prevMonth.valueOf() < nextMonth){\n\t\t\t\tweekDay = prevMonth.getUTCDay();\n\t\t\t\tif (weekDay === this.o.weekStart){\n\t\t\t\t\thtml.push('');\n\t\t\t\t\tif (this.o.calendarWeeks){\n\t\t\t\t\t\t// ISO 8601: First week contains first thursday.\n\t\t\t\t\t\t// ISO also states week starts on Monday, but we can be more abstract here.\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\t// Start of current week: based on weekstart/current date\n\t\t\t\t\t\t\tws = new Date(+prevMonth + (this.o.weekStart - weekDay - 7) % 7 * 864e5),\n\t\t\t\t\t\t\t// Thursday of this week\n\t\t\t\t\t\t\tth = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// First Thursday of year, year from thursday\n\t\t\t\t\t\t\tyth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// Calendar week: ms between thursdays, div ms per day, div 7 days\n\t\t\t\t\t\t\tcalWeek = (th - yth) / 864e5 / 7 + 1;\n\t\t\t\t\t\thtml.push(''+ calWeek +'');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclsName = this.getClassNames(prevMonth);\n\t\t\t\tclsName.push('day');\n\n\t\t\t\tvar content = prevMonth.getUTCDate();\n\n\t\t\t\tif (this.o.beforeShowDay !== $.noop){\n\t\t\t\t\tbefore = this.o.beforeShowDay(this._utc_to_local(prevMonth));\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof before === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof before === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false)\n\t\t\t\t\t\tclsName.push('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t\tclsName = clsName.concat(before.classes.split(/\\s+/));\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t\tif (before.content)\n\t\t\t\t\t\tcontent = before.content;\n\t\t\t\t}\n\n\t\t\t\t//Check if uniqueSort exists (supported by jquery >=1.12 and >=2.2)\n\t\t\t\t//Fallback to unique function for older jquery versions\n\t\t\t\tif (typeof $.uniqueSort === \"function\") {\n\t\t\t\t\tclsName = $.uniqueSort(clsName);\n\t\t\t\t} else {\n\t\t\t\t\tclsName = $.unique(clsName);\n\t\t\t\t}\n\n\t\t\t\thtml.push('' + content + '');\n\t\t\t\ttooltip = null;\n\t\t\t\tif (weekDay === this.o.weekEnd){\n\t\t\t\t\thtml.push('');\n\t\t\t\t}\n\t\t\t\tprevMonth.setUTCDate(prevMonth.getUTCDate() + 1);\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-days tbody').html(html.join(''));\n\n\t\t\tvar monthsTitle = dates[this.o.language].monthsTitle || dates['en'].monthsTitle || 'Months';\n\t\t\tvar months = this.picker.find('.datepicker-months')\n\t\t\t\t\t\t.find('.datepicker-switch')\n\t\t\t\t\t\t\t.text(this.o.maxViewMode < 2 ? monthsTitle : year)\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('tbody span').removeClass('active');\n\n\t\t\t$.each(this.dates, function(i, d){\n\t\t\t\tif (d.getUTCFullYear() === year)\n\t\t\t\t\tmonths.eq(d.getUTCMonth()).addClass('active');\n\t\t\t});\n\n\t\t\tif (year < startYear || year > endYear){\n\t\t\t\tmonths.addClass('disabled');\n\t\t\t}\n\t\t\tif (year === startYear){\n\t\t\t\tmonths.slice(0, startMonth).addClass('disabled');\n\t\t\t}\n\t\t\tif (year === endYear){\n\t\t\t\tmonths.slice(endMonth+1).addClass('disabled');\n\t\t\t}\n\n\t\t\tif (this.o.beforeShowMonth !== $.noop){\n\t\t\t\tvar that = this;\n\t\t\t\t$.each(months, function(i, month){\n var moDate = new Date(year, i, 1);\n var before = that.o.beforeShowMonth(moDate);\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof before === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof before === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false && !$(month).hasClass('disabled'))\n\t\t\t\t\t $(month).addClass('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t $(month).addClass(before.classes);\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t $(month).prop('title', before.tooltip);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Generating decade/years picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-years',\n\t\t\t\t'year',\n\t\t\t\t10,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowYear\n\t\t\t);\n\n\t\t\t// Generating century/decades picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-decades',\n\t\t\t\t'decade',\n\t\t\t\t100,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowDecade\n\t\t\t);\n\n\t\t\t// Generating millennium/centuries picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-centuries',\n\t\t\t\t'century',\n\t\t\t\t1000,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowCentury\n\t\t\t);\n\t\t},\n\n\t\tupdateNavArrows: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn;\n\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\tprevIsDisabled,\n\t\t\t\tnextIsDisabled,\n\t\t\t\tfactor = 1;\n\t\t\tswitch (this.viewMode){\n\t\t\t\tcase 4:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 3:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 2:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\tprevIsDisabled = Math.floor(year / factor) * factor <= startYear;\n\t\t\t\t\tnextIsDisabled = Math.floor(year / factor) * factor + factor > endYear;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tprevIsDisabled = year <= startYear && month <= startMonth;\n\t\t\t\t\tnextIsDisabled = year >= endYear && month >= endMonth;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.picker.find('.prev').toggleClass('disabled', prevIsDisabled);\n\t\t\tthis.picker.find('.next').toggleClass('disabled', nextIsDisabled);\n\t\t},\n\n\t\tclick: function(e){\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\n\t\t\tvar target, dir, day, year, month;\n\t\t\ttarget = $(e.target);\n\n\t\t\t// Clicked on the switch\n\t\t\tif (target.hasClass('datepicker-switch') && this.viewMode !== this.o.maxViewMode){\n\t\t\t\tthis.setViewMode(this.viewMode + 1);\n\t\t\t}\n\n\t\t\t// Clicked on today button\n\t\t\tif (target.hasClass('today') && !target.hasClass('day')){\n\t\t\t\tthis.setViewMode(0);\n\t\t\t\tthis._setDate(UTCToday(), this.o.todayBtn === 'linked' ? null : 'view');\n\t\t\t}\n\n\t\t\t// Clicked on clear button\n\t\t\tif (target.hasClass('clear')){\n\t\t\t\tthis.clearDates();\n\t\t\t}\n\n\t\t\tif (!target.hasClass('disabled')){\n\t\t\t\t// Clicked on a month, year, decade, century\n\t\t\t\tif (target.hasClass('month')\n\t\t\t\t\t\t|| target.hasClass('year')\n\t\t\t\t\t\t|| target.hasClass('decade')\n\t\t\t\t\t\t|| target.hasClass('century')) {\n\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\n\t\t\t\t\tday = 1;\n\t\t\t\t\tif (this.viewMode === 1){\n\t\t\t\t\t\tmonth = target.parent().find('span').index(target);\n\t\t\t\t\t\tyear = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\tthis.viewDate.setUTCMonth(month);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\tyear = Number(target.text());\n\t\t\t\t\t\tthis.viewDate.setUTCFullYear(year);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._trigger(DPGlobal.viewModes[this.viewMode - 1].e, this.viewDate);\n\n\t\t\t\t\tif (this.viewMode === this.o.minViewMode){\n\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.setViewMode(this.viewMode - 1);\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.picker.is(':visible') && this._focused_from){\n\t\t\t\tthis._focused_from.focus();\n\t\t\t}\n\t\t\tdelete this._focused_from;\n\t\t},\n\n\t\tdayCellClick: function(e){\n\t\t\tvar $target = $(e.currentTarget);\n\t\t\tvar timestamp = $target.data('date');\n\t\t\tvar date = new Date(timestamp);\n\n\t\t\tif (this.o.updateViewDate) {\n\t\t\t\tif (date.getUTCFullYear() !== this.viewDate.getUTCFullYear()) {\n\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t}\n\n\t\t\t\tif (date.getUTCMonth() !== this.viewDate.getUTCMonth()) {\n\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._setDate(date);\n\t\t},\n\n\t\t// Clicked on prev or next\n\t\tnavArrowsClick: function(e){\n\t\t\tvar $target = $(e.currentTarget);\n\t\t\tvar dir = $target.hasClass('prev') ? -1 : 1;\n\t\t\tif (this.viewMode !== 0){\n\t\t\t\tdir *= DPGlobal.viewModes[this.viewMode].navStep * 12;\n\t\t\t}\n\t\t\tthis.viewDate = this.moveMonth(this.viewDate, dir);\n\t\t\tthis._trigger(DPGlobal.viewModes[this.viewMode].e, this.viewDate);\n\t\t\tthis.fill();\n\t\t},\n\n\t\t_toggle_multidate: function(date){\n\t\t\tvar ix = this.dates.contains(date);\n\t\t\tif (!date){\n\t\t\t\tthis.dates.clear();\n\t\t\t}\n\n\t\t\tif (ix !== -1){\n\t\t\t\tif (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){\n\t\t\t\t\tthis.dates.remove(ix);\n\t\t\t\t}\n\t\t\t} else if (this.o.multidate === false) {\n\t\t\t\tthis.dates.clear();\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\n\t\t\tif (typeof this.o.multidate === 'number')\n\t\t\t\twhile (this.dates.length > this.o.multidate)\n\t\t\t\t\tthis.dates.remove(0);\n\t\t},\n\n\t\t_setDate: function(date, which){\n\t\t\tif (!which || which === 'date')\n\t\t\t\tthis._toggle_multidate(date && new Date(date));\n\t\t\tif ((!which && this.o.updateViewDate) || which === 'view')\n\t\t\t\tthis.viewDate = date && new Date(date);\n\n\t\t\tthis.fill();\n\t\t\tthis.setValue();\n\t\t\tif (!which || which !== 'view') {\n\t\t\t\tthis._trigger('changeDate');\n\t\t\t}\n\t\t\tthis.inputField.trigger('change');\n\t\t\tif (this.o.autoclose && (!which || which === 'date')){\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tmoveDay: function(date, dir){\n\t\t\tvar newDate = new Date(date);\n\t\t\tnewDate.setUTCDate(date.getUTCDate() + dir);\n\n\t\t\treturn newDate;\n\t\t},\n\n\t\tmoveWeek: function(date, dir){\n\t\t\treturn this.moveDay(date, dir * 7);\n\t\t},\n\n\t\tmoveMonth: function(date, dir){\n\t\t\tif (!isValidDate(date))\n\t\t\t\treturn this.o.defaultViewDate;\n\t\t\tif (!dir)\n\t\t\t\treturn date;\n\t\t\tvar new_date = new Date(date.valueOf()),\n\t\t\t\tday = new_date.getUTCDate(),\n\t\t\t\tmonth = new_date.getUTCMonth(),\n\t\t\t\tmag = Math.abs(dir),\n\t\t\t\tnew_month, test;\n\t\t\tdir = dir > 0 ? 1 : -1;\n\t\t\tif (mag === 1){\n\t\t\t\ttest = dir === -1\n\t\t\t\t\t// If going back one month, make sure month is not current month\n\t\t\t\t\t// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t? function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() === month;\n\t\t\t\t\t}\n\t\t\t\t\t// If going forward one month, make sure month is as expected\n\t\t\t\t\t// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t: function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() !== new_month;\n\t\t\t\t\t};\n\t\t\t\tnew_month = month + dir;\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t\t// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n\t\t\t\tnew_month = (new_month + 12) % 12;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// For magnitudes >1, move one month at a time...\n\t\t\t\tfor (var i=0; i < mag; i++)\n\t\t\t\t\t// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n\t\t\t\t\tnew_date = this.moveMonth(new_date, dir);\n\t\t\t\t// ...then reset the day, keeping it in the new month\n\t\t\t\tnew_month = new_date.getUTCMonth();\n\t\t\t\tnew_date.setUTCDate(day);\n\t\t\t\ttest = function(){\n\t\t\t\t\treturn new_month !== new_date.getUTCMonth();\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Common date-resetting loop -- if date is beyond end of month, make it\n\t\t\t// end of month\n\t\t\twhile (test()){\n\t\t\t\tnew_date.setUTCDate(--day);\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t}\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveYear: function(date, dir){\n\t\t\treturn this.moveMonth(date, dir*12);\n\t\t},\n\n\t\tmoveAvailableDate: function(date, dir, fn){\n\t\t\tdo {\n\t\t\t\tdate = this[fn](date, dir);\n\n\t\t\t\tif (!this.dateWithinRange(date))\n\t\t\t\t\treturn false;\n\n\t\t\t\tfn = 'moveDay';\n\t\t\t}\n\t\t\twhile (this.dateIsDisabled(date));\n\n\t\t\treturn date;\n\t\t},\n\n\t\tweekOfDateIsDisabled: function(date){\n\t\t\treturn $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1;\n\t\t},\n\n\t\tdateIsDisabled: function(date){\n\t\t\treturn (\n\t\t\t\tthis.weekOfDateIsDisabled(date) ||\n\t\t\t\t$.grep(this.o.datesDisabled, function(d){\n\t\t\t\t\treturn isUTCEquals(date, d);\n\t\t\t\t}).length > 0\n\t\t\t);\n\t\t},\n\n\t\tdateWithinRange: function(date){\n\t\t\treturn date >= this.o.startDate && date <= this.o.endDate;\n\t\t},\n\n\t\tkeydown: function(e){\n\t\t\tif (!this.picker.is(':visible')){\n\t\t\t\tif (e.keyCode === 40 || e.keyCode === 27) { // allow down to re-show picker\n\t\t\t\t\tthis.show();\n\t\t\t\t\te.stopPropagation();\n }\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar dateChanged = false,\n\t\t\t\tdir, newViewDate,\n\t\t\t\tfocusDate = this.focusDate || this.viewDate;\n\t\t\tswitch (e.keyCode){\n\t\t\t\tcase 27: // escape\n\t\t\t\t\tif (this.focusDate){\n\t\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.hide();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37: // left\n\t\t\t\tcase 38: // up\n\t\t\t\tcase 39: // right\n\t\t\t\tcase 40: // down\n\t\t\t\t\tif (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1;\n if (this.viewMode === 0) {\n \t\t\t\t\tif (e.ctrlKey){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n\n \t\t\t\t\t\tif (newViewDate)\n \t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n \t\t\t\t\t} else if (e.shiftKey){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n\n \t\t\t\t\t\tif (newViewDate)\n \t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n \t\t\t\t\t} else if (e.keyCode === 37 || e.keyCode === 39){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveDay');\n \t\t\t\t\t} else if (!this.weekOfDateIsDisabled(focusDate)){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveWeek');\n \t\t\t\t\t}\n } else if (this.viewMode === 1) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n } else if (this.viewMode === 2) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n }\n\t\t\t\t\tif (newViewDate){\n\t\t\t\t\t\tthis.focusDate = this.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13: // enter\n\t\t\t\t\tif (!this.o.forceParse)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tfocusDate = this.focusDate || this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tif (this.o.keyboardNavigation) {\n\t\t\t\t\t\tthis._toggle_multidate(focusDate);\n\t\t\t\t\t\tdateChanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.setValue();\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tif (this.picker.is(':visible')){\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tif (this.o.autoclose)\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9: // tab\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tthis.hide();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (dateChanged){\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\telse\n\t\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tthis.inputField.trigger('change');\n\t\t\t}\n\t\t},\n\n\t\tsetViewMode: function(viewMode){\n\t\t\tthis.viewMode = viewMode;\n\t\t\tthis.picker\n\t\t\t\t.children('div')\n\t\t\t\t.hide()\n\t\t\t\t.filter('.datepicker-' + DPGlobal.viewModes[this.viewMode].clsName)\n\t\t\t\t\t.show();\n\t\t\tthis.updateNavArrows();\n this._trigger('changeViewMode', new Date(this.viewDate));\n\t\t}\n\t};\n\n\tvar DateRangePicker = function(element, options){\n\t\t$.data(element, 'datepicker', this);\n\t\tthis.element = $(element);\n\t\tthis.inputs = $.map(options.inputs, function(i){\n\t\t\treturn i.jquery ? i[0] : i;\n\t\t});\n\t\tdelete options.inputs;\n\n\t\tthis.keepEmptyValues = options.keepEmptyValues;\n\t\tdelete options.keepEmptyValues;\n\n\t\tdatepickerPlugin.call($(this.inputs), options)\n\t\t\t.on('changeDate', $.proxy(this.dateUpdated, this));\n\n\t\tthis.pickers = $.map(this.inputs, function(i){\n\t\t\treturn $.data(i, 'datepicker');\n\t\t});\n\t\tthis.updateDates();\n\t};\n\tDateRangePicker.prototype = {\n\t\tupdateDates: function(){\n\t\t\tthis.dates = $.map(this.pickers, function(i){\n\t\t\t\treturn i.getUTCDate();\n\t\t\t});\n\t\t\tthis.updateRanges();\n\t\t},\n\t\tupdateRanges: function(){\n\t\t\tvar range = $.map(this.dates, function(d){\n\t\t\t\treturn d.valueOf();\n\t\t\t});\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.setRange(range);\n\t\t\t});\n\t\t},\n\t\tclearDates: function(){\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.clearDates();\n\t\t\t});\n\t\t},\n\t\tdateUpdated: function(e){\n\t\t\t// `this.updating` is a workaround for preventing infinite recursion\n\t\t\t// between `changeDate` triggering and `setUTCDate` calling. Until\n\t\t\t// there is a better mechanism.\n\t\t\tif (this.updating)\n\t\t\t\treturn;\n\t\t\tthis.updating = true;\n\n\t\t\tvar dp = $.data(e.target, 'datepicker');\n\n\t\t\tif (dp === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar new_date = dp.getUTCDate(),\n\t\t\t\tkeep_empty_values = this.keepEmptyValues,\n\t\t\t\ti = $.inArray(e.target, this.inputs),\n\t\t\t\tj = i - 1,\n\t\t\t\tk = i + 1,\n\t\t\t\tl = this.inputs.length;\n\t\t\tif (i === -1)\n\t\t\t\treturn;\n\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tif (!p.getUTCDate() && (p === dp || !keep_empty_values))\n\t\t\t\t\tp.setUTCDate(new_date);\n\t\t\t});\n\n\t\t\tif (new_date < this.dates[j]){\n\t\t\t\t// Date being moved earlier/left\n\t\t\t\twhile (j >= 0 && new_date < this.dates[j] && (this.pickers[j].element.val() || \"\").length > 0) {\n\t\t\t\t\tthis.pickers[j--].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t} else if (new_date > this.dates[k]){\n\t\t\t\t// Date being moved later/right\n\t\t\t\twhile (k < l && new_date > this.dates[k] && (this.pickers[k].element.val() || \"\").length > 0) {\n\t\t\t\t\tthis.pickers[k++].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateDates();\n\n\t\t\tdelete this.updating;\n\t\t},\n\t\tdestroy: function(){\n\t\t\t$.map(this.pickers, function(p){ p.destroy(); });\n\t\t\t$(this.inputs).off('changeDate', this.dateUpdated);\n\t\t\tdelete this.element.data().datepicker;\n\t\t},\n\t\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead')\n\t};\n\n\tfunction opts_from_el(el, prefix){\n\t\t// Derive options from element data-attrs\n\t\tvar data = $(el).data(),\n\t\t\tout = {}, inkey,\n\t\t\treplace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');\n\t\tprefix = new RegExp('^' + prefix.toLowerCase());\n\t\tfunction re_lower(_,a){\n\t\t\treturn a.toLowerCase();\n\t\t}\n\t\tfor (var key in data)\n\t\t\tif (prefix.test(key)){\n\t\t\t\tinkey = key.replace(replace, re_lower);\n\t\t\t\tout[inkey] = data[key];\n\t\t\t}\n\t\treturn out;\n\t}\n\n\tfunction opts_from_locale(lang){\n\t\t// Derive options from locale plugins\n\t\tvar out = {};\n\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t// fallback to 2 letter code eg \"de\"\n\t\tif (!dates[lang]){\n\t\t\tlang = lang.split('-')[0];\n\t\t\tif (!dates[lang])\n\t\t\t\treturn;\n\t\t}\n\t\tvar d = dates[lang];\n\t\t$.each(locale_opts, function(i,k){\n\t\t\tif (k in d)\n\t\t\t\tout[k] = d[k];\n\t\t});\n\t\treturn out;\n\t}\n\n\tvar old = $.fn.datepicker;\n\tvar datepickerPlugin = function(option){\n\t\tvar args = Array.apply(null, arguments);\n\t\targs.shift();\n\t\tvar internal_return;\n\t\tthis.each(function(){\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('datepicker'),\n\t\t\t\toptions = typeof option === 'object' && option;\n\t\t\tif (!data){\n\t\t\t\tvar elopts = opts_from_el(this, 'date'),\n\t\t\t\t\t// Preliminary otions\n\t\t\t\t\txopts = $.extend({}, defaults, elopts, options),\n\t\t\t\t\tlocopts = opts_from_locale(xopts.language),\n\t\t\t\t\t// Options priority: js args, data-attrs, locales, defaults\n\t\t\t\t\topts = $.extend({}, defaults, locopts, elopts, options);\n\t\t\t\tif ($this.hasClass('input-daterange') || opts.inputs){\n\t\t\t\t\t$.extend(opts, {\n\t\t\t\t\t\tinputs: opts.inputs || $this.find('input').toArray()\n\t\t\t\t\t});\n\t\t\t\t\tdata = new DateRangePicker(this, opts);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdata = new Datepicker(this, opts);\n\t\t\t\t}\n\t\t\t\t$this.data('datepicker', data);\n\t\t\t}\n\t\t\tif (typeof option === 'string' && typeof data[option] === 'function'){\n\t\t\t\tinternal_return = data[option].apply(data, args);\n\t\t\t}\n\t\t});\n\n\t\tif (\n\t\t\tinternal_return === undefined ||\n\t\t\tinternal_return instanceof Datepicker ||\n\t\t\tinternal_return instanceof DateRangePicker\n\t\t)\n\t\t\treturn this;\n\n\t\tif (this.length > 1)\n\t\t\tthrow new Error('Using only allowed for the collection of a single element (' + option + ' function)');\n\t\telse\n\t\t\treturn internal_return;\n\t};\n\t$.fn.datepicker = datepickerPlugin;\n\n\tvar defaults = $.fn.datepicker.defaults = {\n\t\tassumeNearbyYear: false,\n\t\tautoclose: false,\n\t\tbeforeShowDay: $.noop,\n\t\tbeforeShowMonth: $.noop,\n\t\tbeforeShowYear: $.noop,\n\t\tbeforeShowDecade: $.noop,\n\t\tbeforeShowCentury: $.noop,\n\t\tcalendarWeeks: false,\n\t\tclearBtn: false,\n\t\ttoggleActive: false,\n\t\tdaysOfWeekDisabled: [],\n\t\tdaysOfWeekHighlighted: [],\n\t\tdatesDisabled: [],\n\t\tendDate: Infinity,\n\t\tforceParse: true,\n\t\tformat: 'mm/dd/yyyy',\n\t\tisInline: null,\n\t\tkeepEmptyValues: false,\n\t\tkeyboardNavigation: true,\n\t\tlanguage: 'en',\n\t\tminViewMode: 0,\n\t\tmaxViewMode: 4,\n\t\tmultidate: false,\n\t\tmultidateSeparator: ',',\n\t\torientation: \"auto\",\n\t\trtl: false,\n\t\tstartDate: -Infinity,\n\t\tstartView: 0,\n\t\ttodayBtn: false,\n\t\ttodayHighlight: false,\n\t\tupdateViewDate: true,\n\t\tweekStart: 0,\n\t\tdisableTouchKeyboard: false,\n\t\tenableOnReadonly: true,\n\t\tshowOnFocus: true,\n\t\tzIndexOffset: 10,\n\t\tcontainer: 'body',\n\t\timmediateUpdates: false,\n\t\ttitle: '',\n\t\ttemplates: {\n\t\t\tleftArrow: '«',\n\t\t\trightArrow: '»'\n\t\t},\n showWeekDays: true\n\t};\n\tvar locale_opts = $.fn.datepicker.locale_opts = [\n\t\t'format',\n\t\t'rtl',\n\t\t'weekStart'\n\t];\n\t$.fn.datepicker.Constructor = Datepicker;\n\tvar dates = $.fn.datepicker.dates = {\n\t\ten: {\n\t\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n\t\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\t\ttoday: \"Today\",\n\t\t\tclear: \"Clear\",\n\t\t\ttitleFormat: \"MM yyyy\"\n\t\t}\n\t};\n\n\tvar DPGlobal = {\n\t\tviewModes: [\n\t\t\t{\n\t\t\t\tnames: ['days', 'month'],\n\t\t\t\tclsName: 'days',\n\t\t\t\te: 'changeMonth'\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['months', 'year'],\n\t\t\t\tclsName: 'months',\n\t\t\t\te: 'changeYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['years', 'decade'],\n\t\t\t\tclsName: 'years',\n\t\t\t\te: 'changeDecade',\n\t\t\t\tnavStep: 10\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['decades', 'century'],\n\t\t\t\tclsName: 'decades',\n\t\t\t\te: 'changeCentury',\n\t\t\t\tnavStep: 100\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['centuries', 'millennium'],\n\t\t\t\tclsName: 'centuries',\n\t\t\t\te: 'changeMillennium',\n\t\t\t\tnavStep: 1000\n\t\t\t}\n\t\t],\n\t\tvalidParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,\n\t\tnonpunctuation: /[^ -\\/:-@\\u5e74\\u6708\\u65e5\\[-`{-~\\t\\n\\r]+/g,\n\t\tparseFormat: function(format){\n\t\t\tif (typeof format.toValue === 'function' && typeof format.toDisplay === 'function')\n return format;\n // IE treats \\0 as a string end in inputs (truncating the value),\n\t\t\t// so it's a bad format delimiter, anyway\n\t\t\tvar separators = format.replace(this.validParts, '\\0').split('\\0'),\n\t\t\t\tparts = format.match(this.validParts);\n\t\t\tif (!separators || !separators.length || !parts || parts.length === 0){\n\t\t\t\tthrow new Error(\"Invalid date format.\");\n\t\t\t}\n\t\t\treturn {separators: separators, parts: parts};\n\t\t},\n\t\tparseDate: function(date, format, language, assumeNearby){\n\t\t\tif (!date)\n\t\t\t\treturn undefined;\n\t\t\tif (date instanceof Date)\n\t\t\t\treturn date;\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tif (format.toValue)\n\t\t\t\treturn format.toValue(date, format, language);\n\t\t\tvar fn_map = {\n\t\t\t\t\td: 'moveDay',\n\t\t\t\t\tm: 'moveMonth',\n\t\t\t\t\tw: 'moveWeek',\n\t\t\t\t\ty: 'moveYear'\n\t\t\t\t},\n\t\t\t\tdateAliases = {\n\t\t\t\t\tyesterday: '-1d',\n\t\t\t\t\ttoday: '+0d',\n\t\t\t\t\ttomorrow: '+1d'\n\t\t\t\t},\n\t\t\t\tparts, part, dir, i, fn;\n\t\t\tif (date in dateAliases){\n\t\t\t\tdate = dateAliases[date];\n\t\t\t}\n\t\t\tif (/^[\\-+]\\d+[dmwy]([\\s,]+[\\-+]\\d+[dmwy])*$/i.test(date)){\n\t\t\t\tparts = date.match(/([\\-+]\\d+)([dmwy])/gi);\n\t\t\t\tdate = new Date();\n\t\t\t\tfor (i=0; i < parts.length; i++){\n\t\t\t\t\tpart = parts[i].match(/([\\-+]\\d+)([dmwy])/i);\n\t\t\t\t\tdir = Number(part[1]);\n\t\t\t\t\tfn = fn_map[part[2].toLowerCase()];\n\t\t\t\t\tdate = Datepicker.prototype[fn](date, dir);\n\t\t\t\t}\n\t\t\t\treturn Datepicker.prototype._zero_utc_time(date);\n\t\t\t}\n\n\t\t\tparts = date && date.match(this.nonpunctuation) || [];\n\n\t\t\tfunction applyNearbyYear(year, threshold){\n\t\t\t\tif (threshold === true)\n\t\t\t\t\tthreshold = 10;\n\n\t\t\t\t// if year is 2 digits or less, than the user most likely is trying to get a recent century\n\t\t\t\tif (year < 100){\n\t\t\t\t\tyear += 2000;\n\t\t\t\t\t// if the new year is more than threshold years in advance, use last century\n\t\t\t\t\tif (year > ((new Date()).getFullYear()+threshold)){\n\t\t\t\t\t\tyear -= 100;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn year;\n\t\t\t}\n\n\t\t\tvar parsed = {},\n\t\t\t\tsetters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],\n\t\t\t\tsetters_map = {\n\t\t\t\t\tyyyy: function(d,v){\n\t\t\t\t\t\treturn d.setUTCFullYear(assumeNearby ? applyNearbyYear(v, assumeNearby) : v);\n\t\t\t\t\t},\n\t\t\t\t\tm: function(d,v){\n\t\t\t\t\t\tif (isNaN(d))\n\t\t\t\t\t\t\treturn d;\n\t\t\t\t\t\tv -= 1;\n\t\t\t\t\t\twhile (v < 0) v += 12;\n\t\t\t\t\t\tv %= 12;\n\t\t\t\t\t\td.setUTCMonth(v);\n\t\t\t\t\t\twhile (d.getUTCMonth() !== v)\n\t\t\t\t\t\t\td.setUTCDate(d.getUTCDate()-1);\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t},\n\t\t\t\t\td: function(d,v){\n\t\t\t\t\t\treturn d.setUTCDate(v);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tval, filtered;\n\t\t\tsetters_map['yy'] = setters_map['yyyy'];\n\t\t\tsetters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\n\t\t\tsetters_map['dd'] = setters_map['d'];\n\t\t\tdate = UTCToday();\n\t\t\tvar fparts = format.parts.slice();\n\t\t\t// Remove noop parts\n\t\t\tif (parts.length !== fparts.length){\n\t\t\t\tfparts = $(fparts).filter(function(i,p){\n\t\t\t\t\treturn $.inArray(p, setters_order) !== -1;\n\t\t\t\t}).toArray();\n\t\t\t}\n\t\t\t// Process remainder\n\t\t\tfunction match_part(){\n\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\treturn m.toLowerCase() === p.toLowerCase();\n\t\t\t}\n\t\t\tif (parts.length === fparts.length){\n\t\t\t\tvar cnt;\n\t\t\t\tfor (i=0, cnt = fparts.length; i < cnt; i++){\n\t\t\t\t\tval = parseInt(parts[i], 10);\n\t\t\t\t\tpart = fparts[i];\n\t\t\t\t\tif (isNaN(val)){\n\t\t\t\t\t\tswitch (part){\n\t\t\t\t\t\t\tcase 'MM':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].months).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].months) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].monthsShort).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n\t\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\tparsed[part] = val;\n\t\t\t\t}\n\t\t\t\tvar _date, s;\n\t\t\t\tfor (i=0; i < setters_order.length; i++){\n\t\t\t\t\ts = setters_order[i];\n\t\t\t\t\tif (s in parsed && !isNaN(parsed[s])){\n\t\t\t\t\t\t_date = new Date(date);\n\t\t\t\t\t\tsetters_map[s](_date, parsed[s]);\n\t\t\t\t\t\tif (!isNaN(_date))\n\t\t\t\t\t\t\tdate = _date;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t},\n\t\tformatDate: function(date, format, language){\n\t\t\tif (!date)\n\t\t\t\treturn '';\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tif (format.toDisplay)\n return format.toDisplay(date, format, language);\n var val = {\n\t\t\t\td: date.getUTCDate(),\n\t\t\t\tD: dates[language].daysShort[date.getUTCDay()],\n\t\t\t\tDD: dates[language].days[date.getUTCDay()],\n\t\t\t\tm: date.getUTCMonth() + 1,\n\t\t\t\tM: dates[language].monthsShort[date.getUTCMonth()],\n\t\t\t\tMM: dates[language].months[date.getUTCMonth()],\n\t\t\t\tyy: date.getUTCFullYear().toString().substring(2),\n\t\t\t\tyyyy: date.getUTCFullYear()\n\t\t\t};\n\t\t\tval.dd = (val.d < 10 ? '0' : '') + val.d;\n\t\t\tval.mm = (val.m < 10 ? '0' : '') + val.m;\n\t\t\tdate = [];\n\t\t\tvar seps = $.extend([], format.separators);\n\t\t\tfor (var i=0, cnt = format.parts.length; i <= cnt; i++){\n\t\t\t\tif (seps.length)\n\t\t\t\t\tdate.push(seps.shift());\n\t\t\t\tdate.push(val[format.parts[i]]);\n\t\t\t}\n\t\t\treturn date.join('');\n\t\t},\n\t\theadTemplate: ''+\n\t\t\t ''+\n\t\t\t ''+\n\t\t\t ''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+defaults.templates.leftArrow+''+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+defaults.templates.rightArrow+''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t'',\n\t\tcontTemplate: '',\n\t\tfootTemplate: ''+\n\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\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};\n\tDPGlobal.template = '
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\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$.fn.datepicker.DPGlobal = DPGlobal;\n\n\n\t/* DATEPICKER NO CONFLICT\n\t* =================== */\n\n\t$.fn.datepicker.noConflict = function(){\n\t\t$.fn.datepicker = old;\n\t\treturn this;\n\t};\n\n\t/* DATEPICKER VERSION\n\t * =================== */\n\t$.fn.datepicker.version = '1.10.0';\n\n\t$.fn.datepicker.deprecated = function(msg){\n\t\tvar console = window.console;\n\t\tif (console && console.warn) {\n\t\t\tconsole.warn('DEPRECATED: ' + msg);\n\t\t}\n\t};\n\n\n\t/* DATEPICKER DATA-API\n\t* ================== */\n\n\t$(document).on(\n\t\t'focus.datepicker.data-api click.datepicker.data-api',\n\t\t'[data-provide=\"datepicker\"]',\n\t\tfunction(e){\n\t\t\tvar $this = $(this);\n\t\t\tif ($this.data('datepicker'))\n\t\t\t\treturn;\n\t\t\te.preventDefault();\n\t\t\t// component click requires us to explicitly show it\n\t\t\tdatepickerPlugin.call($this, 'show');\n\t\t}\n\t);\n\t$(function(){\n\t\tdatepickerPlugin.call($('[data-provide=\"datepicker-inline\"]'));\n\t});\n\n}));\n","!function(a){a.fn.datepicker.dates.nl={days:[\"zondag\",\"maandag\",\"dinsdag\",\"woensdag\",\"donderdag\",\"vrijdag\",\"zaterdag\"],daysShort:[\"zo\",\"ma\",\"di\",\"wo\",\"do\",\"vr\",\"za\"],daysMin:[\"zo\",\"ma\",\"di\",\"wo\",\"do\",\"vr\",\"za\"],months:[\"januari\",\"februari\",\"maart\",\"april\",\"mei\",\"juni\",\"juli\",\"augustus\",\"september\",\"oktober\",\"november\",\"december\"],monthsShort:[\"jan\",\"feb\",\"mrt\",\"apr\",\"mei\",\"jun\",\"jul\",\"aug\",\"sep\",\"okt\",\"nov\",\"dec\"],today:\"Vandaag\",monthsTitle:\"Maanden\",clear:\"Wissen\",weekStart:1,format:\"dd-mm-yyyy\"}}(jQuery);","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\nvar Collapse = function ($) {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n var NAME = 'collapse';\n var VERSION = '4.0.0';\n var DATA_KEY = 'bs.collapse';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $.fn[NAME];\n var TRANSITION_DURATION = 600;\n var Default = {\n toggle: true,\n parent: ''\n };\n var DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n };\n var Event = {\n SHOW: \"show\" + EVENT_KEY,\n SHOWN: \"shown\" + EVENT_KEY,\n HIDE: \"hide\" + EVENT_KEY,\n HIDDEN: \"hidden\" + EVENT_KEY,\n CLICK_DATA_API: \"click\" + EVENT_KEY + DATA_API_KEY\n };\n var ClassName = {\n SHOW: 'show',\n COLLAPSE: 'collapse',\n COLLAPSING: 'collapsing',\n COLLAPSED: 'collapsed'\n };\n var Dimension = {\n WIDTH: 'width',\n HEIGHT: 'height'\n };\n var Selector = {\n ACTIVES: '.show, .collapsing',\n DATA_TOGGLE: '[data-toggle=\"collapse\"]'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Collapse =\n /*#__PURE__*/\n function () {\n function Collapse(element, config) {\n this._isTransitioning = false;\n this._element = element;\n this._config = this._getConfig(config);\n this._triggerArray = $.makeArray($(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n var tabToggles = $(Selector.DATA_TOGGLE);\n\n for (var i = 0; i < tabToggles.length; i++) {\n var elem = tabToggles[i];\n var selector = Util.getSelectorFromElement(elem);\n\n if (selector !== null && $(selector).filter(element).length > 0) {\n this._selector = selector;\n\n this._triggerArray.push(elem);\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null;\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n var _proto = Collapse.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if ($(this._element).hasClass(ClassName.SHOW)) {\n this.hide();\n } else {\n this.show();\n }\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if (this._isTransitioning || $(this._element).hasClass(ClassName.SHOW)) {\n return;\n }\n\n var actives;\n var activesData;\n\n if (this._parent) {\n actives = $.makeArray($(this._parent).find(Selector.ACTIVES).filter(\"[data-parent=\\\"\" + this._config.parent + \"\\\"]\"));\n\n if (actives.length === 0) {\n actives = null;\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY);\n\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n\n var startEvent = $.Event(Event.SHOW);\n $(this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');\n\n if (!activesData) {\n $(actives).data(DATA_KEY, null);\n }\n }\n\n var dimension = this._getDimension();\n\n $(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);\n this._element.style[dimension] = 0;\n\n if (this._triggerArray.length > 0) {\n $(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n $(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW);\n _this._element.style[dimension] = '';\n\n _this.setTransitioning(false);\n\n $(_this._element).trigger(Event.SHOWN);\n };\n\n if (!Util.supportsTransitionEnd()) {\n complete();\n return;\n }\n\n var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n var scrollSize = \"scroll\" + capitalizedDimension;\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);\n this._element.style[dimension] = this._element[scrollSize] + \"px\";\n };\n\n _proto.hide = function hide() {\n var _this2 = this;\n\n if (this._isTransitioning || !$(this._element).hasClass(ClassName.SHOW)) {\n return;\n }\n\n var startEvent = $.Event(Event.HIDE);\n $(this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n var dimension = this._getDimension();\n\n this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n Util.reflow(this._element);\n $(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);\n\n if (this._triggerArray.length > 0) {\n for (var i = 0; i < this._triggerArray.length; i++) {\n var trigger = this._triggerArray[i];\n var selector = Util.getSelectorFromElement(trigger);\n\n if (selector !== null) {\n var $elem = $(selector);\n\n if (!$elem.hasClass(ClassName.SHOW)) {\n $(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);\n }\n }\n }\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n _this2.setTransitioning(false);\n\n $(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN);\n };\n\n this._element.style[dimension] = '';\n\n if (!Util.supportsTransitionEnd()) {\n complete();\n return;\n }\n\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);\n };\n\n _proto.setTransitioning = function setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning;\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY);\n this._config = null;\n this._parent = null;\n this._element = null;\n this._triggerArray = null;\n this._isTransitioning = null;\n }; // Private\n\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default, config);\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n Util.typeCheckConfig(NAME, config, DefaultType);\n return config;\n };\n\n _proto._getDimension = function _getDimension() {\n var hasWidth = $(this._element).hasClass(Dimension.WIDTH);\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;\n };\n\n _proto._getParent = function _getParent() {\n var _this3 = this;\n\n var parent = null;\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent; // It's a jQuery object\n\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0];\n }\n } else {\n parent = $(this._config.parent)[0];\n }\n\n var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n $(parent).find(selector).each(function (i, element) {\n _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n });\n return parent;\n };\n\n _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n if (element) {\n var isOpen = $(element).hasClass(ClassName.SHOW);\n\n if (triggerArray.length > 0) {\n $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n }\n }\n }; // Static\n\n\n Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n var selector = Util.getSelectorFromElement(element);\n return selector ? $(selector)[0] : null;\n };\n\n Collapse._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data(DATA_KEY);\n\n var _config = _extends({}, Default, $this.data(), typeof config === 'object' && config);\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n if (!data) {\n data = new Collapse(this, _config);\n $this.data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Collapse, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n\n return Collapse;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n var $trigger = $(this);\n var selector = Util.getSelectorFromElement(this);\n $(selector).each(function () {\n var $target = $(this);\n var data = $target.data(DATA_KEY);\n var config = data ? 'toggle' : $trigger.data();\n\n Collapse._jQueryInterface.call($target, config);\n });\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Collapse._jQueryInterface;\n $.fn[NAME].Constructor = Collapse;\n\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return Collapse._jQueryInterface;\n };\n\n return Collapse;\n}($);\n//# sourceMappingURL=collapse.js.map","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\nvar Util = function ($) {\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n var transition = false;\n var MAX_UID = 1000000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-zA-Z]+)/)[1].toLowerCase();\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: transition.end,\n delegateType: transition.end,\n handle: function handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n\n return undefined; // eslint-disable-line no-undefined\n }\n };\n }\n\n function transitionEndTest() {\n if (typeof window !== 'undefined' && window.QUnit) {\n return false;\n }\n\n return {\n end: 'transitionend'\n };\n }\n\n function transitionEndEmulator(duration) {\n var _this = this;\n\n var called = false;\n $(this).one(Util.TRANSITION_END, function () {\n called = true;\n });\n setTimeout(function () {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n\n function setTransitionEndSupport() {\n transition = transitionEndTest();\n $.fn.emulateTransitionEnd = transitionEndEmulator;\n\n if (Util.supportsTransitionEnd()) {\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n }\n\n function escapeId(selector) {\n // We escape IDs in case of special selectors (selector = '#myId:something')\n // $.escapeSelector does not exist in jQuery < 3\n selector = typeof $.escapeSelector === 'function' ? $.escapeSelector(selector).substr(1) : selector.replace(/(:|\\.|\\[|\\]|,|=|@)/g, '\\\\$1');\n return selector;\n }\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n\n var Util = {\n TRANSITION_END: 'bsTransitionEnd',\n getUID: function getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix));\n\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n var selector = element.getAttribute('data-target');\n\n if (!selector || selector === '#') {\n selector = element.getAttribute('href') || '';\n } // If it's an ID\n\n\n if (selector.charAt(0) === '#') {\n selector = escapeId(selector);\n }\n\n try {\n var $selector = $(document).find(selector);\n return $selector.length > 0 ? selector : null;\n } catch (err) {\n return null;\n }\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $(element).trigger(transition.end);\n },\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(transition);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n }\n }\n }\n }\n };\n setTransitionEndSupport();\n return Util;\n}($);\n//# sourceMappingURL=util.js.map\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = Util;","/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n( function( global, factory ) {\n\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 trac-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 version = \"3.7.1\",\n\n\trhtmlSuffix = /HTML$/i,\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\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\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\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\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}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\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\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\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: https://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] 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\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: 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\tneedsContext: 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\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\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// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\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\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 = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( 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 9 only\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\tpush.call( results, 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 9 only\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\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, 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 ] ) && context.getElementsByClassName ) {\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 ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\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 ) || rleadingCombinator.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\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\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 = jQuery.escapeSelector( nid );\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( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/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 jQuery selector module\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 * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"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\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.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\telem.isDisabled !== !disabled &&\n\t\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 jQuery selector 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/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar 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\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors\n\t// (see trac-13936).\n\t// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n\t// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n\tif ( documentElement.msMatchesSelector &&\n\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\tpreferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n\n\t// Support: IE <10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\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 = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = 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\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"\" +\n\t\t\t\"\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( 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\tfind.contains( 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\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ 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\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.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 jQuery.contains( context, elem );\n};\n\n\nfind.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 (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.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 */\njQuery.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\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, 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\tsplice.call( results, 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\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\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\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.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\tCHILD: 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\tfind.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\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: 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\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = 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 nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.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\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, 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\tnodeName( node, 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\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = 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\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} 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\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ 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\tnodeName( node, 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\t\t\t\t\t\t\t\t\t\t\touterCache[ 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\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://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\tfind.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 jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: 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( rtrimCSS, \"$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\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/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\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( 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// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: 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\tfind.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\ttarget: 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\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\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\tempty: function( elem ) {\n\n\t\t\t// https://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\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// 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\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: 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\todd: 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\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\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\tgt: 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\nfunction tokenize( 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 = rleadingCombinator.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( rtrimCSS, \" \" )\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\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\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, 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\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ 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\touterCache[ 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\tfind( 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, matcherOut,\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 ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\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.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\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\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\n\t\t\t// (see https://github.com/jquery/sizzle/issues/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\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$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: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching\n\t\t\t// elements by id. (see trac-14142)\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\tpush.call( results, 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\tjQuery.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\nfunction compile( 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( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 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 ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\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\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\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\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 (trac-9521)\n\t// Strict HTML recognition (trac-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 jQuery#find\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.error );\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 error, 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.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = 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\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\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,\n\t\t\terror.stack, asyncError );\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 trac-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 (trac-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 trac-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 (trac-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 (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-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 (trac-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 (trac-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 (trac-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\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 (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-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 (trac-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\", true );\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, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\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 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\tif ( !saved ) {\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\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\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\treturn result;\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\n\t\t\t\t// the 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 ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\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 (trac-504, trac-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\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\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\tvar attaches;\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, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\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},\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\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\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 (trac-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// Re-enable 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\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\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 jQuery#find here for performance reasons:\n\t\t\t// 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 rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-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 (trac-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 = \"box-sizing:content-box;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\t\tisCustomProp = rcustomProp.test( name ),\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, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\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\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\t\tmarginDelta = 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\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += 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 + marginDelta;\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\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: 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 (trac-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 trac-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 (trac-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 )` (trac-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.\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// Use proper attribute retrieval (trac-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 classNames, cur, curValue, className, i, finalValue;\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\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\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\tthis.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 classNames, cur, curValue, className, i, finalValue;\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\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\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\tthis.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 classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\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\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = 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 (trac-14686, trac-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 (trac-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\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 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 (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-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 (trac-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\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// trac-7653, trac-8125, trac-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 (trac-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 trac-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 (trac-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 trac-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 (trac-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// trac-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 (trac-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// trac-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 trac-8605, trac-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// trac-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( \"