{
  "version": 3,
  "sources": ["../../../node_modules/jquery/dist/jquery.js", "../../../node_modules/jquery-ujs/src/rails.js", "../../../node_modules/popper.js/src/utils/isBrowser.js", "../../../node_modules/popper.js/src/utils/debounce.js", "../../../node_modules/popper.js/src/utils/isFunction.js", "../../../node_modules/popper.js/src/utils/getStyleComputedProperty.js", "../../../node_modules/popper.js/src/utils/getParentNode.js", "../../../node_modules/popper.js/src/utils/getScrollParent.js", "../../../node_modules/popper.js/src/utils/getReferenceNode.js", "../../../node_modules/popper.js/src/utils/isIE.js", "../../../node_modules/popper.js/src/utils/getOffsetParent.js", "../../../node_modules/popper.js/src/utils/isOffsetContainer.js", "../../../node_modules/popper.js/src/utils/getRoot.js", "../../../node_modules/popper.js/src/utils/findCommonOffsetParent.js", "../../../node_modules/popper.js/src/utils/getScroll.js", "../../../node_modules/popper.js/src/utils/includeScroll.js", "../../../node_modules/popper.js/src/utils/getBordersSize.js", "../../../node_modules/popper.js/src/utils/getWindowSizes.js", "../../../node_modules/popper.js/src/utils/getClientRect.js", "../../../node_modules/popper.js/src/utils/getBoundingClientRect.js", "../../../node_modules/popper.js/src/utils/getOffsetRectRelativeToArbitraryNode.js", "../../../node_modules/popper.js/src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js", "../../../node_modules/popper.js/src/utils/isFixed.js", "../../../node_modules/popper.js/src/utils/getFixedPositionOffsetParent.js", "../../../node_modules/popper.js/src/utils/getBoundaries.js", "../../../node_modules/popper.js/src/utils/computeAutoPlacement.js", "../../../node_modules/popper.js/src/utils/getReferenceOffsets.js", "../../../node_modules/popper.js/src/utils/getOuterSizes.js", "../../../node_modules/popper.js/src/utils/getOppositePlacement.js", "../../../node_modules/popper.js/src/utils/getPopperOffsets.js", "../../../node_modules/popper.js/src/utils/find.js", "../../../node_modules/popper.js/src/utils/findIndex.js", "../../../node_modules/popper.js/src/utils/runModifiers.js", "../../../node_modules/popper.js/src/methods/update.js", "../../../node_modules/popper.js/src/utils/isModifierEnabled.js", "../../../node_modules/popper.js/src/utils/getSupportedPropertyName.js", "../../../node_modules/popper.js/src/methods/destroy.js", "../../../node_modules/popper.js/src/utils/getWindow.js", "../../../node_modules/popper.js/src/utils/setupEventListeners.js", "../../../node_modules/popper.js/src/methods/enableEventListeners.js", "../../../node_modules/popper.js/src/utils/removeEventListeners.js", "../../../node_modules/popper.js/src/methods/disableEventListeners.js", "../../../node_modules/popper.js/src/utils/isNumeric.js", "../../../node_modules/popper.js/src/utils/setStyles.js", "../../../node_modules/popper.js/src/utils/setAttributes.js", "../../../node_modules/popper.js/src/modifiers/applyStyle.js", "../../../node_modules/popper.js/src/utils/getRoundedOffsets.js", "../../../node_modules/popper.js/src/modifiers/computeStyle.js", "../../../node_modules/popper.js/src/utils/isModifierRequired.js", "../../../node_modules/popper.js/src/modifiers/arrow.js", "../../../node_modules/popper.js/src/utils/getOppositeVariation.js", "../../../node_modules/popper.js/src/methods/placements.js", "../../../node_modules/popper.js/src/utils/clockwise.js", "../../../node_modules/popper.js/src/modifiers/flip.js", "../../../node_modules/popper.js/src/modifiers/keepTogether.js", "../../../node_modules/popper.js/src/modifiers/offset.js", "../../../node_modules/popper.js/src/modifiers/preventOverflow.js", "../../../node_modules/popper.js/src/modifiers/shift.js", "../../../node_modules/popper.js/src/modifiers/hide.js", "../../../node_modules/popper.js/src/modifiers/inner.js", "../../../node_modules/popper.js/src/modifiers/index.js", "../../../node_modules/popper.js/src/methods/defaults.js", "../../../node_modules/popper.js/src/index.js", "../../../node_modules/bootstrap/js/src/util.js", "../../../node_modules/bootstrap/js/src/alert.js", "../../../node_modules/bootstrap/js/src/button.js", "../../../node_modules/bootstrap/js/src/carousel.js", "../../../node_modules/bootstrap/js/src/collapse.js", "../../../node_modules/bootstrap/js/src/dropdown.js", "../../../node_modules/bootstrap/js/src/modal.js", "../../../node_modules/bootstrap/js/src/tools/sanitizer.js", "../../../node_modules/bootstrap/js/src/tooltip.js", "../../../node_modules/bootstrap/js/src/popover.js", "../../../node_modules/bootstrap/js/src/scrollspy.js", "../../../node_modules/bootstrap/js/src/tab.js", "../../../node_modules/bootstrap/js/src/toast.js", "../../javascript/vendor/jquery_global.js", "../../javascript/vendor.js", "../../../node_modules/flatpickr/dist/esm/types/options.js", "../../../node_modules/flatpickr/dist/esm/l10n/default.js", "../../../node_modules/flatpickr/dist/esm/utils/index.js", "../../../node_modules/flatpickr/dist/esm/utils/dom.js", "../../../node_modules/flatpickr/dist/esm/utils/formatting.js", "../../../node_modules/flatpickr/dist/esm/utils/dates.js", "../../../node_modules/flatpickr/dist/esm/utils/polyfills.js", "../../../node_modules/flatpickr/dist/esm/index.js", "../../../node_modules/local-time/app/assets/javascripts/local-time.es2017-esm.js", "../../javascript/vendor/common.js", "../../javascript/vendor/tooltips.js", "../../javascript/vendor/users.js", "../../javascript/vendor/simulator.js"],
  "sourcesContent": ["/*!\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 <object> 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\"<a id='\" + expando + \"' href='' disabled='disabled'></a>\" +\n\t\t\t\"<select id='\" + expando + \"-\\r\\\\' disabled='disabled'>\" +\n\t\t\t\"<option selected=''></option></select>\";\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: <number>) 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 <tag> 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// <object> 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 = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\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 <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\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, \"<select multiple='multiple'>\", \"</select>\" ];\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 <use> 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 = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\n\trcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\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( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\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\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this\n\t\t\t.on( \"mouseenter\", fnOver )\n\t\t\t.on( \"mouseleave\", fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\n// Require that the \"whitespace run\" starts from a non-whitespace\n// to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"$1\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (trac-13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n", "/* jshint node: true */\n\n/**\n * Unobtrusive scripting adapter for jQuery\n * https://github.com/rails/jquery-ujs\n *\n * Requires jQuery 1.8.0 or later.\n *\n * Released under the MIT license\n *\n */\n\n(function() {\n  'use strict';\n\n  var jqueryUjsInit = function($, undefined) {\n\n  // Cut down on the number of issues from people inadvertently including jquery_ujs twice\n  // by detecting and raising an error when it happens.\n  if ( $.rails !== undefined ) {\n    $.error('jquery-ujs has already been loaded!');\n  }\n\n  // Shorthand to make it a little easier to call public rails functions from within rails.js\n  var rails;\n  var $document = $(document);\n\n  $.rails = rails = {\n    // Link elements bound by jquery-ujs\n    linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n\n    // Button elements bound by jquery-ujs\n    buttonClickSelector: 'button[data-remote]:not([form]):not(form button), button[data-confirm]:not([form]):not(form button)',\n\n    // Select elements bound by jquery-ujs\n    inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n\n    // Form elements bound by jquery-ujs\n    formSubmitSelector: 'form:not([data-turbo=true])',\n\n    // Form input elements bound by jquery-ujs\n    formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n\n    // Form input elements disabled during form submission\n    disableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n\n    // Form input elements re-enabled after form submission\n    enableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n\n    // Form required input elements\n    requiredInputSelector: 'input[name][required]:not([disabled]), textarea[name][required]:not([disabled])',\n\n    // Form file input elements\n    fileInputSelector: 'input[name][type=file]:not([disabled])',\n\n    // Link onClick disable selector with possible reenable after remote submission\n    linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n\n    // Button onClick disable selector with possible reenable after remote submission\n    buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]',\n\n    // Up-to-date Cross-Site Request Forgery token\n    csrfToken: function() {\n     return $('meta[name=csrf-token]').attr('content');\n    },\n\n    // URL param that must contain the CSRF token\n    csrfParam: function() {\n     return $('meta[name=csrf-param]').attr('content');\n    },\n\n    // Make sure that every Ajax request sends the CSRF token\n    CSRFProtection: function(xhr) {\n      var token = rails.csrfToken();\n      if (token) xhr.setRequestHeader('X-CSRF-Token', token);\n    },\n\n    // Make sure that all forms have actual up-to-date tokens (cached forms contain old ones)\n    refreshCSRFTokens: function(){\n      $('form input[name=\"' + rails.csrfParam() + '\"]').val(rails.csrfToken());\n    },\n\n    // Triggers an event on an element and returns false if the event result is false\n    fire: function(obj, name, data) {\n      var event = $.Event(name);\n      obj.trigger(event, data);\n      return event.result !== false;\n    },\n\n    // Default confirm dialog, may be overridden with custom confirm dialog in $.rails.confirm\n    confirm: function(message) {\n      return confirm(message);\n    },\n\n    // Default ajax function, may be overridden with custom function in $.rails.ajax\n    ajax: function(options) {\n      return $.ajax(options);\n    },\n\n    // Default way to get an element's href. May be overridden at $.rails.href.\n    href: function(element) {\n      return element[0].href;\n    },\n\n    // Checks \"data-remote\" if true to handle the request through a XHR request.\n    isRemote: function(element) {\n      return element.data('remote') !== undefined && element.data('remote') !== false;\n    },\n\n    // Submits \"remote\" forms and links with ajax\n    handleRemote: function(element) {\n      var method, url, data, withCredentials, dataType, options;\n\n      if (rails.fire(element, 'ajax:before')) {\n        withCredentials = element.data('with-credentials') || null;\n        dataType = element.data('type') || ($.ajaxSettings && $.ajaxSettings.dataType);\n\n        if (element.is('form')) {\n          method = element.data('ujs:submit-button-formmethod') || element.attr('method');\n          url = element.data('ujs:submit-button-formaction') || element.attr('action');\n          data = $(element[0]).serializeArray();\n          // memoized value from clicked submit button\n          var button = element.data('ujs:submit-button');\n          if (button) {\n            data.push(button);\n            element.data('ujs:submit-button', null);\n          }\n          element.data('ujs:submit-button-formmethod', null);\n          element.data('ujs:submit-button-formaction', null);\n        } else if (element.is(rails.inputChangeSelector)) {\n          method = element.data('method');\n          url = element.data('url');\n          data = element.serialize();\n          if (element.data('params')) data = data + '&' + element.data('params');\n        } else if (element.is(rails.buttonClickSelector)) {\n          method = element.data('method') || 'get';\n          url = element.data('url');\n          data = element.serialize();\n          if (element.data('params')) data = data + '&' + element.data('params');\n        } else {\n          method = element.data('method');\n          url = rails.href(element);\n          data = element.data('params') || null;\n        }\n\n        options = {\n          type: method || 'GET', data: data, dataType: dataType,\n          // stopping the \"ajax:beforeSend\" event will cancel the ajax request\n          beforeSend: function(xhr, settings) {\n            if (settings.dataType === undefined) {\n              xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);\n            }\n            if (rails.fire(element, 'ajax:beforeSend', [xhr, settings])) {\n              element.trigger('ajax:send', xhr);\n            } else {\n              return false;\n            }\n          },\n          success: function(data, status, xhr) {\n            element.trigger('ajax:success', [data, status, xhr]);\n          },\n          complete: function(xhr, status) {\n            element.trigger('ajax:complete', [xhr, status]);\n          },\n          error: function(xhr, status, error) {\n            element.trigger('ajax:error', [xhr, status, error]);\n          },\n          crossDomain: rails.isCrossDomain(url)\n        };\n\n        // There is no withCredentials for IE6-8 when\n        // \"Enable native XMLHTTP support\" is disabled\n        if (withCredentials) {\n          options.xhrFields = {\n            withCredentials: withCredentials\n          };\n        }\n\n        // Only pass url to `ajax` options if not blank\n        if (url) { options.url = url; }\n\n        return rails.ajax(options);\n      } else {\n        return false;\n      }\n    },\n\n    // Determines if the request is a cross domain request.\n    isCrossDomain: function(url) {\n      var originAnchor = document.createElement('a');\n      originAnchor.href = location.href;\n      var urlAnchor = document.createElement('a');\n\n      try {\n        urlAnchor.href = url;\n        // This is a workaround to a IE bug.\n        urlAnchor.href = urlAnchor.href;\n\n        // If URL protocol is false or is a string containing a single colon\n        // *and* host are false, assume it is not a cross-domain request\n        // (should only be the case for IE7 and IE compatibility mode).\n        // Otherwise, evaluate protocol and host of the URL against the origin\n        // protocol and host.\n        return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) ||\n          (originAnchor.protocol + '//' + originAnchor.host ===\n            urlAnchor.protocol + '//' + urlAnchor.host));\n      } catch (e) {\n        // If there is an error parsing the URL, assume it is crossDomain.\n        return true;\n      }\n    },\n\n    // Handles \"data-method\" on links such as:\n    // <a href=\"/users/5\" data-method=\"delete\" rel=\"nofollow\" data-confirm=\"Are you sure?\">Delete</a>\n    handleMethod: function(link) {\n      var href = rails.href(link),\n        method = link.data('method'),\n        target = link.attr('target'),\n        csrfToken = rails.csrfToken(),\n        csrfParam = rails.csrfParam(),\n        form = $('<form method=\"post\" action=\"' + href + '\"></form>'),\n        metadataInput = '<input name=\"_method\" value=\"' + method + '\" type=\"hidden\" />';\n\n      if (csrfParam !== undefined && csrfToken !== undefined && !rails.isCrossDomain(href)) {\n        metadataInput += '<input name=\"' + csrfParam + '\" value=\"' + csrfToken + '\" type=\"hidden\" />';\n      }\n\n      if (target) { form.attr('target', target); }\n\n      form.hide().append(metadataInput).appendTo('body');\n      form.submit();\n    },\n\n    // Helper function that returns form elements that match the specified CSS selector\n    // If form is actually a \"form\" element this will return associated elements outside the from that have\n    // the html form attribute set\n    formElements: function(form, selector) {\n      return form.is('form') ? $(form[0].elements).filter(selector) : form.find(selector);\n    },\n\n    /* Disables form elements:\n      - Caches element value in 'ujs:enable-with' data store\n      - Replaces element text with value of 'data-disable-with' attribute\n      - Sets disabled property to true\n    */\n    disableFormElements: function(form) {\n      rails.formElements(form, rails.disableSelector).each(function() {\n        rails.disableFormElement($(this));\n      });\n    },\n\n    disableFormElement: function(element) {\n      var method, replacement;\n\n      method = element.is('button') ? 'html' : 'val';\n      replacement = element.data('disable-with');\n\n      if (replacement !== undefined) {\n        element.data('ujs:enable-with', element[method]());\n        element[method](replacement);\n      }\n\n      element.prop('disabled', true);\n      element.data('ujs:disabled', true);\n    },\n\n    /* Re-enables disabled form elements:\n      - Replaces element text with cached value from 'ujs:enable-with' data store (created in `disableFormElements`)\n      - Sets disabled property to false\n    */\n    enableFormElements: function(form) {\n      rails.formElements(form, rails.enableSelector).each(function() {\n        rails.enableFormElement($(this));\n      });\n    },\n\n    enableFormElement: function(element) {\n      var method = element.is('button') ? 'html' : 'val';\n      if (element.data('ujs:enable-with') !== undefined) {\n        element[method](element.data('ujs:enable-with'));\n        element.removeData('ujs:enable-with'); // clean up cache\n      }\n      element.prop('disabled', false);\n      element.removeData('ujs:disabled');\n    },\n\n   /* For 'data-confirm' attribute:\n      - Fires `confirm` event\n      - Shows the confirmation dialog\n      - Fires the `confirm:complete` event\n\n      Returns `true` if no function stops the chain and user chose yes; `false` otherwise.\n      Attaching a handler to the element's `confirm` event that returns a `falsy` value cancels the confirmation dialog.\n      Attaching a handler to the element's `confirm:complete` event that returns a `falsy` value makes this function\n      return false. The `confirm:complete` event is fired whether or not the user answered true or false to the dialog.\n   */\n    allowAction: function(element) {\n      var message = element.data('confirm'),\n          answer = false, callback;\n      if (!message) { return true; }\n\n      if (rails.fire(element, 'confirm')) {\n        try {\n          answer = rails.confirm(message);\n        } catch (e) {\n          (console.error || console.log).call(console, e.stack || e);\n        }\n        callback = rails.fire(element, 'confirm:complete', [answer]);\n      }\n      return answer && callback;\n    },\n\n    // Helper function which checks for blank inputs in a form that match the specified CSS selector\n    blankInputs: function(form, specifiedSelector, nonBlank) {\n      var foundInputs = $(),\n        input,\n        valueToCheck,\n        radiosForNameWithNoneSelected,\n        radioName,\n        selector = specifiedSelector || 'input,textarea',\n        requiredInputs = form.find(selector),\n        checkedRadioButtonNames = {};\n\n      requiredInputs.each(function() {\n        input = $(this);\n        if (input.is('input[type=radio]')) {\n\n          // Don't count unchecked required radio as blank if other radio with same name is checked,\n          // regardless of whether same-name radio input has required attribute or not. The spec\n          // states https://www.w3.org/TR/html5/forms.html#the-required-attribute\n          radioName = input.attr('name');\n\n          // Skip if we've already seen the radio with this name.\n          if (!checkedRadioButtonNames[radioName]) {\n\n            // If none checked\n            if (form.find('input[type=radio]:checked[name=\"' + radioName + '\"]').length === 0) {\n              radiosForNameWithNoneSelected = form.find(\n                'input[type=radio][name=\"' + radioName + '\"]');\n              foundInputs = foundInputs.add(radiosForNameWithNoneSelected);\n            }\n\n            // We only need to check each name once.\n            checkedRadioButtonNames[radioName] = radioName;\n          }\n        } else {\n          valueToCheck = input.is('input[type=checkbox],input[type=radio]') ? input.is(':checked') : !!input.val();\n          if (valueToCheck === nonBlank) {\n            foundInputs = foundInputs.add(input);\n          }\n        }\n      });\n      return foundInputs.length ? foundInputs : false;\n    },\n\n    // Helper function which checks for non-blank inputs in a form that match the specified CSS selector\n    nonBlankInputs: function(form, specifiedSelector) {\n      return rails.blankInputs(form, specifiedSelector, true); // true specifies nonBlank\n    },\n\n    // Helper function, needed to provide consistent behavior in IE\n    stopEverything: function(e) {\n      $(e.target).trigger('ujs:everythingStopped');\n      e.stopImmediatePropagation();\n      return false;\n    },\n\n    //  Replace element's html with the 'data-disable-with' after storing original html\n    //  and prevent clicking on it\n    disableElement: function(element) {\n      var replacement = element.data('disable-with');\n\n      if (replacement !== undefined) {\n        element.data('ujs:enable-with', element.html()); // store enabled state\n        element.html(replacement);\n      }\n\n      element.on('click.railsDisable', function(e) { // prevent further clicking\n        return rails.stopEverything(e);\n      });\n      element.data('ujs:disabled', true);\n    },\n\n    // Restore element to its original state which was disabled by 'disableElement' above\n    enableElement: function(element) {\n      if (element.data('ujs:enable-with') !== undefined) {\n        element.html(element.data('ujs:enable-with')); // set to old enabled state\n        element.removeData('ujs:enable-with'); // clean up cache\n      }\n      element.off('click.railsDisable'); // enable element\n      element.removeData('ujs:disabled');\n    }\n  };\n\n  if (rails.fire($document, 'rails:attachBindings')) {\n\n    $.ajaxPrefilter(function(options, originalOptions, xhr){ if ( !options.crossDomain ) { rails.CSRFProtection(xhr); }});\n\n    // This event works the same as the load event, except that it fires every\n    // time the page is loaded.\n    //\n    // See https://github.com/rails/jquery-ujs/issues/357\n    // See https://developer.mozilla.org/en-US/docs/Using_Firefox_1.5_caching\n    $(window).on('pageshow.rails', function () {\n      $($.rails.enableSelector).each(function () {\n        var element = $(this);\n\n        if (element.data('ujs:disabled')) {\n          $.rails.enableFormElement(element);\n        }\n      });\n\n      $($.rails.linkDisableSelector).each(function () {\n        var element = $(this);\n\n        if (element.data('ujs:disabled')) {\n          $.rails.enableElement(element);\n        }\n      });\n    });\n\n    $document.on('ajax:complete', rails.linkDisableSelector, function() {\n        rails.enableElement($(this));\n    });\n\n    $document.on('ajax:complete', rails.buttonDisableSelector, function() {\n        rails.enableFormElement($(this));\n    });\n\n    $document.on('click.rails', rails.linkClickSelector, function(e) {\n      var link = $(this), method = link.data('method'), data = link.data('params'), metaClick = e.metaKey || e.ctrlKey;\n      if (!rails.allowAction(link)) return rails.stopEverything(e);\n\n      if (!metaClick && link.is(rails.linkDisableSelector)) rails.disableElement(link);\n\n      if (rails.isRemote(link)) {\n        if (metaClick && (!method || method === 'GET') && !data) { return true; }\n\n        var handleRemote = rails.handleRemote(link);\n        // Response from rails.handleRemote() will either be false or a deferred object promise.\n        if (handleRemote === false) {\n          rails.enableElement(link);\n        } else {\n          handleRemote.fail( function() { rails.enableElement(link); } );\n        }\n        return false;\n\n      } else if (method) {\n        rails.handleMethod(link);\n        return false;\n      }\n    });\n\n    $document.on('click.rails', rails.buttonClickSelector, function(e) {\n      var button = $(this);\n\n      if (!rails.allowAction(button) || !rails.isRemote(button)) return rails.stopEverything(e);\n\n      if (button.is(rails.buttonDisableSelector)) rails.disableFormElement(button);\n\n      var handleRemote = rails.handleRemote(button);\n      // Response from rails.handleRemote() will either be false or a deferred object promise.\n      if (handleRemote === false) {\n        rails.enableFormElement(button);\n      } else {\n        handleRemote.fail( function() { rails.enableFormElement(button); } );\n      }\n      return false;\n    });\n\n    $document.on('change.rails', rails.inputChangeSelector, function(e) {\n      var link = $(this);\n      if (!rails.allowAction(link) || !rails.isRemote(link)) return rails.stopEverything(e);\n\n      rails.handleRemote(link);\n      return false;\n    });\n\n    $document.on('submit.rails', rails.formSubmitSelector, function(e) {\n      var form = $(this),\n        remote = rails.isRemote(form),\n        blankRequiredInputs,\n        nonBlankFileInputs;\n\n      if (!rails.allowAction(form)) return rails.stopEverything(e);\n\n      // Skip other logic when required values are missing or file upload is present\n      if (form.attr('novalidate') === undefined) {\n        if (form.data('ujs:formnovalidate-button') === undefined) {\n          blankRequiredInputs = rails.blankInputs(form, rails.requiredInputSelector, false);\n          if (blankRequiredInputs && rails.fire(form, 'ajax:aborted:required', [blankRequiredInputs])) {\n            return rails.stopEverything(e);\n          }\n        } else {\n          // Clear the formnovalidate in case the next button click is not on a formnovalidate button\n          // Not strictly necessary to do here, since it is also reset on each button click, but just to be certain\n          form.data('ujs:formnovalidate-button', undefined);\n        }\n      }\n\n      if (remote) {\n        nonBlankFileInputs = rails.nonBlankInputs(form, rails.fileInputSelector);\n        if (nonBlankFileInputs) {\n          // Slight timeout so that the submit button gets properly serialized\n          // (make it easy for event handler to serialize form without disabled values)\n          setTimeout(function(){ rails.disableFormElements(form); }, 13);\n          var aborted = rails.fire(form, 'ajax:aborted:file', [nonBlankFileInputs]);\n\n          // Re-enable form elements if event bindings return false (canceling normal form submission)\n          if (!aborted) { setTimeout(function(){ rails.enableFormElements(form); }, 13); }\n\n          return aborted;\n        }\n\n        rails.handleRemote(form);\n        return false;\n\n      } else {\n        // Slight timeout so that the submit button gets properly serialized\n        setTimeout(function(){ rails.disableFormElements(form); }, 13);\n      }\n    });\n\n    $document.on('click.rails', rails.formInputClickSelector, function(event) {\n      var button = $(this);\n\n      if (!rails.allowAction(button)) return rails.stopEverything(event);\n\n      // Register the pressed submit button\n      var name = button.attr('name'),\n        data = name ? {name:name, value:button.val()} : null;\n\n      var form = button.closest('form');\n      if (form.length === 0) {\n        form = $('#' + button.attr('form'));\n      }\n      form.data('ujs:submit-button', data);\n\n      // Save attributes from button\n      form.data('ujs:formnovalidate-button', button.attr('formnovalidate'));\n      form.data('ujs:submit-button-formaction', button.attr('formaction'));\n      form.data('ujs:submit-button-formmethod', button.attr('formmethod'));\n    });\n\n    $document.on('ajax:send.rails', rails.formSubmitSelector, function(event) {\n      if (this === event.target) rails.disableFormElements($(this));\n    });\n\n    $document.on('ajax:complete.rails', rails.formSubmitSelector, function(event) {\n      if (this === event.target) rails.enableFormElements($(this));\n    });\n\n    $(function(){\n      rails.refreshCSRFTokens();\n    });\n  }\n\n  };\n\n  if (window.jQuery) {\n    jqueryUjsInit(jQuery);\n  } else if (typeof exports === 'object' && typeof module === 'object') {\n    module.exports = jqueryUjsInit;\n  }\n})();\n", "export default typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n", "import isBrowser from './isBrowser';\n\nconst timeoutDuration = (function(){\n  const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n  for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n    if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n      return 1;\n    }\n  }\n  return 0;\n}());\n\nexport function microtaskDebounce(fn) {\n  let called = false\n  return () => {\n    if (called) {\n      return\n    }\n    called = true\n    window.Promise.resolve().then(() => {\n      called = false\n      fn()\n    })\n  }\n}\n\nexport function taskDebounce(fn) {\n  let scheduled = false;\n  return () => {\n    if (!scheduled) {\n      scheduled = true;\n      setTimeout(() => {\n        scheduled = false;\n        fn();\n      }, timeoutDuration);\n    }\n  };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n  ? microtaskDebounce\n  : taskDebounce);\n", "/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n  const getType = {};\n  return (\n    functionToCheck &&\n    getType.toString.call(functionToCheck) === '[object Function]'\n  );\n}\n", "/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n  if (element.nodeType !== 1) {\n    return [];\n  }\n  // NOTE: 1 DOM access here\n  const window = element.ownerDocument.defaultView;\n  const css = window.getComputedStyle(element, null);\n  return property ? css[property] : css;\n}\n", "/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n  if (element.nodeName === 'HTML') {\n    return element;\n  }\n  return element.parentNode || element.host;\n}\n", "import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n  // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n  if (!element) {\n    return document.body\n  }\n\n  switch (element.nodeName) {\n    case 'HTML':\n    case 'BODY':\n      return element.ownerDocument.body\n    case '#document':\n      return element.body\n  }\n\n  // Firefox want us to check `-x` and `-y` variations as well\n  const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n    return element;\n  }\n\n  return getScrollParent(getParentNode(element));\n}\n", "/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nexport default function getReferenceNode(reference) {\n  return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n", "import isBrowser from './isBrowser';\n\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nexport default function isIE(version) {\n  if (version === 11) {\n    return isIE11;\n  }\n  if (version === 10) {\n    return isIE10;\n  }\n  return isIE11 || isIE10;\n}\n", "import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n  if (!element) {\n    return document.documentElement;\n  }\n\n  const noOffsetParent = isIE(10) ? document.body : null;\n\n  // NOTE: 1 DOM access here\n  let offsetParent = element.offsetParent || null;\n  // Skip hidden elements which don't have an offsetParent\n  while (offsetParent === noOffsetParent && element.nextElementSibling) {\n    offsetParent = (element = element.nextElementSibling).offsetParent;\n  }\n\n  const nodeName = offsetParent && offsetParent.nodeName;\n\n  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n    return element ? element.ownerDocument.documentElement : document.documentElement;\n  }\n\n  // .offsetParent will return the closest TH, TD or TABLE in case\n  // no offsetParent is present, I hate this job...\n  if (\n    ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n    getStyleComputedProperty(offsetParent, 'position') === 'static'\n  ) {\n    return getOffsetParent(offsetParent);\n  }\n\n  return offsetParent;\n}\n", "import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n  const { nodeName } = element;\n  if (nodeName === 'BODY') {\n    return false;\n  }\n  return (\n    nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n  );\n}\n", "/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n  if (node.parentNode !== null) {\n    return getRoot(node.parentNode);\n  }\n\n  return node;\n}\n", "import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n    return document.documentElement;\n  }\n\n  // Here we make sure to give as \"start\" the element that comes first in the DOM\n  const order =\n    element1.compareDocumentPosition(element2) &\n    Node.DOCUMENT_POSITION_FOLLOWING;\n  const start = order ? element1 : element2;\n  const end = order ? element2 : element1;\n\n  // Get common ancestor container\n  const range = document.createRange();\n  range.setStart(start, 0);\n  range.setEnd(end, 0);\n  const { commonAncestorContainer } = range;\n\n  // Both nodes are inside #document\n  if (\n    (element1 !== commonAncestorContainer &&\n      element2 !== commonAncestorContainer) ||\n    start.contains(end)\n  ) {\n    if (isOffsetContainer(commonAncestorContainer)) {\n      return commonAncestorContainer;\n    }\n\n    return getOffsetParent(commonAncestorContainer);\n  }\n\n  // one of the nodes is inside shadowDOM, find which one\n  const element1root = getRoot(element1);\n  if (element1root.host) {\n    return findCommonOffsetParent(element1root.host, element2);\n  } else {\n    return findCommonOffsetParent(element1, getRoot(element2).host);\n  }\n}\n", "/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n  const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n  const nodeName = element.nodeName;\n\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    const html = element.ownerDocument.documentElement;\n    const scrollingElement = element.ownerDocument.scrollingElement || html;\n    return scrollingElement[upperSide];\n  }\n\n  return element[upperSide];\n}\n", "import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n  const scrollTop = getScroll(element, 'top');\n  const scrollLeft = getScroll(element, 'left');\n  const modifier = subtract ? -1 : 1;\n  rect.top += scrollTop * modifier;\n  rect.bottom += scrollTop * modifier;\n  rect.left += scrollLeft * modifier;\n  rect.right += scrollLeft * modifier;\n  return rect;\n}\n", "/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n  const sideA = axis === 'x' ? 'Left' : 'Top';\n  const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n  return (\n    parseFloat(styles[`border${sideA}Width`]) +\n    parseFloat(styles[`border${sideB}Width`])\n  );\n}\n", "import isIE from './isIE';\n\nfunction getSize(axis, body, html, computedStyle) {\n  return Math.max(\n    body[`offset${axis}`],\n    body[`scroll${axis}`],\n    html[`client${axis}`],\n    html[`offset${axis}`],\n    html[`scroll${axis}`],\n    isIE(10)\n      ? (parseInt(html[`offset${axis}`]) + \n      parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`]) + \n      parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]))\n    : 0 \n  );\n}\n\nexport default function getWindowSizes(document) {\n  const body = document.body;\n  const html = document.documentElement;\n  const computedStyle = isIE(10) && getComputedStyle(html);\n\n  return {\n    height: getSize('Height', body, html, computedStyle),\n    width: getSize('Width', body, html, computedStyle),\n  };\n}\n", "/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n  return {\n    ...offsets,\n    right: offsets.left + offsets.width,\n    bottom: offsets.top + offsets.height,\n  };\n}\n", "import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE from './isIE';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n  let rect = {};\n\n  // IE10 10 FIX: Please, don't ask, the element isn't\n  // considered in DOM in some circumstances...\n  // This isn't reproducible in IE10 compatibility mode of IE11\n  try {\n    if (isIE(10)) {\n      rect = element.getBoundingClientRect();\n      const scrollTop = getScroll(element, 'top');\n      const scrollLeft = getScroll(element, 'left');\n      rect.top += scrollTop;\n      rect.left += scrollLeft;\n      rect.bottom += scrollTop;\n      rect.right += scrollLeft;\n    }\n    else {\n      rect = element.getBoundingClientRect();\n    }\n  }\n  catch(e){}\n\n  const result = {\n    left: rect.left,\n    top: rect.top,\n    width: rect.right - rect.left,\n    height: rect.bottom - rect.top,\n  };\n\n  // subtract scrollbar size from sizes\n  const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n  const width =\n    sizes.width || element.clientWidth || result.width;\n  const height =\n    sizes.height || element.clientHeight || result.height;\n\n  let horizScrollbar = element.offsetWidth - width;\n  let vertScrollbar = element.offsetHeight - height;\n\n  // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n  // we make this check conditional for performance reasons\n  if (horizScrollbar || vertScrollbar) {\n    const styles = getStyleComputedProperty(element);\n    horizScrollbar -= getBordersSize(styles, 'x');\n    vertScrollbar -= getBordersSize(styles, 'y');\n\n    result.width -= horizScrollbar;\n    result.height -= vertScrollbar;\n  }\n\n  return getClientRect(result);\n}\n", "import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE from './isIE';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n  const isIE10 = runIsIE(10);\n  const isHTML = parent.nodeName === 'HTML';\n  const childrenRect = getBoundingClientRect(children);\n  const parentRect = getBoundingClientRect(parent);\n  const scrollParent = getScrollParent(children);\n\n  const styles = getStyleComputedProperty(parent);\n  const borderTopWidth = parseFloat(styles.borderTopWidth);\n  const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n  // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n  if(fixedPosition && isHTML) {\n    parentRect.top = Math.max(parentRect.top, 0);\n    parentRect.left = Math.max(parentRect.left, 0);\n  }\n  let offsets = getClientRect({\n    top: childrenRect.top - parentRect.top - borderTopWidth,\n    left: childrenRect.left - parentRect.left - borderLeftWidth,\n    width: childrenRect.width,\n    height: childrenRect.height,\n  });\n  offsets.marginTop = 0;\n  offsets.marginLeft = 0;\n\n  // Subtract margins of documentElement in case it's being used as parent\n  // we do this only on HTML because it's the only element that behaves\n  // differently when margins are applied to it. The margins are included in\n  // the box of the documentElement, in the other cases not.\n  if (!isIE10 && isHTML) {\n    const marginTop = parseFloat(styles.marginTop);\n    const marginLeft = parseFloat(styles.marginLeft);\n\n    offsets.top -= borderTopWidth - marginTop;\n    offsets.bottom -= borderTopWidth - marginTop;\n    offsets.left -= borderLeftWidth - marginLeft;\n    offsets.right -= borderLeftWidth - marginLeft;\n\n    // Attach marginTop and marginLeft because in some circumstances we may need them\n    offsets.marginTop = marginTop;\n    offsets.marginLeft = marginLeft;\n  }\n\n  if (\n    isIE10 && !fixedPosition\n      ? parent.contains(scrollParent)\n      : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n  ) {\n    offsets = includeScroll(offsets, parent);\n  }\n\n  return offsets;\n}\n", "import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n  const html = element.ownerDocument.documentElement;\n  const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n  const width = Math.max(html.clientWidth, window.innerWidth || 0);\n  const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n  const scrollTop = !excludeScroll ? getScroll(html) : 0;\n  const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n  const offset = {\n    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n    width,\n    height,\n  };\n\n  return getClientRect(offset);\n}\n", "import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n  const nodeName = element.nodeName;\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    return false;\n  }\n  if (getStyleComputedProperty(element, 'position') === 'fixed') {\n    return true;\n  }\n  const parentNode = getParentNode(element);\n  if (!parentNode) {\n    return false;\n  }\n  return isFixed(parentNode);\n}\n", "import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nexport default function getFixedPositionOffsetParent(element) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n   if (!element || !element.parentElement || isIE()) {\n    return document.documentElement;\n  }\n  let el = element.parentElement;\n  while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n    el = el.parentElement;\n  }\n  return el || document.documentElement;\n\n}\n", "import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getReferenceNode from './getReferenceNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n  popper,\n  reference,\n  padding,\n  boundariesElement,\n  fixedPosition = false\n) {\n  // NOTE: 1 DOM access here\n\n  let boundaries = { top: 0, left: 0 };\n  const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n  // Handle viewport case\n  if (boundariesElement === 'viewport' ) {\n    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n  }\n\n  else {\n    // Handle other cases based on DOM element used as boundaries\n    let boundariesNode;\n    if (boundariesElement === 'scrollParent') {\n      boundariesNode = getScrollParent(getParentNode(reference));\n      if (boundariesNode.nodeName === 'BODY') {\n        boundariesNode = popper.ownerDocument.documentElement;\n      }\n    } else if (boundariesElement === 'window') {\n      boundariesNode = popper.ownerDocument.documentElement;\n    } else {\n      boundariesNode = boundariesElement;\n    }\n\n    const offsets = getOffsetRectRelativeToArbitraryNode(\n      boundariesNode,\n      offsetParent,\n      fixedPosition\n    );\n\n    // In case of HTML, we need a different computation\n    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n      const { height, width } = getWindowSizes(popper.ownerDocument);\n      boundaries.top += offsets.top - offsets.marginTop;\n      boundaries.bottom = height + offsets.top;\n      boundaries.left += offsets.left - offsets.marginLeft;\n      boundaries.right = width + offsets.left;\n    } else {\n      // for all the other DOM elements, this one is good\n      boundaries = offsets;\n    }\n  }\n\n  // Add paddings\n  padding = padding || 0;\n  const isPaddingNumber = typeof padding === 'number';\n  boundaries.left += isPaddingNumber ? padding : padding.left || 0; \n  boundaries.top += isPaddingNumber ? padding : padding.top || 0; \n  boundaries.right -= isPaddingNumber ? padding : padding.right || 0; \n  boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; \n\n  return boundaries;\n}\n", "import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n  return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n  placement,\n  refRect,\n  popper,\n  reference,\n  boundariesElement,\n  padding = 0\n) {\n  if (placement.indexOf('auto') === -1) {\n    return placement;\n  }\n\n  const boundaries = getBoundaries(\n    popper,\n    reference,\n    padding,\n    boundariesElement\n  );\n\n  const rects = {\n    top: {\n      width: boundaries.width,\n      height: refRect.top - boundaries.top,\n    },\n    right: {\n      width: boundaries.right - refRect.right,\n      height: boundaries.height,\n    },\n    bottom: {\n      width: boundaries.width,\n      height: boundaries.bottom - refRect.bottom,\n    },\n    left: {\n      width: refRect.left - boundaries.left,\n      height: boundaries.height,\n    },\n  };\n\n  const sortedAreas = Object.keys(rects)\n    .map(key => ({\n      key,\n      ...rects[key],\n      area: getArea(rects[key]),\n    }))\n    .sort((a, b) => b.area - a.area);\n\n  const filteredAreas = sortedAreas.filter(\n    ({ width, height }) =>\n      width >= popper.clientWidth && height >= popper.clientHeight\n  );\n\n  const computedPlacement = filteredAreas.length > 0\n    ? filteredAreas[0].key\n    : sortedAreas[0].key;\n\n  const variation = placement.split('-')[1];\n\n  return computedPlacement + (variation ? `-${variation}` : '');\n}\n", "import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\nimport getReferenceNode from './getReferenceNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {\n  const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n", "/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n  const window = element.ownerDocument.defaultView;\n  const styles = window.getComputedStyle(element);\n  const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n  const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n  const result = {\n    width: element.offsetWidth + y,\n    height: element.offsetHeight + x,\n  };\n  return result;\n}\n", "/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n  const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n  return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n", "import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n  placement = placement.split('-')[0];\n\n  // Get popper node sizes\n  const popperRect = getOuterSizes(popper);\n\n  // Add position, width and height to our offsets object\n  const popperOffsets = {\n    width: popperRect.width,\n    height: popperRect.height,\n  };\n\n  // depending by the popper placement we have to compute its offsets slightly differently\n  const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n  const mainSide = isHoriz ? 'top' : 'left';\n  const secondarySide = isHoriz ? 'left' : 'top';\n  const measurement = isHoriz ? 'height' : 'width';\n  const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n  popperOffsets[mainSide] =\n    referenceOffsets[mainSide] +\n    referenceOffsets[measurement] / 2 -\n    popperRect[measurement] / 2;\n  if (placement === secondarySide) {\n    popperOffsets[secondarySide] =\n      referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n  } else {\n    popperOffsets[secondarySide] =\n      referenceOffsets[getOppositePlacement(secondarySide)];\n  }\n\n  return popperOffsets;\n}\n", "/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n  // use native find if supported\n  if (Array.prototype.find) {\n    return arr.find(check);\n  }\n\n  // use `filter` to obtain the same behavior of `find`\n  return arr.filter(check)[0];\n}\n", "import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n  // use native findIndex if supported\n  if (Array.prototype.findIndex) {\n    return arr.findIndex(cur => cur[prop] === value);\n  }\n\n  // use `find` + `indexOf` if `findIndex` isn't supported\n  const match = find(arr, obj => obj[prop] === value);\n  return arr.indexOf(match);\n}\n", "import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n  const modifiersToRun = ends === undefined\n    ? modifiers\n    : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n  modifiersToRun.forEach(modifier => {\n    if (modifier['function']) { // eslint-disable-line dot-notation\n      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n    }\n    const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n    if (modifier.enabled && isFunction(fn)) {\n      // Add properties to offsets to make them a complete clientRect object\n      // we do this before each modifier to make sure the previous one doesn't\n      // mess with these values\n      data.offsets.popper = getClientRect(data.offsets.popper);\n      data.offsets.reference = getClientRect(data.offsets.reference);\n\n      data = fn(data, modifier);\n    }\n  });\n\n  return data;\n}\n", "import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n  // if popper is destroyed, don't perform any further update\n  if (this.state.isDestroyed) {\n    return;\n  }\n\n  let data = {\n    instance: this,\n    styles: {},\n    arrowStyles: {},\n    attributes: {},\n    flipped: false,\n    offsets: {},\n  };\n\n  // compute reference element offsets\n  data.offsets.reference = getReferenceOffsets(\n    this.state,\n    this.popper,\n    this.reference,\n    this.options.positionFixed\n  );\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  data.placement = computeAutoPlacement(\n    this.options.placement,\n    data.offsets.reference,\n    this.popper,\n    this.reference,\n    this.options.modifiers.flip.boundariesElement,\n    this.options.modifiers.flip.padding\n  );\n\n  // store the computed placement inside `originalPlacement`\n  data.originalPlacement = data.placement;\n\n  data.positionFixed = this.options.positionFixed;\n\n  // compute the popper offsets\n  data.offsets.popper = getPopperOffsets(\n    this.popper,\n    data.offsets.reference,\n    data.placement\n  );\n\n  data.offsets.popper.position = this.options.positionFixed\n    ? 'fixed'\n    : 'absolute';\n\n  // run the modifiers\n  data = runModifiers(this.modifiers, data);\n\n  // the first `update` will call `onCreate` callback\n  // the other ones will call `onUpdate` callback\n  if (!this.state.isCreated) {\n    this.state.isCreated = true;\n    this.options.onCreate(data);\n  } else {\n    this.options.onUpdate(data);\n  }\n}\n", "/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n  return modifiers.some(\n    ({ name, enabled }) => enabled && name === modifierName\n  );\n}\n", "/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n  const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n  const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n  for (let i = 0; i < prefixes.length; i++) {\n    const prefix = prefixes[i];\n    const toCheck = prefix ? `${prefix}${upperProp}` : property;\n    if (typeof document.body.style[toCheck] !== 'undefined') {\n      return toCheck;\n    }\n  }\n  return null;\n}\n", "import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n  this.state.isDestroyed = true;\n\n  // touch DOM only if `applyStyle` modifier is enabled\n  if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n    this.popper.removeAttribute('x-placement');\n    this.popper.style.position = '';\n    this.popper.style.top = '';\n    this.popper.style.left = '';\n    this.popper.style.right = '';\n    this.popper.style.bottom = '';\n    this.popper.style.willChange = '';\n    this.popper.style[getSupportedPropertyName('transform')] = '';\n  }\n\n  this.disableEventListeners();\n\n  // remove the popper if user explicitly asked for the deletion on destroy\n  // do not use `remove` because IE11 doesn't support it\n  if (this.options.removeOnDestroy) {\n    this.popper.parentNode.removeChild(this.popper);\n  }\n  return this;\n}\n", "/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n  const ownerDocument = element.ownerDocument;\n  return ownerDocument ? ownerDocument.defaultView : window;\n}\n", "import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n  const isBody = scrollParent.nodeName === 'BODY';\n  const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n  target.addEventListener(event, callback, { passive: true });\n\n  if (!isBody) {\n    attachToScrollParents(\n      getScrollParent(target.parentNode),\n      event,\n      callback,\n      scrollParents\n    );\n  }\n  scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n  reference,\n  options,\n  state,\n  updateBound\n) {\n  // Resize event listener on window\n  state.updateBound = updateBound;\n  getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n  // Scroll event listener on scroll parents\n  const scrollElement = getScrollParent(reference);\n  attachToScrollParents(\n    scrollElement,\n    'scroll',\n    state.updateBound,\n    state.scrollParents\n  );\n  state.scrollElement = scrollElement;\n  state.eventsEnabled = true;\n\n  return state;\n}\n", "import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n  if (!this.state.eventsEnabled) {\n    this.state = setupEventListeners(\n      this.reference,\n      this.options,\n      this.state,\n      this.scheduleUpdate\n    );\n  }\n}\n", "import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n  // Remove resize event listener on window\n  getWindow(reference).removeEventListener('resize', state.updateBound);\n\n  // Remove scroll event listener on scroll parents\n  state.scrollParents.forEach(target => {\n    target.removeEventListener('scroll', state.updateBound);\n  });\n\n  // Reset state\n  state.updateBound = null;\n  state.scrollParents = [];\n  state.scrollElement = null;\n  state.eventsEnabled = false;\n  return state;\n}\n", "import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n  if (this.state.eventsEnabled) {\n    cancelAnimationFrame(this.scheduleUpdate);\n    this.state = removeEventListeners(this.reference, this.state);\n  }\n}\n", "/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n", "import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n  Object.keys(styles).forEach(prop => {\n    let unit = '';\n    // add unit if the value is numeric and is one of the following\n    if (\n      ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n        -1 &&\n      isNumeric(styles[prop])\n    ) {\n      unit = 'px';\n    }\n    element.style[prop] = styles[prop] + unit;\n  });\n}\n", "/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n  Object.keys(attributes).forEach(function(prop) {\n    const value = attributes[prop];\n    if (value !== false) {\n      element.setAttribute(prop, attributes[prop]);\n    } else {\n      element.removeAttribute(prop);\n    }\n  });\n}\n", "import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n  // any property present in `data.styles` will be applied to the popper,\n  // in this way we can make the 3rd party modifiers add custom styles to it\n  // Be aware, modifiers could override the properties defined in the previous\n  // lines of this modifier!\n  setStyles(data.instance.popper, data.styles);\n\n  // any property present in `data.attributes` will be applied to the popper,\n  // they will be set as HTML attributes of the element\n  setAttributes(data.instance.popper, data.attributes);\n\n  // if arrowElement is defined and arrowStyles has some properties\n  if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n    setStyles(data.arrowElement, data.arrowStyles);\n  }\n\n  return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n  reference,\n  popper,\n  options,\n  modifierOptions,\n  state\n) {\n  // compute reference element offsets\n  const referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  const placement = computeAutoPlacement(\n    options.placement,\n    referenceOffsets,\n    popper,\n    reference,\n    options.modifiers.flip.boundariesElement,\n    options.modifiers.flip.padding\n  );\n\n  popper.setAttribute('x-placement', placement);\n\n  // Apply `position` to popper before anything else because\n  // without the position applied we can't guarantee correct computations\n  setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n  return options;\n}\n", "/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nexport default function getRoundedOffsets(data, shouldRound) {\n  const { popper, reference } = data.offsets;\n  const { round, floor } = Math;\n  const noRound = v => v;\n  \n  const referenceWidth = round(reference.width);\n  const popperWidth = round(popper.width);\n  \n  const isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n  const isVariation = data.placement.indexOf('-') !== -1;\n  const sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n  const bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n  const horizontalToInteger = !shouldRound\n    ? noRound\n    : isVertical || isVariation || sameWidthParity\n    ? round\n    : floor;\n  const verticalToInteger = !shouldRound ? noRound : round;\n\n  return {\n    left: horizontalToInteger(\n      bothOddWidth && !isVariation && shouldRound\n        ? popper.left - 1\n        : popper.left\n    ),\n    top: verticalToInteger(popper.top),\n    bottom: verticalToInteger(popper.bottom),\n    right: horizontalToInteger(popper.right),\n  };\n}\n", "import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\nimport getRoundedOffsets from '../utils/getRoundedOffsets';\nimport isBrowser from '../utils/isBrowser';\n\nconst isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n  const { x, y } = options;\n  const { popper } = data.offsets;\n\n  // Remove this legacy support in Popper.js v2\n  const legacyGpuAccelerationOption = find(\n    data.instance.modifiers,\n    modifier => modifier.name === 'applyStyle'\n  ).gpuAcceleration;\n  if (legacyGpuAccelerationOption !== undefined) {\n    console.warn(\n      'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n    );\n  }\n  const gpuAcceleration =\n    legacyGpuAccelerationOption !== undefined\n      ? legacyGpuAccelerationOption\n      : options.gpuAcceleration;\n\n  const offsetParent = getOffsetParent(data.instance.popper);\n  const offsetParentRect = getBoundingClientRect(offsetParent);\n\n  // Styles\n  const styles = {\n    position: popper.position,\n  };\n\n  const offsets = getRoundedOffsets(\n    data,\n    window.devicePixelRatio < 2 || !isFirefox\n  );\n\n  const sideA = x === 'bottom' ? 'top' : 'bottom';\n  const sideB = y === 'right' ? 'left' : 'right';\n\n  // if gpuAcceleration is set to `true` and transform is supported,\n  //  we use `translate3d` to apply the position to the popper we\n  // automatically use the supported prefixed version if needed\n  const prefixedProperty = getSupportedPropertyName('transform');\n\n  // now, let's make a step back and look at this code closely (wtf?)\n  // If the content of the popper grows once it's been positioned, it\n  // may happen that the popper gets misplaced because of the new content\n  // overflowing its reference element\n  // To avoid this problem, we provide two options (x and y), which allow\n  // the consumer to define the offset origin.\n  // If we position a popper on top of a reference element, we can set\n  // `x` to `top` to make the popper grow towards its top instead of\n  // its bottom.\n  let left, top;\n  if (sideA === 'bottom') {\n    // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n    // and not the bottom of the html element\n    if (offsetParent.nodeName === 'HTML') {\n      top = -offsetParent.clientHeight + offsets.bottom;\n    } else {\n      top = -offsetParentRect.height + offsets.bottom;\n    }\n  } else {\n    top = offsets.top;\n  }\n  if (sideB === 'right') {\n    if (offsetParent.nodeName === 'HTML') {\n      left = -offsetParent.clientWidth + offsets.right;\n    } else {\n      left = -offsetParentRect.width + offsets.right;\n    }\n  } else {\n    left = offsets.left;\n  }\n  if (gpuAcceleration && prefixedProperty) {\n    styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n    styles[sideA] = 0;\n    styles[sideB] = 0;\n    styles.willChange = 'transform';\n  } else {\n    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n    const invertTop = sideA === 'bottom' ? -1 : 1;\n    const invertLeft = sideB === 'right' ? -1 : 1;\n    styles[sideA] = top * invertTop;\n    styles[sideB] = left * invertLeft;\n    styles.willChange = `${sideA}, ${sideB}`;\n  }\n\n  // Attributes\n  const attributes = {\n    'x-placement': data.placement,\n  };\n\n  // Update `data` attributes, styles and arrowStyles\n  data.attributes = { ...attributes, ...data.attributes };\n  data.styles = { ...styles, ...data.styles };\n  data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n  return data;\n}\n", "import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n  modifiers,\n  requestingName,\n  requestedName\n) {\n  const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n  const isRequired =\n    !!requesting &&\n    modifiers.some(modifier => {\n      return (\n        modifier.name === requestedName &&\n        modifier.enabled &&\n        modifier.order < requesting.order\n      );\n    });\n\n  if (!isRequired) {\n    const requesting = `\\`${requestingName}\\``;\n    const requested = `\\`${requestedName}\\``;\n    console.warn(\n      `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n    );\n  }\n  return isRequired;\n}\n", "import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n  // arrow depends on keepTogether in order to work\n  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n    return data;\n  }\n\n  let arrowElement = options.element;\n\n  // if arrowElement is a string, suppose it's a CSS selector\n  if (typeof arrowElement === 'string') {\n    arrowElement = data.instance.popper.querySelector(arrowElement);\n\n    // if arrowElement is not found, don't run the modifier\n    if (!arrowElement) {\n      return data;\n    }\n  } else {\n    // if the arrowElement isn't a query selector we must check that the\n    // provided DOM node is child of its popper node\n    if (!data.instance.popper.contains(arrowElement)) {\n      console.warn(\n        'WARNING: `arrow.element` must be child of its popper element!'\n      );\n      return data;\n    }\n  }\n\n  const placement = data.placement.split('-')[0];\n  const { popper, reference } = data.offsets;\n  const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n  const len = isVertical ? 'height' : 'width';\n  const sideCapitalized = isVertical ? 'Top' : 'Left';\n  const side = sideCapitalized.toLowerCase();\n  const altSide = isVertical ? 'left' : 'top';\n  const opSide = isVertical ? 'bottom' : 'right';\n  const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n  //\n  // extends keepTogether behavior making sure the popper and its\n  // reference have enough pixels in conjunction\n  //\n\n  // top/left side\n  if (reference[opSide] - arrowElementSize < popper[side]) {\n    data.offsets.popper[side] -=\n      popper[side] - (reference[opSide] - arrowElementSize);\n  }\n  // bottom/right side\n  if (reference[side] + arrowElementSize > popper[opSide]) {\n    data.offsets.popper[side] +=\n      reference[side] + arrowElementSize - popper[opSide];\n  }\n  data.offsets.popper = getClientRect(data.offsets.popper);\n\n  // compute center of the popper\n  const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n  // Compute the sideValue using the updated popper offsets\n  // take popper margin in account because we don't have this info available\n  const css = getStyleComputedProperty(data.instance.popper);\n  const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`]);\n  const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);\n  let sideValue =\n    center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n  // prevent arrowElement from being placed not contiguously to its popper\n  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n  data.arrowElement = arrowElement;\n  data.offsets.arrow = {\n    [side]: Math.round(sideValue),\n    [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n  };\n\n  return data;\n}\n", "/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n  if (variation === 'end') {\n    return 'start';\n  } else if (variation === 'start') {\n    return 'end';\n  }\n  return variation;\n}\n", "/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n  'auto-start',\n  'auto',\n  'auto-end',\n  'top-start',\n  'top',\n  'top-end',\n  'right-start',\n  'right',\n  'right-end',\n  'bottom-end',\n  'bottom',\n  'bottom-start',\n  'left-end',\n  'left',\n  'left-start',\n];\n", "import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n  const index = validPlacements.indexOf(placement);\n  const arr = validPlacements\n    .slice(index + 1)\n    .concat(validPlacements.slice(0, index));\n  return counter ? arr.reverse() : arr;\n}\n", "import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n  FLIP: 'flip',\n  CLOCKWISE: 'clockwise',\n  COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n  // if `inner` modifier is enabled, we can't use the `flip` modifier\n  if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n    return data;\n  }\n\n  if (data.flipped && data.placement === data.originalPlacement) {\n    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n    return data;\n  }\n\n  const boundaries = getBoundaries(\n    data.instance.popper,\n    data.instance.reference,\n    options.padding,\n    options.boundariesElement,\n    data.positionFixed\n  );\n\n  let placement = data.placement.split('-')[0];\n  let placementOpposite = getOppositePlacement(placement);\n  let variation = data.placement.split('-')[1] || '';\n\n  let flipOrder = [];\n\n  switch (options.behavior) {\n    case BEHAVIORS.FLIP:\n      flipOrder = [placement, placementOpposite];\n      break;\n    case BEHAVIORS.CLOCKWISE:\n      flipOrder = clockwise(placement);\n      break;\n    case BEHAVIORS.COUNTERCLOCKWISE:\n      flipOrder = clockwise(placement, true);\n      break;\n    default:\n      flipOrder = options.behavior;\n  }\n\n  flipOrder.forEach((step, index) => {\n    if (placement !== step || flipOrder.length === index + 1) {\n      return data;\n    }\n\n    placement = data.placement.split('-')[0];\n    placementOpposite = getOppositePlacement(placement);\n\n    const popperOffsets = data.offsets.popper;\n    const refOffsets = data.offsets.reference;\n\n    // using floor because the reference offsets may contain decimals we are not going to consider here\n    const floor = Math.floor;\n    const overlapsRef =\n      (placement === 'left' &&\n        floor(popperOffsets.right) > floor(refOffsets.left)) ||\n      (placement === 'right' &&\n        floor(popperOffsets.left) < floor(refOffsets.right)) ||\n      (placement === 'top' &&\n        floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n      (placement === 'bottom' &&\n        floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n    const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n    const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n    const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n    const overflowsBottom =\n      floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n    const overflowsBoundaries =\n      (placement === 'left' && overflowsLeft) ||\n      (placement === 'right' && overflowsRight) ||\n      (placement === 'top' && overflowsTop) ||\n      (placement === 'bottom' && overflowsBottom);\n\n    // flip the variation if required\n    const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n    // flips variation if reference element overflows boundaries\n    const flippedVariationByRef =\n      !!options.flipVariations &&\n      ((isVertical && variation === 'start' && overflowsLeft) ||\n        (isVertical && variation === 'end' && overflowsRight) ||\n        (!isVertical && variation === 'start' && overflowsTop) ||\n        (!isVertical && variation === 'end' && overflowsBottom));\n\n    // flips variation if popper content overflows boundaries\n    const flippedVariationByContent =\n      !!options.flipVariationsByContent &&\n      ((isVertical && variation === 'start' && overflowsRight) ||\n        (isVertical && variation === 'end' && overflowsLeft) ||\n        (!isVertical && variation === 'start' && overflowsBottom) ||\n        (!isVertical && variation === 'end' && overflowsTop));\n\n    const flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n    if (overlapsRef || overflowsBoundaries || flippedVariation) {\n      // this boolean to detect any flip loop\n      data.flipped = true;\n\n      if (overlapsRef || overflowsBoundaries) {\n        placement = flipOrder[index + 1];\n      }\n\n      if (flippedVariation) {\n        variation = getOppositeVariation(variation);\n      }\n\n      data.placement = placement + (variation ? '-' + variation : '');\n\n      // this object contains `position`, we want to preserve it along with\n      // any additional property we may add in the future\n      data.offsets.popper = {\n        ...data.offsets.popper,\n        ...getPopperOffsets(\n          data.instance.popper,\n          data.offsets.reference,\n          data.placement\n        ),\n      };\n\n      data = runModifiers(data.instance.modifiers, data, 'flip');\n    }\n  });\n  return data;\n}\n", "/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n  const { popper, reference } = data.offsets;\n  const placement = data.placement.split('-')[0];\n  const floor = Math.floor;\n  const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n  const side = isVertical ? 'right' : 'bottom';\n  const opSide = isVertical ? 'left' : 'top';\n  const measurement = isVertical ? 'width' : 'height';\n\n  if (popper[side] < floor(reference[opSide])) {\n    data.offsets.popper[opSide] =\n      floor(reference[opSide]) - popper[measurement];\n  }\n  if (popper[opSide] > floor(reference[side])) {\n    data.offsets.popper[opSide] = floor(reference[side]);\n  }\n\n  return data;\n}\n", "import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n  // separate value from unit\n  const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n  const value = +split[1];\n  const unit = split[2];\n\n  // If it's not a number it's an operator, I guess\n  if (!value) {\n    return str;\n  }\n\n  if (unit.indexOf('%') === 0) {\n    let element;\n    switch (unit) {\n      case '%p':\n        element = popperOffsets;\n        break;\n      case '%':\n      case '%r':\n      default:\n        element = referenceOffsets;\n    }\n\n    const rect = getClientRect(element);\n    return rect[measurement] / 100 * value;\n  } else if (unit === 'vh' || unit === 'vw') {\n    // if is a vh or vw, we calculate the size based on the viewport\n    let size;\n    if (unit === 'vh') {\n      size = Math.max(\n        document.documentElement.clientHeight,\n        window.innerHeight || 0\n      );\n    } else {\n      size = Math.max(\n        document.documentElement.clientWidth,\n        window.innerWidth || 0\n      );\n    }\n    return size / 100 * value;\n  } else {\n    // if is an explicit pixel unit, we get rid of the unit and keep the value\n    // if is an implicit unit, it's px, and we return just the value\n    return value;\n  }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n  offset,\n  popperOffsets,\n  referenceOffsets,\n  basePlacement\n) {\n  const offsets = [0, 0];\n\n  // Use height if placement is left or right and index is 0 otherwise use width\n  // in this way the first offset will use an axis and the second one\n  // will use the other one\n  const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n  // Split the offset string to obtain a list of values and operands\n  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n  const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n  // Detect if the offset string contains a pair of values or a single one\n  // they could be separated by comma or space\n  const divider = fragments.indexOf(\n    find(fragments, frag => frag.search(/,|\\s/) !== -1)\n  );\n\n  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n    console.warn(\n      'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n    );\n  }\n\n  // If divider is found, we divide the list of values and operands to divide\n  // them by ofset X and Y.\n  const splitRegex = /\\s*,\\s*|\\s+/;\n  let ops = divider !== -1\n    ? [\n        fragments\n          .slice(0, divider)\n          .concat([fragments[divider].split(splitRegex)[0]]),\n        [fragments[divider].split(splitRegex)[1]].concat(\n          fragments.slice(divider + 1)\n        ),\n      ]\n    : [fragments];\n\n  // Convert the values with units to absolute pixels to allow our computations\n  ops = ops.map((op, index) => {\n    // Most of the units rely on the orientation of the popper\n    const measurement = (index === 1 ? !useHeight : useHeight)\n      ? 'height'\n      : 'width';\n    let mergeWithPrevious = false;\n    return (\n      op\n        // This aggregates any `+` or `-` sign that aren't considered operators\n        // e.g.: 10 + +5 => [10, +, +5]\n        .reduce((a, b) => {\n          if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n            a[a.length - 1] = b;\n            mergeWithPrevious = true;\n            return a;\n          } else if (mergeWithPrevious) {\n            a[a.length - 1] += b;\n            mergeWithPrevious = false;\n            return a;\n          } else {\n            return a.concat(b);\n          }\n        }, [])\n        // Here we convert the string values into number values (in px)\n        .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n    );\n  });\n\n  // Loop trough the offsets arrays and execute the operations\n  ops.forEach((op, index) => {\n    op.forEach((frag, index2) => {\n      if (isNumeric(frag)) {\n        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n      }\n    });\n  });\n  return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n  const { placement, offsets: { popper, reference } } = data;\n  const basePlacement = placement.split('-')[0];\n\n  let offsets;\n  if (isNumeric(+offset)) {\n    offsets = [+offset, 0];\n  } else {\n    offsets = parseOffset(offset, popper, reference, basePlacement);\n  }\n\n  if (basePlacement === 'left') {\n    popper.top += offsets[0];\n    popper.left -= offsets[1];\n  } else if (basePlacement === 'right') {\n    popper.top += offsets[0];\n    popper.left += offsets[1];\n  } else if (basePlacement === 'top') {\n    popper.left += offsets[0];\n    popper.top -= offsets[1];\n  } else if (basePlacement === 'bottom') {\n    popper.left += offsets[0];\n    popper.top += offsets[1];\n  }\n\n  data.popper = popper;\n  return data;\n}\n", "import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n  let boundariesElement =\n    options.boundariesElement || getOffsetParent(data.instance.popper);\n\n  // If offsetParent is the reference element, we really want to\n  // go one step up and use the next offsetParent as reference to\n  // avoid to make this modifier completely useless and look like broken\n  if (data.instance.reference === boundariesElement) {\n    boundariesElement = getOffsetParent(boundariesElement);\n  }\n\n  // NOTE: DOM access here\n  // resets the popper's position so that the document size can be calculated excluding\n  // the size of the popper element itself\n  const transformProp = getSupportedPropertyName('transform');\n  const popperStyles = data.instance.popper.style; // assignment to help minification\n  const { top, left, [transformProp]: transform } = popperStyles;\n  popperStyles.top = '';\n  popperStyles.left = '';\n  popperStyles[transformProp] = '';\n\n  const boundaries = getBoundaries(\n    data.instance.popper,\n    data.instance.reference,\n    options.padding,\n    boundariesElement,\n    data.positionFixed\n  );\n\n  // NOTE: DOM access here\n  // restores the original style properties after the offsets have been computed\n  popperStyles.top = top;\n  popperStyles.left = left;\n  popperStyles[transformProp] = transform;\n\n  options.boundaries = boundaries;\n\n  const order = options.priority;\n  let popper = data.offsets.popper;\n\n  const check = {\n    primary(placement) {\n      let value = popper[placement];\n      if (\n        popper[placement] < boundaries[placement] &&\n        !options.escapeWithReference\n      ) {\n        value = Math.max(popper[placement], boundaries[placement]);\n      }\n      return { [placement]: value };\n    },\n    secondary(placement) {\n      const mainSide = placement === 'right' ? 'left' : 'top';\n      let value = popper[mainSide];\n      if (\n        popper[placement] > boundaries[placement] &&\n        !options.escapeWithReference\n      ) {\n        value = Math.min(\n          popper[mainSide],\n          boundaries[placement] -\n            (placement === 'right' ? popper.width : popper.height)\n        );\n      }\n      return { [mainSide]: value };\n    },\n  };\n\n  order.forEach(placement => {\n    const side =\n      ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n    popper = { ...popper, ...check[side](placement) };\n  });\n\n  data.offsets.popper = popper;\n\n  return data;\n}\n", "/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n  const placement = data.placement;\n  const basePlacement = placement.split('-')[0];\n  const shiftvariation = placement.split('-')[1];\n\n  // if shift shiftvariation is specified, run the modifier\n  if (shiftvariation) {\n    const { reference, popper } = data.offsets;\n    const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n    const side = isVertical ? 'left' : 'top';\n    const measurement = isVertical ? 'width' : 'height';\n\n    const shiftOffsets = {\n      start: { [side]: reference[side] },\n      end: {\n        [side]: reference[side] + reference[measurement] - popper[measurement],\n      },\n    };\n\n    data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n  }\n\n  return data;\n}\n", "import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n    return data;\n  }\n\n  const refRect = data.offsets.reference;\n  const bound = find(\n    data.instance.modifiers,\n    modifier => modifier.name === 'preventOverflow'\n  ).boundaries;\n\n  if (\n    refRect.bottom < bound.top ||\n    refRect.left > bound.right ||\n    refRect.top > bound.bottom ||\n    refRect.right < bound.left\n  ) {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === true) {\n      return data;\n    }\n\n    data.hide = true;\n    data.attributes['x-out-of-boundaries'] = '';\n  } else {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === false) {\n      return data;\n    }\n\n    data.hide = false;\n    data.attributes['x-out-of-boundaries'] = false;\n  }\n\n  return data;\n}\n", "import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n  const placement = data.placement;\n  const basePlacement = placement.split('-')[0];\n  const { popper, reference } = data.offsets;\n  const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n  const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n  popper[isHoriz ? 'left' : 'top'] =\n    reference[basePlacement] -\n    (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n  data.placement = getOppositePlacement(placement);\n  data.offsets.popper = getClientRect(popper);\n\n  return data;\n}\n", "import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n  /**\n   * Modifier used to shift the popper on the start or end of its reference\n   * element.<br />\n   * It will read the variation of the `placement` property.<br />\n   * It can be one either `-end` or `-start`.\n   * @memberof modifiers\n   * @inner\n   */\n  shift: {\n    /** @prop {number} order=100 - Index used to define the order of execution */\n    order: 100,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: shift,\n  },\n\n  /**\n   * The `offset` modifier can shift your popper on both its axis.\n   *\n   * It accepts the following units:\n   * - `px` or unit-less, interpreted as pixels\n   * - `%` or `%r`, percentage relative to the length of the reference element\n   * - `%p`, percentage relative to the length of the popper element\n   * - `vw`, CSS viewport width unit\n   * - `vh`, CSS viewport height unit\n   *\n   * For length is intended the main axis relative to the placement of the popper.<br />\n   * This means that if the placement is `top` or `bottom`, the length will be the\n   * `width`. In case of `left` or `right`, it will be the `height`.\n   *\n   * You can provide a single value (as `Number` or `String`), or a pair of values\n   * as `String` divided by a comma or one (or more) white spaces.<br />\n   * The latter is a deprecated method because it leads to confusion and will be\n   * removed in v2.<br />\n   * Additionally, it accepts additions and subtractions between different units.\n   * Note that multiplications and divisions aren't supported.\n   *\n   * Valid examples are:\n   * ```\n   * 10\n   * '10%'\n   * '10, 10'\n   * '10%, 10'\n   * '10 + 10%'\n   * '10 - 5vh + 3%'\n   * '-10px + 5vh, 5px - 6%'\n   * ```\n   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n   * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  offset: {\n    /** @prop {number} order=200 - Index used to define the order of execution */\n    order: 200,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: offset,\n    /** @prop {Number|String} offset=0\n     * The offset value as described in the modifier description\n     */\n    offset: 0,\n  },\n\n  /**\n   * Modifier used to prevent the popper from being positioned outside the boundary.\n   *\n   * A scenario exists where the reference itself is not within the boundaries.<br />\n   * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n   * In this case we need to decide whether the popper should either:\n   *\n   * - detach from the reference and remain \"trapped\" in the boundaries, or\n   * - if it should ignore the boundary and \"escape with its reference\"\n   *\n   * When `escapeWithReference` is set to`true` and reference is completely\n   * outside its boundaries, the popper will overflow (or completely leave)\n   * the boundaries in order to remain attached to the edge of the reference.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  preventOverflow: {\n    /** @prop {number} order=300 - Index used to define the order of execution */\n    order: 300,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: preventOverflow,\n    /**\n     * @prop {Array} [priority=['left','right','top','bottom']]\n     * Popper will try to prevent overflow following these priorities by default,\n     * then, it could overflow on the left and on top of the `boundariesElement`\n     */\n    priority: ['left', 'right', 'top', 'bottom'],\n    /**\n     * @prop {number} padding=5\n     * Amount of pixel used to define a minimum distance between the boundaries\n     * and the popper. This makes sure the popper always has a little padding\n     * between the edges of its container\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='scrollParent'\n     * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n     * `viewport` or any DOM element.\n     */\n    boundariesElement: 'scrollParent',\n  },\n\n  /**\n   * Modifier used to make sure the reference and its popper stay near each other\n   * without leaving any gap between the two. Especially useful when the arrow is\n   * enabled and you want to ensure that it points to its reference element.\n   * It cares only about the first axis. You can still have poppers with margin\n   * between the popper and its reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  keepTogether: {\n    /** @prop {number} order=400 - Index used to define the order of execution */\n    order: 400,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: keepTogether,\n  },\n\n  /**\n   * This modifier is used to move the `arrowElement` of the popper to make\n   * sure it is positioned between the reference element and its popper element.\n   * It will read the outer size of the `arrowElement` node to detect how many\n   * pixels of conjunction are needed.\n   *\n   * It has no effect if no `arrowElement` is provided.\n   * @memberof modifiers\n   * @inner\n   */\n  arrow: {\n    /** @prop {number} order=500 - Index used to define the order of execution */\n    order: 500,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: arrow,\n    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n    element: '[x-arrow]',\n  },\n\n  /**\n   * Modifier used to flip the popper's placement when it starts to overlap its\n   * reference element.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   *\n   * **NOTE:** this modifier will interrupt the current update cycle and will\n   * restart it if it detects the need to flip the placement.\n   * @memberof modifiers\n   * @inner\n   */\n  flip: {\n    /** @prop {number} order=600 - Index used to define the order of execution */\n    order: 600,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: flip,\n    /**\n     * @prop {String|Array} behavior='flip'\n     * The behavior used to change the popper's placement. It can be one of\n     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n     * placements (with optional variations)\n     */\n    behavior: 'flip',\n    /**\n     * @prop {number} padding=5\n     * The popper will flip if it hits the edges of the `boundariesElement`\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='viewport'\n     * The element which will define the boundaries of the popper position.\n     * The popper will never be placed outside of the defined boundaries\n     * (except if `keepTogether` is enabled)\n     */\n    boundariesElement: 'viewport',\n    /**\n     * @prop {Boolean} flipVariations=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the reference element overlaps its boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariations: false,\n    /**\n     * @prop {Boolean} flipVariationsByContent=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the popper element overlaps its reference boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariationsByContent: false,\n  },\n\n  /**\n   * Modifier used to make the popper flow toward the inner of the reference element.\n   * By default, when this modifier is disabled, the popper will be placed outside\n   * the reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  inner: {\n    /** @prop {number} order=700 - Index used to define the order of execution */\n    order: 700,\n    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n    enabled: false,\n    /** @prop {ModifierFn} */\n    fn: inner,\n  },\n\n  /**\n   * Modifier used to hide the popper when its reference element is outside of the\n   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n   * be used to hide with a CSS selector the popper when its reference is\n   * out of boundaries.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   * @memberof modifiers\n   * @inner\n   */\n  hide: {\n    /** @prop {number} order=800 - Index used to define the order of execution */\n    order: 800,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: hide,\n  },\n\n  /**\n   * Computes the style that will be applied to the popper element to gets\n   * properly positioned.\n   *\n   * Note that this modifier will not touch the DOM, it just prepares the styles\n   * so that `applyStyle` modifier can apply it. This separation is useful\n   * in case you need to replace `applyStyle` with a custom implementation.\n   *\n   * This modifier has `850` as `order` value to maintain backward compatibility\n   * with previous versions of Popper.js. Expect the modifiers ordering method\n   * to change in future major versions of the library.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  computeStyle: {\n    /** @prop {number} order=850 - Index used to define the order of execution */\n    order: 850,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: computeStyle,\n    /**\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: true,\n    /**\n     * @prop {string} [x='bottom']\n     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n     * Change this if your popper should grow in a direction different from `bottom`\n     */\n    x: 'bottom',\n    /**\n     * @prop {string} [x='left']\n     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n     * Change this if your popper should grow in a direction different from `right`\n     */\n    y: 'right',\n  },\n\n  /**\n   * Applies the computed styles to the popper element.\n   *\n   * All the DOM manipulations are limited to this modifier. This is useful in case\n   * you want to integrate Popper.js inside a framework or view library and you\n   * want to delegate all the DOM manipulations to it.\n   *\n   * Note that if you disable this modifier, you must make sure the popper element\n   * has its position set to `absolute` before Popper.js can do its work!\n   *\n   * Just disable this modifier and define your own to achieve the desired effect.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  applyStyle: {\n    /** @prop {number} order=900 - Index used to define the order of execution */\n    order: 900,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: applyStyle,\n    /** @prop {Function} */\n    onLoad: applyStyleOnLoad,\n    /**\n     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: undefined,\n  },\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n", "import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n *   modifiers: {\n *     preventOverflow: { enabled: false }\n *   }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n  /**\n   * Popper's placement.\n   * @prop {Popper.placements} placement='bottom'\n   */\n  placement: 'bottom',\n\n  /**\n   * Set this to true if you want popper to position it self in 'fixed' mode\n   * @prop {Boolean} positionFixed=false\n   */\n  positionFixed: false,\n\n  /**\n   * Whether events (resize, scroll) are initially enabled.\n   * @prop {Boolean} eventsEnabled=true\n   */\n  eventsEnabled: true,\n\n  /**\n   * Set to true if you want to automatically remove the popper when\n   * you call the `destroy` method.\n   * @prop {Boolean} removeOnDestroy=false\n   */\n  removeOnDestroy: false,\n\n  /**\n   * Callback called when the popper is created.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onCreate}\n   */\n  onCreate: () => {},\n\n  /**\n   * Callback called when the popper is updated. This callback is not called\n   * on the initialization/creation of the popper, but only on subsequent\n   * updates.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onUpdate}\n   */\n  onUpdate: () => {},\n\n  /**\n   * List of modifiers used to modify the offsets before they are applied to the popper.\n   * They provide most of the functionalities of Popper.js.\n   * @prop {modifiers}\n   */\n  modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n", "// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n  /**\n   * Creates a new Popper.js instance.\n   * @class Popper\n   * @param {Element|referenceObject} reference - The reference element used to position the popper\n   * @param {Element} popper - The HTML / XML element used as the popper\n   * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n   * @return {Object} instance - The generated Popper.js instance\n   */\n  constructor(reference, popper, options = {}) {\n    // make update() debounced, so that it only runs at most once-per-tick\n    this.update = debounce(this.update.bind(this));\n\n    // with {} we create a new object with the options inside it\n    this.options = { ...Popper.Defaults, ...options };\n\n    // init state\n    this.state = {\n      isDestroyed: false,\n      isCreated: false,\n      scrollParents: [],\n    };\n\n    // get reference and popper elements (allow jQuery wrappers)\n    this.reference = reference && reference.jquery ? reference[0] : reference;\n    this.popper = popper && popper.jquery ? popper[0] : popper;\n\n    // Deep merge modifiers options\n    this.options.modifiers = {};\n    Object.keys({\n      ...Popper.Defaults.modifiers,\n      ...options.modifiers,\n    }).forEach(name => {\n      this.options.modifiers[name] = {\n        // If it's a built-in modifier, use it as base\n        ...(Popper.Defaults.modifiers[name] || {}),\n        // If there are custom options, override and merge with default ones\n        ...(options.modifiers ? options.modifiers[name] : {}),\n      };\n    });\n\n    // Refactoring modifiers' list (Object => Array)\n    this.modifiers = Object.keys(this.options.modifiers)\n      .map(name => ({\n        name,\n        ...this.options.modifiers[name],\n      }))\n      // sort the modifiers by order\n      .sort((a, b) => a.order - b.order);\n\n    // modifiers have the ability to execute arbitrary code when Popper.js get inited\n    // such code is executed in the same order of its modifier\n    // they could add new properties to their options configuration\n    // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n    this.modifiers.forEach(modifierOptions => {\n      if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n        modifierOptions.onLoad(\n          this.reference,\n          this.popper,\n          this.options,\n          modifierOptions,\n          this.state\n        );\n      }\n    });\n\n    // fire the first update to position the popper in the right place\n    this.update();\n\n    const eventsEnabled = this.options.eventsEnabled;\n    if (eventsEnabled) {\n      // setup event listeners, they will take care of update the position in specific situations\n      this.enableEventListeners();\n    }\n\n    this.state.eventsEnabled = eventsEnabled;\n  }\n\n  // We can't use class properties because they don't get listed in the\n  // class prototype and break stuff like Sinon stubs\n  update() {\n    return update.call(this);\n  }\n  destroy() {\n    return destroy.call(this);\n  }\n  enableEventListeners() {\n    return enableEventListeners.call(this);\n  }\n  disableEventListeners() {\n    return disableEventListeners.call(this);\n  }\n\n  /**\n   * Schedules an update. It will run on the next UI update available.\n   * @method scheduleUpdate\n   * @memberof Popper\n   */\n  scheduleUpdate = () => requestAnimationFrame(this.update);\n\n  /**\n   * Collection of utilities useful when writing custom modifiers.\n   * Starting from version 1.7, this method is available only if you\n   * include `popper-utils.js` before `popper.js`.\n   *\n   * **DEPRECATION**: This way to access PopperUtils is deprecated\n   * and will be removed in v2! Use the PopperUtils module directly instead.\n   * Due to the high instability of the methods contained in Utils, we can't\n   * guarantee them to follow semver. Use them at your own risk!\n   * @static\n   * @private\n   * @type {Object}\n   * @deprecated since version 1.8\n   * @member Utils\n   * @memberof Popper\n   */\n  static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n  static placements = placements;\n\n  static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * Private TransitionEnd Helpers\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n  if (obj === null || typeof obj === 'undefined') {\n    return `${obj}`\n  }\n\n  return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n  return {\n    bindType: TRANSITION_END,\n    delegateType: TRANSITION_END,\n    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\n    }\n  }\n}\n\nfunction transitionEndEmulator(duration) {\n  let called = false\n\n  $(this).one(Util.TRANSITION_END, () => {\n    called = true\n  })\n\n  setTimeout(() => {\n    if (!called) {\n      Util.triggerTransitionEnd(this)\n    }\n  }, duration)\n\n  return this\n}\n\nfunction setTransitionEndSupport() {\n  $.fn.emulateTransitionEnd = transitionEndEmulator\n  $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * Public Util API\n */\n\nconst Util = {\n  TRANSITION_END: 'bsTransitionEnd',\n\n  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\n  getSelectorFromElement(element) {\n    let selector = element.getAttribute('data-target')\n\n    if (!selector || selector === '#') {\n      const hrefAttr = element.getAttribute('href')\n      selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n    }\n\n    try {\n      return document.querySelector(selector) ? selector : null\n    } catch (_) {\n      return null\n    }\n  },\n\n  getTransitionDurationFromElement(element) {\n    if (!element) {\n      return 0\n    }\n\n    // Get transition-duration of the element\n    let transitionDuration = $(element).css('transition-duration')\n    let transitionDelay = $(element).css('transition-delay')\n\n    const floatTransitionDuration = parseFloat(transitionDuration)\n    const floatTransitionDelay = parseFloat(transitionDelay)\n\n    // Return 0 if element or transition duration is not found\n    if (!floatTransitionDuration && !floatTransitionDelay) {\n      return 0\n    }\n\n    // If multiple durations are defined, take the first\n    transitionDuration = transitionDuration.split(',')[0]\n    transitionDelay = transitionDelay.split(',')[0]\n\n    return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n  },\n\n  reflow(element) {\n    return element.offsetHeight\n  },\n\n  triggerTransitionEnd(element) {\n    $(element).trigger(TRANSITION_END)\n  },\n\n  supportsTransitionEnd() {\n    return Boolean(TRANSITION_END)\n  },\n\n  isElement(obj) {\n    return (obj[0] || obj).nodeType\n  },\n\n  typeCheckConfig(componentName, config, configTypes) {\n    for (const property in configTypes) {\n      if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n        const expectedTypes = configTypes[property]\n        const value = config[property]\n        const valueType = value && Util.isElement(value) ?\n          'element' : toType(value)\n\n        if (!new RegExp(expectedTypes).test(valueType)) {\n          throw new Error(\n            `${componentName.toUpperCase()}: ` +\n            `Option \"${property}\" provided type \"${valueType}\" ` +\n            `but expected type \"${expectedTypes}\".`)\n        }\n      }\n    }\n  },\n\n  findShadowRoot(element) {\n    if (!document.documentElement.attachShadow) {\n      return null\n    }\n\n    // Can find the shadow root otherwise it'll return the document\n    if (typeof element.getRootNode === 'function') {\n      const root = element.getRootNode()\n      return root instanceof ShadowRoot ? root : null\n    }\n\n    if (element instanceof ShadowRoot) {\n      return element\n    }\n\n    // when we don't find a shadow root\n    if (!element.parentNode) {\n      return null\n    }\n\n    return Util.findShadowRoot(element.parentNode)\n  },\n\n  jQueryDetection() {\n    if (typeof $ === 'undefined') {\n      throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n    }\n\n    const version = $.fn.jquery.split(' ')[0].split('.')\n    const minMajor = 1\n    const ltMajor = 2\n    const minMinor = 9\n    const minPatch = 1\n    const maxMajor = 4\n\n    if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n      throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n    }\n  }\n}\n\nUtil.jQueryDetection()\nsetTransitionEndSupport()\n\nexport default Util\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_ALERT = 'alert'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DISMISS = '[data-dismiss=\"alert\"]'\n\n/**\n * Class definition\n */\n\nclass Alert {\n  constructor(element) {\n    this._element = element\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  // Public\n  close(element) {\n    let rootElement = this._element\n    if (element) {\n      rootElement = this._getRootElement(element)\n    }\n\n    const customEvent = this._triggerCloseEvent(rootElement)\n\n    if (customEvent.isDefaultPrevented()) {\n      return\n    }\n\n    this._removeElement(rootElement)\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n    this._element = null\n  }\n\n  // Private\n  _getRootElement(element) {\n    const selector = Util.getSelectorFromElement(element)\n    let parent = false\n\n    if (selector) {\n      parent = document.querySelector(selector)\n    }\n\n    if (!parent) {\n      parent = $(element).closest(`.${CLASS_NAME_ALERT}`)[0]\n    }\n\n    return parent\n  }\n\n  _triggerCloseEvent(element) {\n    const closeEvent = $.Event(EVENT_CLOSE)\n\n    $(element).trigger(closeEvent)\n    return closeEvent\n  }\n\n  _removeElement(element) {\n    $(element).removeClass(CLASS_NAME_SHOW)\n\n    if (!$(element).hasClass(CLASS_NAME_FADE)) {\n      this._destroyElement(element)\n      return\n    }\n\n    const transitionDuration = Util.getTransitionDurationFromElement(element)\n\n    $(element)\n      .one(Util.TRANSITION_END, event => this._destroyElement(element, event))\n      .emulateTransitionEnd(transitionDuration)\n  }\n\n  _destroyElement(element) {\n    $(element)\n      .detach()\n      .trigger(EVENT_CLOSED)\n      .remove()\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n\n      if (!data) {\n        data = new Alert(this)\n        $element.data(DATA_KEY, data)\n      }\n\n      if (config === 'close') {\n        data[config](this)\n      }\n    })\n  }\n\n  static _handleDismiss(alertInstance) {\n    return function (event) {\n      if (event) {\n        event.preventDefault()\n      }\n\n      alertInstance.close(this)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(document).on(\n  EVENT_CLICK_DATA_API,\n  SELECTOR_DISMISS,\n  Alert._handleDismiss(new Alert())\n)\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Alert._jQueryInterface\n$.fn[NAME].Constructor = Alert\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Alert._jQueryInterface\n}\n\nexport default Alert\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_BUTTON = 'btn'\nconst CLASS_NAME_FOCUS = 'focus'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUS_BLUR_DATA_API = `focus${EVENT_KEY}${DATA_API_KEY} ` +\n                          `blur${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]'\nconst SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"button\"]'\nconst SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn'\nconst SELECTOR_INPUT = 'input:not([type=\"hidden\"])'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_BUTTON = '.btn'\n\n/**\n * Class definition\n */\n\nclass Button {\n  constructor(element) {\n    this._element = element\n    this.shouldAvoidTriggerChange = false\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  // Public\n  toggle() {\n    let triggerChangeEvent = true\n    let addAriaPressed = true\n    const rootElement = $(this._element).closest(SELECTOR_DATA_TOGGLES)[0]\n\n    if (rootElement) {\n      const input = this._element.querySelector(SELECTOR_INPUT)\n\n      if (input) {\n        if (input.type === 'radio') {\n          if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n            triggerChangeEvent = false\n          } else {\n            const activeElement = rootElement.querySelector(SELECTOR_ACTIVE)\n\n            if (activeElement) {\n              $(activeElement).removeClass(CLASS_NAME_ACTIVE)\n            }\n          }\n        }\n\n        if (triggerChangeEvent) {\n          // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n          if (input.type === 'checkbox' || input.type === 'radio') {\n            input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE)\n          }\n\n          if (!this.shouldAvoidTriggerChange) {\n            $(input).trigger('change')\n          }\n        }\n\n        input.focus()\n        addAriaPressed = false\n      }\n    }\n\n    if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n      if (addAriaPressed) {\n        this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE))\n      }\n\n      if (triggerChangeEvent) {\n        $(this._element).toggleClass(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n    this._element = null\n  }\n\n  // Static\n  static _jQueryInterface(config, avoidTriggerChange) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n\n      if (!data) {\n        data = new Button(this)\n        $element.data(DATA_KEY, data)\n      }\n\n      data.shouldAvoidTriggerChange = avoidTriggerChange\n\n      if (config === 'toggle') {\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(document)\n  .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {\n    let button = event.target\n    const initialButton = button\n\n    if (!$(button).hasClass(CLASS_NAME_BUTTON)) {\n      button = $(button).closest(SELECTOR_BUTTON)[0]\n    }\n\n    if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n      event.preventDefault() // work around Firefox bug #1540995\n    } else {\n      const inputBtn = button.querySelector(SELECTOR_INPUT)\n\n      if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n        event.preventDefault() // work around Firefox bug #1540995\n        return\n      }\n\n      if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n        Button._jQueryInterface.call($(button), 'toggle', initialButton.tagName === 'INPUT')\n      }\n    }\n  })\n  .on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {\n    const button = $(event.target).closest(SELECTOR_BUTTON)[0]\n    $(button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type))\n  })\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n  // ensure correct active class is set to match the controls' actual values/states\n\n  // find all checkboxes/readio buttons inside data-toggle groups\n  let buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS))\n  for (let i = 0, len = buttons.length; i < len; i++) {\n    const button = buttons[i]\n    const input = button.querySelector(SELECTOR_INPUT)\n    if (input.checked || input.hasAttribute('checked')) {\n      button.classList.add(CLASS_NAME_ACTIVE)\n    } else {\n      button.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n\n  // find all button toggles\n  buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n  for (let i = 0, len = buttons.length; i < len; i++) {\n    const button = buttons[i]\n    if (button.getAttribute('aria-pressed') === 'true') {\n      button.classList.add(CLASS_NAME_ACTIVE)\n    } else {\n      button.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Button._jQueryInterface\n$.fn[NAME].Constructor = Button\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Button._jQueryInterface\n}\n\nexport default Button\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\nconst ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_RIGHT = 'carousel-item-right'\nconst CLASS_NAME_LEFT = 'carousel-item-left'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst DIRECTION_NEXT = 'next'\nconst DIRECTION_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]'\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  slide: false,\n  pause: 'hover',\n  wrap: true,\n  touch: true\n}\n\nconst DefaultType = {\n  interval: '(number|boolean)',\n  keyboard: 'boolean',\n  slide: '(boolean|string)',\n  pause: '(string|boolean)',\n  wrap: 'boolean',\n  touch: 'boolean'\n}\n\nconst PointerType = {\n  TOUCH: 'touch',\n  PEN: 'pen'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel {\n  constructor(element, config) {\n    this._items = null\n    this._interval = null\n    this._activeElement = null\n    this._isPaused = false\n    this._isSliding = false\n    this.touchTimeout = null\n    this.touchStartX = 0\n    this.touchDeltaX = 0\n\n    this._config = this._getConfig(config)\n    this._element = element\n    this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS)\n    this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n    this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n  next() {\n    if (!this._isSliding) {\n      this._slide(DIRECTION_NEXT)\n    }\n  }\n\n  nextWhenVisible() {\n    const $element = $(this._element)\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (!document.hidden &&\n      ($element.is(':visible') && $element.css('visibility') !== 'hidden')) {\n      this.next()\n    }\n  }\n\n  prev() {\n    if (!this._isSliding) {\n      this._slide(DIRECTION_PREV)\n    }\n  }\n\n  pause(event) {\n    if (!event) {\n      this._isPaused = true\n    }\n\n    if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n      Util.triggerTransitionEnd(this._element)\n      this.cycle(true)\n    }\n\n    clearInterval(this._interval)\n    this._interval = null\n  }\n\n  cycle(event) {\n    if (!event) {\n      this._isPaused = false\n    }\n\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n\n    if (this._config.interval && !this._isPaused) {\n      this._updateInterval()\n\n      this._interval = setInterval(\n        (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n        this._config.interval\n      )\n    }\n  }\n\n  to(index) {\n    this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n\n    const activeIndex = this._getItemIndex(this._activeElement)\n\n    if (index > this._items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      $(this._element).one(EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    if (activeIndex === index) {\n      this.pause()\n      this.cycle()\n      return\n    }\n\n    const direction = index > activeIndex ?\n      DIRECTION_NEXT :\n      DIRECTION_PREV\n\n    this._slide(direction, this._items[index])\n  }\n\n  dispose() {\n    $(this._element).off(EVENT_KEY)\n    $.removeData(this._element, DATA_KEY)\n\n    this._items = null\n    this._config = null\n    this._element = null\n    this._interval = null\n    this._isPaused = null\n    this._isSliding = null\n    this._activeElement = null\n    this._indicatorsElement = null\n  }\n\n  // Private\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...config\n    }\n    Util.typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _handleSwipe() {\n    const absDeltax = Math.abs(this.touchDeltaX)\n\n    if (absDeltax <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltax / this.touchDeltaX\n\n    this.touchDeltaX = 0\n\n    // swipe left\n    if (direction > 0) {\n      this.prev()\n    }\n\n    // swipe right\n    if (direction < 0) {\n      this.next()\n    }\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      $(this._element).on(EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      $(this._element)\n        .on(EVENT_MOUSEENTER, event => this.pause(event))\n        .on(EVENT_MOUSELEAVE, event => this.cycle(event))\n    }\n\n    if (this._config.touch) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    if (!this._touchSupported) {\n      return\n    }\n\n    const start = event => {\n      if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n        this.touchStartX = event.originalEvent.clientX\n      } else if (!this._pointerEvent) {\n        this.touchStartX = event.originalEvent.touches[0].clientX\n      }\n    }\n\n    const move = event => {\n      // ensure swiping with one touch and not pinching\n      this.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ?\n        0 :\n        event.originalEvent.touches[0].clientX - this.touchStartX\n    }\n\n    const end = event => {\n      if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n        this.touchDeltaX = event.originalEvent.clientX - this.touchStartX\n      }\n\n      this._handleSwipe()\n      if (this._config.pause === 'hover') {\n        // If it's a touch-enabled device, mouseenter/leave are fired as\n        // part of the mouse compatibility events on first tap - the carousel\n        // would stop cycling until user tapped out of it;\n        // here, we listen for touchend, explicitly pause the carousel\n        // (as if it's the second time we tap on it, mouseenter compat event\n        // is NOT fired) and after a timeout (to allow for mouse compatibility\n        // events to fire) we explicitly restart cycling\n\n        this.pause()\n        if (this.touchTimeout) {\n          clearTimeout(this.touchTimeout)\n        }\n\n        this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n      }\n    }\n\n    $(this._element.querySelectorAll(SELECTOR_ITEM_IMG))\n      .on(EVENT_DRAG_START, e => e.preventDefault())\n\n    if (this._pointerEvent) {\n      $(this._element).on(EVENT_POINTERDOWN, event => start(event))\n      $(this._element).on(EVENT_POINTERUP, event => end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      $(this._element).on(EVENT_TOUCHSTART, event => start(event))\n      $(this._element).on(EVENT_TOUCHMOVE, event => move(event))\n      $(this._element).on(EVENT_TOUCHEND, event => end(event))\n    }\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    switch (event.which) {\n      case ARROW_LEFT_KEYCODE:\n        event.preventDefault()\n        this.prev()\n        break\n      case ARROW_RIGHT_KEYCODE:\n        event.preventDefault()\n        this.next()\n        break\n      default:\n    }\n  }\n\n  _getItemIndex(element) {\n    this._items = element && element.parentNode ?\n      [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) :\n      []\n    return this._items.indexOf(element)\n  }\n\n  _getItemByDirection(direction, activeElement) {\n    const isNextDirection = direction === DIRECTION_NEXT\n    const isPrevDirection = direction === DIRECTION_PREV\n    const activeIndex = this._getItemIndex(activeElement)\n    const lastItemIndex = this._items.length - 1\n    const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n                            isNextDirection && activeIndex === lastItemIndex\n\n    if (isGoingToWrap && !this._config.wrap) {\n      return activeElement\n    }\n\n    const delta = direction === DIRECTION_PREV ? -1 : 1\n    const itemIndex = (activeIndex + delta) % this._items.length\n\n    return itemIndex === -1 ?\n      this._items[this._items.length - 1] : this._items[itemIndex]\n  }\n\n  _triggerSlideEvent(relatedTarget, eventDirectionName) {\n    const targetIndex = this._getItemIndex(relatedTarget)\n    const fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM))\n    const slideEvent = $.Event(EVENT_SLIDE, {\n      relatedTarget,\n      direction: eventDirectionName,\n      from: fromIndex,\n      to: targetIndex\n    })\n\n    $(this._element).trigger(slideEvent)\n\n    return slideEvent\n  }\n\n  _setActiveIndicatorElement(element) {\n    if (this._indicatorsElement) {\n      const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE))\n      $(indicators).removeClass(CLASS_NAME_ACTIVE)\n\n      const nextIndicator = this._indicatorsElement.children[\n        this._getItemIndex(element)\n      ]\n\n      if (nextIndicator) {\n        $(nextIndicator).addClass(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = parseInt(element.getAttribute('data-interval'), 10)\n\n    if (elementInterval) {\n      this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n      this._config.interval = elementInterval\n    } else {\n      this._config.interval = this._config.defaultInterval || this._config.interval\n    }\n  }\n\n  _slide(direction, element) {\n    const activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n    const activeElementIndex = this._getItemIndex(activeElement)\n    const nextElement = element || activeElement &&\n      this._getItemByDirection(direction, activeElement)\n    const nextElementIndex = this._getItemIndex(nextElement)\n    const isCycling = Boolean(this._interval)\n\n    let directionalClassName\n    let orderClassName\n    let eventDirectionName\n\n    if (direction === DIRECTION_NEXT) {\n      directionalClassName = CLASS_NAME_LEFT\n      orderClassName = CLASS_NAME_NEXT\n      eventDirectionName = DIRECTION_LEFT\n    } else {\n      directionalClassName = CLASS_NAME_RIGHT\n      orderClassName = CLASS_NAME_PREV\n      eventDirectionName = DIRECTION_RIGHT\n    }\n\n    if (nextElement && $(nextElement).hasClass(CLASS_NAME_ACTIVE)) {\n      this._isSliding = false\n      return\n    }\n\n    const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n    if (slideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return\n    }\n\n    this._isSliding = true\n\n    if (isCycling) {\n      this.pause()\n    }\n\n    this._setActiveIndicatorElement(nextElement)\n    this._activeElement = nextElement\n\n    const slidEvent = $.Event(EVENT_SLID, {\n      relatedTarget: nextElement,\n      direction: eventDirectionName,\n      from: activeElementIndex,\n      to: nextElementIndex\n    })\n\n    if ($(this._element).hasClass(CLASS_NAME_SLIDE)) {\n      $(nextElement).addClass(orderClassName)\n\n      Util.reflow(nextElement)\n\n      $(activeElement).addClass(directionalClassName)\n      $(nextElement).addClass(directionalClassName)\n\n      const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n      $(activeElement)\n        .one(Util.TRANSITION_END, () => {\n          $(nextElement)\n            .removeClass(`${directionalClassName} ${orderClassName}`)\n            .addClass(CLASS_NAME_ACTIVE)\n\n          $(activeElement).removeClass(`${CLASS_NAME_ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n          this._isSliding = false\n\n          setTimeout(() => $(this._element).trigger(slidEvent), 0)\n        })\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      $(activeElement).removeClass(CLASS_NAME_ACTIVE)\n      $(nextElement).addClass(CLASS_NAME_ACTIVE)\n\n      this._isSliding = false\n      $(this._element).trigger(slidEvent)\n    }\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      let _config = {\n        ...Default,\n        ...$(this).data()\n      }\n\n      if (typeof config === 'object') {\n        _config = {\n          ..._config,\n          ...config\n        }\n      }\n\n      const action = typeof config === 'string' ? config : _config.slide\n\n      if (!data) {\n        data = new Carousel(this, _config)\n        $(this).data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'number') {\n        data.to(config)\n      } else if (typeof action === 'string') {\n        if (typeof data[action] === 'undefined') {\n          throw new TypeError(`No method named \"${action}\"`)\n        }\n\n        data[action]()\n      } else if (_config.interval && _config.ride) {\n        data.pause()\n        data.cycle()\n      }\n    })\n  }\n\n  static _dataApiClickHandler(event) {\n    const selector = Util.getSelectorFromElement(this)\n\n    if (!selector) {\n      return\n    }\n\n    const target = $(selector)[0]\n\n    if (!target || !$(target).hasClass(CLASS_NAME_CAROUSEL)) {\n      return\n    }\n\n    const config = {\n      ...$(target).data(),\n      ...$(this).data()\n    }\n    const slideIndex = this.getAttribute('data-slide-to')\n\n    if (slideIndex) {\n      config.interval = false\n    }\n\n    Carousel._jQueryInterface.call($(target), config)\n\n    if (slideIndex) {\n      $(target).data(DATA_KEY).to(slideIndex)\n    }\n\n    event.preventDefault()\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler)\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n  const carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE))\n  for (let i = 0, len = carousels.length; i < len; i++) {\n    const $carousel = $(carousels[i])\n    Carousel._jQueryInterface.call($carousel, $carousel.data())\n  }\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Carousel._jQueryInterface\n$.fn[NAME].Constructor = Carousel\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Carousel._jQueryInterface\n}\n\nexport default Carousel\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst DIMENSION_WIDTH = 'width'\nconst DIMENSION_HEIGHT = 'height'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"collapse\"]'\n\nconst Default = {\n  toggle: true,\n  parent: ''\n}\n\nconst DefaultType = {\n  toggle: 'boolean',\n  parent: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse {\n  constructor(element, config) {\n    this._isTransitioning = false\n    this._element = element\n    this._config = this._getConfig(config)\n    this._triggerArray = [].slice.call(document.querySelectorAll(\n      `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n      `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n    ))\n\n    const toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n    for (let i = 0, len = toggleList.length; i < len; i++) {\n      const elem = toggleList[i]\n      const selector = Util.getSelectorFromElement(elem)\n      const filterElement = [].slice.call(document.querySelectorAll(selector))\n        .filter(foundElem => foundElem === element)\n\n      if (selector !== null && filterElement.length > 0) {\n        this._selector = selector\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  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n  toggle() {\n    if ($(this._element).hasClass(CLASS_NAME_SHOW)) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning ||\n      $(this._element).hasClass(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    let actives\n    let activesData\n\n    if (this._parent) {\n      actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES))\n        .filter(elem => {\n          if (typeof this._config.parent === 'string') {\n            return elem.getAttribute('data-parent') === this._config.parent\n          }\n\n          return elem.classList.contains(CLASS_NAME_COLLAPSE)\n        })\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      if (activesData && activesData._isTransitioning) {\n        return\n      }\n    }\n\n    const startEvent = $.Event(EVENT_SHOW)\n    $(this._element).trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) {\n      return\n    }\n\n    if (actives) {\n      Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n      if (!activesData) {\n        $(actives).data(DATA_KEY, null)\n      }\n    }\n\n    const dimension = this._getDimension()\n\n    $(this._element)\n      .removeClass(CLASS_NAME_COLLAPSE)\n      .addClass(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    if (this._triggerArray.length) {\n      $(this._triggerArray)\n        .removeClass(CLASS_NAME_COLLAPSED)\n        .attr('aria-expanded', true)\n    }\n\n    this.setTransitioning(true)\n\n    const complete = () => {\n      $(this._element)\n        .removeClass(CLASS_NAME_COLLAPSING)\n        .addClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n      this._element.style[dimension] = ''\n\n      this.setTransitioning(false)\n\n      $(this._element).trigger(EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n    const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n    $(this._element)\n      .one(Util.TRANSITION_END, complete)\n      .emulateTransitionEnd(transitionDuration)\n\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning ||\n      !$(this._element).hasClass(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const startEvent = $.Event(EVENT_HIDE)\n    $(this._element).trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    Util.reflow(this._element)\n\n    $(this._element)\n      .addClass(CLASS_NAME_COLLAPSING)\n      .removeClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n    const triggerArrayLength = this._triggerArray.length\n    if (triggerArrayLength > 0) {\n      for (let i = 0; i < triggerArrayLength; i++) {\n        const trigger = this._triggerArray[i]\n        const selector = Util.getSelectorFromElement(trigger)\n\n        if (selector !== null) {\n          const $elem = $([].slice.call(document.querySelectorAll(selector)))\n          if (!$elem.hasClass(CLASS_NAME_SHOW)) {\n            $(trigger).addClass(CLASS_NAME_COLLAPSED)\n              .attr('aria-expanded', false)\n          }\n        }\n      }\n    }\n\n    this.setTransitioning(true)\n\n    const complete = () => {\n      this.setTransitioning(false)\n      $(this._element)\n        .removeClass(CLASS_NAME_COLLAPSING)\n        .addClass(CLASS_NAME_COLLAPSE)\n        .trigger(EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n    const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n    $(this._element)\n      .one(Util.TRANSITION_END, complete)\n      .emulateTransitionEnd(transitionDuration)\n  }\n\n  setTransitioning(isTransitioning) {\n    this._isTransitioning = isTransitioning\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n\n    this._config = null\n    this._parent = null\n    this._element = null\n    this._triggerArray = null\n    this._isTransitioning = null\n  }\n\n  // Private\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...config\n    }\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    Util.typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _getDimension() {\n    const hasWidth = $(this._element).hasClass(DIMENSION_WIDTH)\n    return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT\n  }\n\n  _getParent() {\n    let parent\n\n    if (Util.isElement(this._config.parent)) {\n      parent = this._config.parent\n\n      // It's a jQuery object\n      if (typeof this._config.parent.jquery !== 'undefined') {\n        parent = this._config.parent[0]\n      }\n    } else {\n      parent = document.querySelector(this._config.parent)\n    }\n\n    const selector = `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n    const children = [].slice.call(parent.querySelectorAll(selector))\n\n    $(children).each((i, element) => {\n      this._addAriaAndCollapsedClass(\n        Collapse._getTargetFromElement(element),\n        [element]\n      )\n    })\n\n    return parent\n  }\n\n  _addAriaAndCollapsedClass(element, triggerArray) {\n    const isOpen = $(element).hasClass(CLASS_NAME_SHOW)\n\n    if (triggerArray.length) {\n      $(triggerArray)\n        .toggleClass(CLASS_NAME_COLLAPSED, !isOpen)\n        .attr('aria-expanded', isOpen)\n    }\n  }\n\n  // Static\n  static _getTargetFromElement(element) {\n    const selector = Util.getSelectorFromElement(element)\n    return selector ? document.querySelector(selector) : null\n  }\n\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n      const _config = {\n        ...Default,\n        ...$element.data(),\n        ...(typeof config === 'object' && config ? config : {})\n      }\n\n      if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n        _config.toggle = false\n      }\n\n      if (!data) {\n        data = new Collapse(this, _config)\n        $element.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\n/**\n * Data API implementation\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.currentTarget.tagName === 'A') {\n    event.preventDefault()\n  }\n\n  const $trigger = $(this)\n  const selector = Util.getSelectorFromElement(this)\n  const selectors = [].slice.call(document.querySelectorAll(selector))\n\n  $(selectors).each(function () {\n    const $target = $(this)\n    const data = $target.data(DATA_KEY)\n    const config = data ? 'toggle' : $trigger.data()\n    Collapse._jQueryInterface.call($target, config)\n  })\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Collapse._jQueryInterface\n$.fn[NAME].Constructor = Collapse\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Collapse._jQueryInterface\n}\n\nexport default Collapse\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\nconst SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\nconst TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\nconst ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\nconst ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\nconst RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPRIGHT = 'dropright'\nconst CLASS_NAME_DROPLEFT = 'dropleft'\nconst CLASS_NAME_MENURIGHT = 'dropdown-menu-right'\nconst CLASS_NAME_POSITION_STATIC = 'position-static'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = 'top-start'\nconst PLACEMENT_TOPEND = 'top-end'\nconst PLACEMENT_BOTTOM = 'bottom-start'\nconst PLACEMENT_BOTTOMEND = 'bottom-end'\nconst PLACEMENT_RIGHT = 'right-start'\nconst PLACEMENT_LEFT = 'left-start'\n\nconst Default = {\n  offset: 0,\n  flip: true,\n  boundary: 'scrollParent',\n  reference: 'toggle',\n  display: 'dynamic',\n  popperConfig: null\n}\n\nconst DefaultType = {\n  offset: '(number|string|function)',\n  flip: 'boolean',\n  boundary: '(string|element)',\n  reference: '(string|element)',\n  display: 'string',\n  popperConfig: '(null|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown {\n  constructor(element, config) {\n    this._element = element\n    this._popper = null\n    this._config = this._getConfig(config)\n    this._menu = this._getMenuElement()\n    this._inNavbar = this._detectNavbar()\n\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Public\n  toggle() {\n    if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED)) {\n      return\n    }\n\n    const isActive = $(this._menu).hasClass(CLASS_NAME_SHOW)\n\n    Dropdown._clearMenus()\n\n    if (isActive) {\n      return\n    }\n\n    this.show(true)\n  }\n\n  show(usePopper = false) {\n    if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || $(this._menu).hasClass(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n    const showEvent = $.Event(EVENT_SHOW, relatedTarget)\n    const parent = Dropdown._getParentFromElement(this._element)\n\n    $(parent).trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented()) {\n      return\n    }\n\n    // Totally disable Popper for Dropdowns in Navbar\n    if (!this._inNavbar && usePopper) {\n      // Check for Popper dependency\n      if (typeof Popper === 'undefined') {\n        throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n      }\n\n      let referenceElement = this._element\n\n      if (this._config.reference === 'parent') {\n        referenceElement = parent\n      } else if (Util.isElement(this._config.reference)) {\n        referenceElement = this._config.reference\n\n        // Check if it's jQuery element\n        if (typeof this._config.reference.jquery !== 'undefined') {\n          referenceElement = this._config.reference[0]\n        }\n      }\n\n      // If boundary is not `scrollParent`, then set position to `static`\n      // to allow the menu to \"escape\" the scroll parent's boundaries\n      // https://github.com/twbs/bootstrap/issues/24251\n      if (this._config.boundary !== 'scrollParent') {\n        $(parent).addClass(CLASS_NAME_POSITION_STATIC)\n      }\n\n      this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n    }\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement &&\n        $(parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n      $(document.body).children().on('mouseover', null, $.noop)\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', true)\n\n    $(this._menu).toggleClass(CLASS_NAME_SHOW)\n    $(parent)\n      .toggleClass(CLASS_NAME_SHOW)\n      .trigger($.Event(EVENT_SHOWN, relatedTarget))\n  }\n\n  hide() {\n    if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || !$(this._menu).hasClass(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n    const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n    const parent = Dropdown._getParentFromElement(this._element)\n\n    $(parent).trigger(hideEvent)\n\n    if (hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    $(this._menu).toggleClass(CLASS_NAME_SHOW)\n    $(parent)\n      .toggleClass(CLASS_NAME_SHOW)\n      .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n    $(this._element).off(EVENT_KEY)\n    this._element = null\n    this._menu = null\n    if (this._popper !== null) {\n      this._popper.destroy()\n      this._popper = null\n    }\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar()\n    if (this._popper !== null) {\n      this._popper.scheduleUpdate()\n    }\n  }\n\n  // Private\n  _addEventListeners() {\n    $(this._element).on(EVENT_CLICK, event => {\n      event.preventDefault()\n      event.stopPropagation()\n      this.toggle()\n    })\n  }\n\n  _getConfig(config) {\n    config = {\n      ...this.constructor.Default,\n      ...$(this._element).data(),\n      ...config\n    }\n\n    Util.typeCheckConfig(\n      NAME,\n      config,\n      this.constructor.DefaultType\n    )\n\n    return config\n  }\n\n  _getMenuElement() {\n    if (!this._menu) {\n      const parent = Dropdown._getParentFromElement(this._element)\n\n      if (parent) {\n        this._menu = parent.querySelector(SELECTOR_MENU)\n      }\n    }\n\n    return this._menu\n  }\n\n  _getPlacement() {\n    const $parentDropdown = $(this._element.parentNode)\n    let placement = PLACEMENT_BOTTOM\n\n    // Handle dropup\n    if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n      placement = $(this._menu).hasClass(CLASS_NAME_MENURIGHT) ?\n        PLACEMENT_TOPEND :\n        PLACEMENT_TOP\n    } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n      placement = PLACEMENT_RIGHT\n    } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n      placement = PLACEMENT_LEFT\n    } else if ($(this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n      placement = PLACEMENT_BOTTOMEND\n    }\n\n    return placement\n  }\n\n  _detectNavbar() {\n    return $(this._element).closest('.navbar').length > 0\n  }\n\n  _getOffset() {\n    const offset = {}\n\n    if (typeof this._config.offset === 'function') {\n      offset.fn = data => {\n        data.offsets = {\n          ...data.offsets,\n          ...this._config.offset(data.offsets, this._element)\n        }\n\n        return data\n      }\n    } else {\n      offset.offset = this._config.offset\n    }\n\n    return offset\n  }\n\n  _getPopperConfig() {\n    const popperConfig = {\n      placement: this._getPlacement(),\n      modifiers: {\n        offset: this._getOffset(),\n        flip: {\n          enabled: this._config.flip\n        },\n        preventOverflow: {\n          boundariesElement: this._config.boundary\n        }\n      }\n    }\n\n    // Disable Popper if we have a static display\n    if (this._config.display === 'static') {\n      popperConfig.modifiers.applyStyle = {\n        enabled: false\n      }\n    }\n\n    return {\n      ...popperConfig,\n      ...this._config.popperConfig\n    }\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      const _config = typeof config === 'object' ? config : null\n\n      if (!data) {\n        data = new Dropdown(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  static _clearMenus(event) {\n    if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n      event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n      return\n    }\n\n    const toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n\n    for (let i = 0, len = toggles.length; i < len; i++) {\n      const parent = Dropdown._getParentFromElement(toggles[i])\n      const context = $(toggles[i]).data(DATA_KEY)\n      const relatedTarget = {\n        relatedTarget: toggles[i]\n      }\n\n      if (event && event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      if (!context) {\n        continue\n      }\n\n      const dropdownMenu = context._menu\n      if (!$(parent).hasClass(CLASS_NAME_SHOW)) {\n        continue\n      }\n\n      if (event && (event.type === 'click' &&\n          /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n          $.contains(parent, event.target)) {\n        continue\n      }\n\n      const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n      $(parent).trigger(hideEvent)\n      if (hideEvent.isDefaultPrevented()) {\n        continue\n      }\n\n      // If this is a touch-enabled device we remove the extra\n      // empty mouseover listeners we added for iOS support\n      if ('ontouchstart' in document.documentElement) {\n        $(document.body).children().off('mouseover', null, $.noop)\n      }\n\n      toggles[i].setAttribute('aria-expanded', 'false')\n\n      if (context._popper) {\n        context._popper.destroy()\n      }\n\n      $(dropdownMenu).removeClass(CLASS_NAME_SHOW)\n      $(parent)\n        .removeClass(CLASS_NAME_SHOW)\n        .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n    }\n  }\n\n  static _getParentFromElement(element) {\n    let parent\n    const selector = Util.getSelectorFromElement(element)\n\n    if (selector) {\n      parent = document.querySelector(selector)\n    }\n\n    return parent || element.parentNode\n  }\n\n  // eslint-disable-next-line complexity\n  static _dataApiKeydownHandler(event) {\n    // If not input/textarea:\n    //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n    // If input/textarea:\n    //  - If space key => not a dropdown command\n    //  - If key is other than escape\n    //    - If key is not up or down => not a dropdown command\n    //    - If trigger inside the menu => not a dropdown command\n    if (/input|textarea/i.test(event.target.tagName) ?\n      event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n      (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n        $(event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n      return\n    }\n\n    if (this.disabled || $(this).hasClass(CLASS_NAME_DISABLED)) {\n      return\n    }\n\n    const parent = Dropdown._getParentFromElement(this)\n    const isActive = $(parent).hasClass(CLASS_NAME_SHOW)\n\n    if (!isActive && event.which === ESCAPE_KEYCODE) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    if (!isActive || (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n      if (event.which === ESCAPE_KEYCODE) {\n        $(parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus')\n      }\n\n      $(this).trigger('click')\n      return\n    }\n\n    const items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS))\n      .filter(item => $(item).is(':visible'))\n\n    if (items.length === 0) {\n      return\n    }\n\n    let index = items.indexOf(event.target)\n\n    if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n      index--\n    }\n\n    if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n      index++\n    }\n\n    if (index < 0) {\n      index = 0\n    }\n\n    items[index].focus()\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(document)\n  .on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n  .on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler)\n  .on(`${EVENT_CLICK_DATA_API} ${EVENT_KEYUP_DATA_API}`, Dropdown._clearMenus)\n  .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n    event.preventDefault()\n    event.stopPropagation()\n    Dropdown._jQueryInterface.call($(this), 'toggle')\n  })\n  .on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, e => {\n    e.stopPropagation()\n  })\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Dropdown._jQueryInterface\n$.fn[NAME].Constructor = Dropdown\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Dropdown._jQueryInterface\n}\n\nexport default Dropdown\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\nconst CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable'\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  focus: true,\n  show: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  focus: 'boolean',\n  show: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal {\n  constructor(element, config) {\n    this._config = this._getConfig(config)\n    this._element = element\n    this._dialog = element.querySelector(SELECTOR_DIALOG)\n    this._backdrop = null\n    this._isShown = false\n    this._isBodyOverflowing = false\n    this._ignoreBackdropClick = false\n    this._isTransitioning = false\n    this._scrollbarWidth = 0\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = $.Event(EVENT_SHOW, {\n      relatedTarget\n    })\n\n    $(this._element).trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented()) {\n      return\n    }\n\n    this._isShown = true\n\n    if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n      this._isTransitioning = true\n    }\n\n    this._checkScrollbar()\n    this._setScrollbar()\n\n    this._adjustDialog()\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    $(this._element).on(\n      EVENT_CLICK_DISMISS,\n      SELECTOR_DATA_DISMISS,\n      event => this.hide(event)\n    )\n\n    $(this._dialog).on(EVENT_MOUSEDOWN_DISMISS, () => {\n      $(this._element).one(EVENT_MOUSEUP_DISMISS, event => {\n        if ($(event.target).is(this._element)) {\n          this._ignoreBackdropClick = true\n        }\n      })\n    })\n\n    this._showBackdrop(() => this._showElement(relatedTarget))\n  }\n\n  hide(event) {\n    if (event) {\n      event.preventDefault()\n    }\n\n    if (!this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = $.Event(EVENT_HIDE)\n\n    $(this._element).trigger(hideEvent)\n\n    if (!this._isShown || hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    this._isShown = false\n    const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n\n    if (transition) {\n      this._isTransitioning = true\n    }\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    $(document).off(EVENT_FOCUSIN)\n\n    $(this._element).removeClass(CLASS_NAME_SHOW)\n\n    $(this._element).off(EVENT_CLICK_DISMISS)\n    $(this._dialog).off(EVENT_MOUSEDOWN_DISMISS)\n\n    if (transition) {\n      const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n      $(this._element)\n        .one(Util.TRANSITION_END, event => this._hideModal(event))\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      this._hideModal()\n    }\n  }\n\n  dispose() {\n    [window, this._element, this._dialog]\n      .forEach(htmlElement => $(htmlElement).off(EVENT_KEY))\n\n    /**\n     * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n     * Do not move `document` in `htmlElements` array\n     * It will remove `EVENT_CLICK_DATA_API` event that should remain\n     */\n    $(document).off(EVENT_FOCUSIN)\n\n    $.removeData(this._element, DATA_KEY)\n\n    this._config = null\n    this._element = null\n    this._dialog = null\n    this._backdrop = null\n    this._isShown = null\n    this._isBodyOverflowing = null\n    this._ignoreBackdropClick = null\n    this._isTransitioning = null\n    this._scrollbarWidth = null\n  }\n\n  handleUpdate() {\n    this._adjustDialog()\n  }\n\n  // Private\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...config\n    }\n    Util.typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _triggerBackdropTransition() {\n    const hideEventPrevented = $.Event(EVENT_HIDE_PREVENTED)\n\n    $(this._element).trigger(hideEventPrevented)\n    if (hideEventPrevented.isDefaultPrevented()) {\n      return\n    }\n\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n    if (!isModalOverflowing) {\n      this._element.style.overflowY = 'hidden'\n    }\n\n    this._element.classList.add(CLASS_NAME_STATIC)\n\n    const modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n    $(this._element).off(Util.TRANSITION_END)\n\n    $(this._element).one(Util.TRANSITION_END, () => {\n      this._element.classList.remove(CLASS_NAME_STATIC)\n      if (!isModalOverflowing) {\n        $(this._element).one(Util.TRANSITION_END, () => {\n          this._element.style.overflowY = ''\n        })\n          .emulateTransitionEnd(this._element, modalTransitionDuration)\n      }\n    })\n      .emulateTransitionEnd(modalTransitionDuration)\n    this._element.focus()\n  }\n\n  _showElement(relatedTarget) {\n    const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n    const modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null\n\n    if (!this._element.parentNode ||\n        this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n      // Don't move modal's DOM position\n      document.body.appendChild(this._element)\n    }\n\n    this._element.style.display = 'block'\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n\n    if ($(this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n      modalBody.scrollTop = 0\n    } else {\n      this._element.scrollTop = 0\n    }\n\n    if (transition) {\n      Util.reflow(this._element)\n    }\n\n    $(this._element).addClass(CLASS_NAME_SHOW)\n\n    if (this._config.focus) {\n      this._enforceFocus()\n    }\n\n    const shownEvent = $.Event(EVENT_SHOWN, {\n      relatedTarget\n    })\n\n    const transitionComplete = () => {\n      if (this._config.focus) {\n        this._element.focus()\n      }\n\n      this._isTransitioning = false\n      $(this._element).trigger(shownEvent)\n    }\n\n    if (transition) {\n      const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n      $(this._dialog)\n        .one(Util.TRANSITION_END, transitionComplete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      transitionComplete()\n    }\n  }\n\n  _enforceFocus() {\n    $(document)\n      .off(EVENT_FOCUSIN) // Guard against infinite focus loop\n      .on(EVENT_FOCUSIN, event => {\n        if (document !== event.target &&\n            this._element !== event.target &&\n            $(this._element).has(event.target).length === 0) {\n          this._element.focus()\n        }\n      })\n  }\n\n  _setEscapeEvent() {\n    if (this._isShown) {\n      $(this._element).on(EVENT_KEYDOWN_DISMISS, event => {\n        if (this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n          event.preventDefault()\n          this.hide()\n        } else if (!this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n          this._triggerBackdropTransition()\n        }\n      })\n    } else if (!this._isShown) {\n      $(this._element).off(EVENT_KEYDOWN_DISMISS)\n    }\n  }\n\n  _setResizeEvent() {\n    if (this._isShown) {\n      $(window).on(EVENT_RESIZE, event => this.handleUpdate(event))\n    } else {\n      $(window).off(EVENT_RESIZE)\n    }\n  }\n\n  _hideModal() {\n    this._element.style.display = 'none'\n    this._element.setAttribute('aria-hidden', true)\n    this._element.removeAttribute('aria-modal')\n    this._element.removeAttribute('role')\n    this._isTransitioning = false\n    this._showBackdrop(() => {\n      $(document.body).removeClass(CLASS_NAME_OPEN)\n      this._resetAdjustments()\n      this._resetScrollbar()\n      $(this._element).trigger(EVENT_HIDDEN)\n    })\n  }\n\n  _removeBackdrop() {\n    if (this._backdrop) {\n      $(this._backdrop).remove()\n      this._backdrop = null\n    }\n  }\n\n  _showBackdrop(callback) {\n    const animate = $(this._element).hasClass(CLASS_NAME_FADE) ?\n      CLASS_NAME_FADE : ''\n\n    if (this._isShown && this._config.backdrop) {\n      this._backdrop = document.createElement('div')\n      this._backdrop.className = CLASS_NAME_BACKDROP\n\n      if (animate) {\n        this._backdrop.classList.add(animate)\n      }\n\n      $(this._backdrop).appendTo(document.body)\n\n      $(this._element).on(EVENT_CLICK_DISMISS, event => {\n        if (this._ignoreBackdropClick) {\n          this._ignoreBackdropClick = false\n          return\n        }\n\n        if (event.target !== event.currentTarget) {\n          return\n        }\n\n        if (this._config.backdrop === 'static') {\n          this._triggerBackdropTransition()\n        } else {\n          this.hide()\n        }\n      })\n\n      if (animate) {\n        Util.reflow(this._backdrop)\n      }\n\n      $(this._backdrop).addClass(CLASS_NAME_SHOW)\n\n      if (!callback) {\n        return\n      }\n\n      if (!animate) {\n        callback()\n        return\n      }\n\n      const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n      $(this._backdrop)\n        .one(Util.TRANSITION_END, callback)\n        .emulateTransitionEnd(backdropTransitionDuration)\n    } else if (!this._isShown && this._backdrop) {\n      $(this._backdrop).removeClass(CLASS_NAME_SHOW)\n\n      const callbackRemove = () => {\n        this._removeBackdrop()\n        if (callback) {\n          callback()\n        }\n      }\n\n      if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n        const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n        $(this._backdrop)\n          .one(Util.TRANSITION_END, callbackRemove)\n          .emulateTransitionEnd(backdropTransitionDuration)\n      } else {\n        callbackRemove()\n      }\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // ----------------------------------------------------------------------\n  // the following methods are used to handle overflowing modals\n  // todo (fat): these should probably be refactored out of modal.js\n  // ----------------------------------------------------------------------\n\n  _adjustDialog() {\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n    if (!this._isBodyOverflowing && isModalOverflowing) {\n      this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n    }\n\n    if (this._isBodyOverflowing && !isModalOverflowing) {\n      this._element.style.paddingRight = `${this._scrollbarWidth}px`\n    }\n  }\n\n  _resetAdjustments() {\n    this._element.style.paddingLeft = ''\n    this._element.style.paddingRight = ''\n  }\n\n  _checkScrollbar() {\n    const rect = document.body.getBoundingClientRect()\n    this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n    this._scrollbarWidth = this._getScrollbarWidth()\n  }\n\n  _setScrollbar() {\n    if (this._isBodyOverflowing) {\n      // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n      //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n      const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n      const stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT))\n\n      // Adjust fixed content padding\n      $(fixedContent).each((index, element) => {\n        const actualPadding = element.style.paddingRight\n        const calculatedPadding = $(element).css('padding-right')\n        $(element)\n          .data('padding-right', actualPadding)\n          .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n      })\n\n      // Adjust sticky content margin\n      $(stickyContent).each((index, element) => {\n        const actualMargin = element.style.marginRight\n        const calculatedMargin = $(element).css('margin-right')\n        $(element)\n          .data('margin-right', actualMargin)\n          .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n      })\n\n      // Adjust body padding\n      const actualPadding = document.body.style.paddingRight\n      const calculatedPadding = $(document.body).css('padding-right')\n      $(document.body)\n        .data('padding-right', actualPadding)\n        .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n    }\n\n    $(document.body).addClass(CLASS_NAME_OPEN)\n  }\n\n  _resetScrollbar() {\n    // Restore fixed content padding\n    const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n    $(fixedContent).each((index, element) => {\n      const padding = $(element).data('padding-right')\n      $(element).removeData('padding-right')\n      element.style.paddingRight = padding ? padding : ''\n    })\n\n    // Restore sticky content\n    const elements = [].slice.call(document.querySelectorAll(`${SELECTOR_STICKY_CONTENT}`))\n    $(elements).each((index, element) => {\n      const margin = $(element).data('margin-right')\n      if (typeof margin !== 'undefined') {\n        $(element).css('margin-right', margin).removeData('margin-right')\n      }\n    })\n\n    // Restore body padding\n    const padding = $(document.body).data('padding-right')\n    $(document.body).removeData('padding-right')\n    document.body.style.paddingRight = padding ? padding : ''\n  }\n\n  _getScrollbarWidth() { // thx d.walsh\n    const scrollDiv = document.createElement('div')\n    scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n    document.body.appendChild(scrollDiv)\n    const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n    document.body.removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n  // Static\n  static _jQueryInterface(config, relatedTarget) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      const _config = {\n        ...Default,\n        ...$(this).data(),\n        ...(typeof config === 'object' && config ? config : {})\n      }\n\n      if (!data) {\n        data = new Modal(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](relatedTarget)\n      } else if (_config.show) {\n        data.show(relatedTarget)\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  let target\n  const selector = Util.getSelectorFromElement(this)\n\n  if (selector) {\n    target = document.querySelector(selector)\n  }\n\n  const config = $(target).data(DATA_KEY) ?\n    'toggle' : {\n      ...$(target).data(),\n      ...$(this).data()\n    }\n\n  if (this.tagName === 'A' || this.tagName === 'AREA') {\n    event.preventDefault()\n  }\n\n  const $target = $(target).one(EVENT_SHOW, showEvent => {\n    if (showEvent.isDefaultPrevented()) {\n      // Only register focus restorer if modal will actually get shown\n      return\n    }\n\n    $target.one(EVENT_HIDDEN, () => {\n      if ($(this).is(':visible')) {\n        this.focus()\n      }\n    })\n  })\n\n  Modal._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Modal._jQueryInterface\n$.fn[NAME].Constructor = Modal\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Modal._jQueryInterface\n}\n\nexport default Modal\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = [\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultWhitelist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  div: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nfunction allowedAttribute(attr, allowedAttributeList) {\n  const attrName = attr.nodeName.toLowerCase()\n\n  if (allowedAttributeList.indexOf(attrName) !== -1) {\n    if (uriAttrs.indexOf(attrName) !== -1) {\n      return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n    }\n\n    return true\n  }\n\n  const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n  // Check if a regular expression validates the attribute.\n  for (let i = 0, len = regExp.length; i < len; i++) {\n    if (regExp[i].test(attrName)) {\n      return true\n    }\n  }\n\n  return false\n}\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n  if (unsafeHtml.length === 0) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFn && typeof sanitizeFn === 'function') {\n    return sanitizeFn(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const whitelistKeys = Object.keys(whiteList)\n  const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))\n\n  for (let i = 0, len = elements.length; i < len; i++) {\n    const el = elements[i]\n    const elName = el.nodeName.toLowerCase()\n\n    if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n      el.parentNode.removeChild(el)\n\n      continue\n    }\n\n    const attributeList = [].slice.call(el.attributes)\n    // eslint-disable-next-line unicorn/prefer-spread\n    const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n    attributeList.forEach(attr => {\n      if (!allowedAttribute(attr, whitelistedAttributes)) {\n        el.removeAttribute(attr.nodeName)\n      }\n    })\n  }\n\n  return createdDocument.body.innerHTML\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { DefaultWhitelist, sanitizeHtml } from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_ARROW = '.arrow'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: 'right',\n  BOTTOM: 'bottom',\n  LEFT: 'left'\n}\n\nconst Default = {\n  animation: true,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n                    '<div class=\"arrow\"></div>' +\n                    '<div class=\"tooltip-inner\"></div></div>',\n  trigger: 'hover focus',\n  title: '',\n  delay: 0,\n  html: false,\n  selector: false,\n  placement: 'top',\n  offset: 0,\n  container: false,\n  fallbackPlacement: 'flip',\n  boundary: 'scrollParent',\n  customClass: '',\n  sanitize: true,\n  sanitizeFn: null,\n  whiteList: DefaultWhitelist,\n  popperConfig: null\n}\n\nconst DefaultType = {\n  animation: 'boolean',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string',\n  delay: '(number|object)',\n  html: 'boolean',\n  selector: '(string|boolean)',\n  placement: '(string|function)',\n  offset: '(number|string|function)',\n  container: '(string|element|boolean)',\n  fallbackPlacement: '(string|array)',\n  boundary: '(string|element)',\n  customClass: '(string|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  whiteList: 'object',\n  popperConfig: '(null|object)'\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n    }\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._hoverState = ''\n    this._activeTrigger = {}\n    this._popper = null\n\n    // Protected\n    this.element = element\n    this.config = this._getConfig(config)\n    this.tip = null\n\n    this._setListeners()\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get DATA_KEY() {\n    return DATA_KEY\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get EVENT_KEY() {\n    return EVENT_KEY\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle(event) {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (event) {\n      const dataKey = this.constructor.DATA_KEY\n      let context = $(event.currentTarget).data(dataKey)\n\n      if (!context) {\n        context = new this.constructor(\n          event.currentTarget,\n          this._getDelegateConfig()\n        )\n        $(event.currentTarget).data(dataKey, context)\n      }\n\n      context._activeTrigger.click = !context._activeTrigger.click\n\n      if (context._isWithActiveTrigger()) {\n        context._enter(null, context)\n      } else {\n        context._leave(null, context)\n      }\n    } else {\n      if ($(this.getTipElement()).hasClass(CLASS_NAME_SHOW)) {\n        this._leave(null, this)\n        return\n      }\n\n      this._enter(null, this)\n    }\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    $.removeData(this.element, this.constructor.DATA_KEY)\n\n    $(this.element).off(this.constructor.EVENT_KEY)\n    $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler)\n\n    if (this.tip) {\n      $(this.tip).remove()\n    }\n\n    this._isEnabled = null\n    this._timeout = null\n    this._hoverState = null\n    this._activeTrigger = null\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._popper = null\n    this.element = null\n    this.config = null\n    this.tip = null\n  }\n\n  show() {\n    if ($(this.element).css('display') === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    const showEvent = $.Event(this.constructor.Event.SHOW)\n    if (this.isWithContent() && this._isEnabled) {\n      $(this.element).trigger(showEvent)\n\n      const shadowRoot = Util.findShadowRoot(this.element)\n      const isInTheDom = $.contains(\n        shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n        this.element\n      )\n\n      if (showEvent.isDefaultPrevented() || !isInTheDom) {\n        return\n      }\n\n      const tip = this.getTipElement()\n      const tipId = Util.getUID(this.constructor.NAME)\n\n      tip.setAttribute('id', tipId)\n      this.element.setAttribute('aria-describedby', tipId)\n\n      this.setContent()\n\n      if (this.config.animation) {\n        $(tip).addClass(CLASS_NAME_FADE)\n      }\n\n      const placement = typeof this.config.placement === 'function' ?\n        this.config.placement.call(this, tip, this.element) :\n        this.config.placement\n\n      const attachment = this._getAttachment(placement)\n      this.addAttachmentClass(attachment)\n\n      const container = this._getContainer()\n      $(tip).data(this.constructor.DATA_KEY, this)\n\n      if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n        $(tip).appendTo(container)\n      }\n\n      $(this.element).trigger(this.constructor.Event.INSERTED)\n\n      this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment))\n\n      $(tip).addClass(CLASS_NAME_SHOW)\n      $(tip).addClass(this.config.customClass)\n\n      // If this is a touch-enabled device we add extra\n      // empty mouseover listeners to the body's immediate children;\n      // only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n      if ('ontouchstart' in document.documentElement) {\n        $(document.body).children().on('mouseover', null, $.noop)\n      }\n\n      const complete = () => {\n        if (this.config.animation) {\n          this._fixTransition()\n        }\n\n        const prevHoverState = this._hoverState\n        this._hoverState = null\n\n        $(this.element).trigger(this.constructor.Event.SHOWN)\n\n        if (prevHoverState === HOVER_STATE_OUT) {\n          this._leave(null, this)\n        }\n      }\n\n      if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n        const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n        $(this.tip)\n          .one(Util.TRANSITION_END, complete)\n          .emulateTransitionEnd(transitionDuration)\n      } else {\n        complete()\n      }\n    }\n  }\n\n  hide(callback) {\n    const tip = this.getTipElement()\n    const hideEvent = $.Event(this.constructor.Event.HIDE)\n    const complete = () => {\n      if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n        tip.parentNode.removeChild(tip)\n      }\n\n      this._cleanTipClass()\n      this.element.removeAttribute('aria-describedby')\n      $(this.element).trigger(this.constructor.Event.HIDDEN)\n      if (this._popper !== null) {\n        this._popper.destroy()\n      }\n\n      if (callback) {\n        callback()\n      }\n    }\n\n    $(this.element).trigger(hideEvent)\n\n    if (hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    $(tip).removeClass(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      $(document.body).children().off('mouseover', null, $.noop)\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n\n    if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n      const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n      $(tip)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      complete()\n    }\n\n    this._hoverState = ''\n  }\n\n  update() {\n    if (this._popper !== null) {\n      this._popper.scheduleUpdate()\n    }\n  }\n\n  // Protected\n  isWithContent() {\n    return Boolean(this.getTitle())\n  }\n\n  addAttachmentClass(attachment) {\n    $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n  }\n\n  getTipElement() {\n    this.tip = this.tip || $(this.config.template)[0]\n    return this.tip\n  }\n\n  setContent() {\n    const tip = this.getTipElement()\n    this.setElementContent($(tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle())\n    $(tip).removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n  }\n\n  setElementContent($element, content) {\n    if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n      // Content is a DOM node or a jQuery\n      if (this.config.html) {\n        if (!$(content).parent().is($element)) {\n          $element.empty().append(content)\n        }\n      } else {\n        $element.text($(content).text())\n      }\n\n      return\n    }\n\n    if (this.config.html) {\n      if (this.config.sanitize) {\n        content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn)\n      }\n\n      $element.html(content)\n    } else {\n      $element.text(content)\n    }\n  }\n\n  getTitle() {\n    let title = this.element.getAttribute('data-original-title')\n\n    if (!title) {\n      title = typeof this.config.title === 'function' ?\n        this.config.title.call(this.element) :\n        this.config.title\n    }\n\n    return title\n  }\n\n  // Private\n  _getPopperConfig(attachment) {\n    const defaultBsConfig = {\n      placement: attachment,\n      modifiers: {\n        offset: this._getOffset(),\n        flip: {\n          behavior: this.config.fallbackPlacement\n        },\n        arrow: {\n          element: SELECTOR_ARROW\n        },\n        preventOverflow: {\n          boundariesElement: this.config.boundary\n        }\n      },\n      onCreate: data => {\n        if (data.originalPlacement !== data.placement) {\n          this._handlePopperPlacementChange(data)\n        }\n      },\n      onUpdate: data => this._handlePopperPlacementChange(data)\n    }\n\n    return {\n      ...defaultBsConfig,\n      ...this.config.popperConfig\n    }\n  }\n\n  _getOffset() {\n    const offset = {}\n\n    if (typeof this.config.offset === 'function') {\n      offset.fn = data => {\n        data.offsets = {\n          ...data.offsets,\n          ...this.config.offset(data.offsets, this.element)\n        }\n\n        return data\n      }\n    } else {\n      offset.offset = this.config.offset\n    }\n\n    return offset\n  }\n\n  _getContainer() {\n    if (this.config.container === false) {\n      return document.body\n    }\n\n    if (Util.isElement(this.config.container)) {\n      return $(this.config.container)\n    }\n\n    return $(document).find(this.config.container)\n  }\n\n  _getAttachment(placement) {\n    return AttachmentMap[placement.toUpperCase()]\n  }\n\n  _setListeners() {\n    const triggers = this.config.trigger.split(' ')\n\n    triggers.forEach(trigger => {\n      if (trigger === 'click') {\n        $(this.element).on(\n          this.constructor.Event.CLICK,\n          this.config.selector,\n          event => this.toggle(event)\n        )\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSEENTER :\n          this.constructor.Event.FOCUSIN\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSELEAVE :\n          this.constructor.Event.FOCUSOUT\n\n        $(this.element)\n          .on(eventIn, this.config.selector, event => this._enter(event))\n          .on(eventOut, this.config.selector, event => this._leave(event))\n      }\n    })\n\n    this._hideModalHandler = () => {\n      if (this.element) {\n        this.hide()\n      }\n    }\n\n    $(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler)\n\n    if (this.config.selector) {\n      this.config = {\n        ...this.config,\n        trigger: 'manual',\n        selector: ''\n      }\n    } else {\n      this._fixTitle()\n    }\n  }\n\n  _fixTitle() {\n    const titleType = typeof this.element.getAttribute('data-original-title')\n\n    if (this.element.getAttribute('title') || titleType !== 'string') {\n      this.element.setAttribute(\n        'data-original-title',\n        this.element.getAttribute('title') || ''\n      )\n\n      this.element.setAttribute('title', '')\n    }\n  }\n\n  _enter(event, context) {\n    const dataKey = this.constructor.DATA_KEY\n    context = context || $(event.currentTarget).data(dataKey)\n\n    if (!context) {\n      context = new this.constructor(\n        event.currentTarget,\n        this._getDelegateConfig()\n      )\n      $(event.currentTarget).data(dataKey, context)\n    }\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = true\n    }\n\n    if ($(context.getTipElement()).hasClass(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n      context._hoverState = HOVER_STATE_SHOW\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_SHOW\n\n    if (!context.config.delay || !context.config.delay.show) {\n      context.show()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_SHOW) {\n        context.show()\n      }\n    }, context.config.delay.show)\n  }\n\n  _leave(event, context) {\n    const dataKey = this.constructor.DATA_KEY\n    context = context || $(event.currentTarget).data(dataKey)\n\n    if (!context) {\n      context = new this.constructor(\n        event.currentTarget,\n        this._getDelegateConfig()\n      )\n      $(event.currentTarget).data(dataKey, context)\n    }\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = false\n    }\n\n    if (context._isWithActiveTrigger()) {\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_OUT\n\n    if (!context.config.delay || !context.config.delay.hide) {\n      context.hide()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_OUT) {\n        context.hide()\n      }\n    }, context.config.delay.hide)\n  }\n\n  _isWithActiveTrigger() {\n    for (const trigger in this._activeTrigger) {\n      if (this._activeTrigger[trigger]) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  _getConfig(config) {\n    const dataAttributes = $(this.element).data()\n\n    Object.keys(dataAttributes)\n      .forEach(dataAttr => {\n        if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n          delete dataAttributes[dataAttr]\n        }\n      })\n\n    config = {\n      ...this.constructor.Default,\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    Util.typeCheckConfig(\n      NAME,\n      config,\n      this.constructor.DefaultType\n    )\n\n    if (config.sanitize) {\n      config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    if (this.config) {\n      for (const key in this.config) {\n        if (this.constructor.Default[key] !== this.config[key]) {\n          config[key] = this.config[key]\n        }\n      }\n    }\n\n    return config\n  }\n\n  _cleanTipClass() {\n    const $tip = $(this.getTipElement())\n    const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n    if (tabClass !== null && tabClass.length) {\n      $tip.removeClass(tabClass.join(''))\n    }\n  }\n\n  _handlePopperPlacementChange(popperData) {\n    this.tip = popperData.instance.popper\n    this._cleanTipClass()\n    this.addAttachmentClass(this._getAttachment(popperData.placement))\n  }\n\n  _fixTransition() {\n    const tip = this.getTipElement()\n    const initConfigAnimation = this.config.animation\n\n    if (tip.getAttribute('x-placement') !== null) {\n      return\n    }\n\n    $(tip).removeClass(CLASS_NAME_FADE)\n    this.config.animation = false\n    this.hide()\n    this.show()\n    this.config.animation = initConfigAnimation\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n      const _config = typeof config === 'object' && config\n\n      if (!data && /dispose|hide/.test(config)) {\n        return\n      }\n\n      if (!data) {\n        data = new Tooltip(this, _config)\n        $element.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\n/**\n * jQuery\n */\n\n$.fn[NAME] = Tooltip._jQueryInterface\n$.fn[NAME].Constructor = Tooltip\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Tooltip._jQueryInterface\n}\n\nexport default Tooltip\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n  ...Tooltip.Default,\n  placement: 'right',\n  trigger: 'click',\n  content: '',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n              '<div class=\"arrow\"></div>' +\n              '<h3 class=\"popover-header\"></h3>' +\n              '<div class=\"popover-body\"></div></div>'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(string|element|function)'\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get DATA_KEY() {\n    return DATA_KEY\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get EVENT_KEY() {\n    return EVENT_KEY\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Overrides\n  isWithContent() {\n    return this.getTitle() || this._getContent()\n  }\n\n  addAttachmentClass(attachment) {\n    $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n  }\n\n  getTipElement() {\n    this.tip = this.tip || $(this.config.template)[0]\n    return this.tip\n  }\n\n  setContent() {\n    const $tip = $(this.getTipElement())\n\n    // We use append for html objects to maintain js events\n    this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle())\n    let content = this._getContent()\n    if (typeof content === 'function') {\n      content = content.call(this.element)\n    }\n\n    this.setElementContent($tip.find(SELECTOR_CONTENT), content)\n\n    $tip.removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n  }\n\n  // Private\n  _getContent() {\n    return this.element.getAttribute('data-content') ||\n      this.config.content\n  }\n\n  _cleanTipClass() {\n    const $tip = $(this.getTipElement())\n    const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n    if (tabClass !== null && tabClass.length > 0) {\n      $tip.removeClass(tabClass.join(''))\n    }\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      const _config = typeof config === 'object' ? config : null\n\n      if (!data && /dispose|hide/.test(config)) {\n        return\n      }\n\n      if (!data) {\n        data = new Popover(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\n/**\n * jQuery\n */\n\n$.fn[NAME] = Popover._jQueryInterface\n$.fn[NAME].Constructor = Popover\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Popover._jQueryInterface\n}\n\nexport default Popover\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\nconst SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_ITEMS = '.dropdown-item'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n  offset: 10,\n  method: 'auto',\n  target: ''\n}\n\nconst DefaultType = {\n  offset: 'number',\n  method: 'string',\n  target: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy {\n  constructor(element, config) {\n    this._element = element\n    this._scrollElement = element.tagName === 'BODY' ? window : element\n    this._config = this._getConfig(config)\n    this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS},` +\n                          `${this._config.target} ${SELECTOR_LIST_ITEMS},` +\n                          `${this._config.target} ${SELECTOR_DROPDOWN_ITEMS}`\n    this._offsets = []\n    this._targets = []\n    this._activeTarget = null\n    this._scrollHeight = 0\n\n    $(this._scrollElement).on(EVENT_SCROLL, event => this._process(event))\n\n    this.refresh()\n    this._process()\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n  refresh() {\n    const autoMethod = this._scrollElement === this._scrollElement.window ?\n      METHOD_OFFSET : METHOD_POSITION\n\n    const offsetMethod = this._config.method === 'auto' ?\n      autoMethod : this._config.method\n\n    const offsetBase = offsetMethod === METHOD_POSITION ?\n      this._getScrollTop() : 0\n\n    this._offsets = []\n    this._targets = []\n\n    this._scrollHeight = this._getScrollHeight()\n\n    const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n    targets\n      .map(element => {\n        let target\n        const targetSelector = Util.getSelectorFromElement(element)\n\n        if (targetSelector) {\n          target = document.querySelector(targetSelector)\n        }\n\n        if (target) {\n          const targetBCR = target.getBoundingClientRect()\n          if (targetBCR.width || targetBCR.height) {\n            // TODO (fat): remove sketch reliance on jQuery position/offset\n            return [\n              $(target)[offsetMethod]().top + offsetBase,\n              targetSelector\n            ]\n          }\n        }\n\n        return null\n      })\n      .filter(Boolean)\n      .sort((a, b) => a[0] - b[0])\n      .forEach(item => {\n        this._offsets.push(item[0])\n        this._targets.push(item[1])\n      })\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n    $(this._scrollElement).off(EVENT_KEY)\n\n    this._element = null\n    this._scrollElement = null\n    this._config = null\n    this._selector = null\n    this._offsets = null\n    this._targets = null\n    this._activeTarget = null\n    this._scrollHeight = null\n  }\n\n  // Private\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n      let id = $(config.target).attr('id')\n      if (!id) {\n        id = Util.getUID(NAME)\n        $(config.target).attr('id', id)\n      }\n\n      config.target = `#${id}`\n    }\n\n    Util.typeCheckConfig(NAME, config, DefaultType)\n\n    return config\n  }\n\n  _getScrollTop() {\n    return this._scrollElement === window ?\n      this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n  }\n\n  _getScrollHeight() {\n    return this._scrollElement.scrollHeight || Math.max(\n      document.body.scrollHeight,\n      document.documentElement.scrollHeight\n    )\n  }\n\n  _getOffsetHeight() {\n    return this._scrollElement === window ?\n      window.innerHeight : this._scrollElement.getBoundingClientRect().height\n  }\n\n  _process() {\n    const scrollTop = this._getScrollTop() + this._config.offset\n    const scrollHeight = this._getScrollHeight()\n    const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n    if (this._scrollHeight !== scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      const target = this._targets[this._targets.length - 1]\n\n      if (this._activeTarget !== target) {\n        this._activate(target)\n      }\n\n      return\n    }\n\n    if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n      this._activeTarget = null\n      this._clear()\n      return\n    }\n\n    for (let i = this._offsets.length; i--;) {\n      const isActiveTarget = this._activeTarget !== this._targets[i] &&\n          scrollTop >= this._offsets[i] &&\n          (typeof this._offsets[i + 1] === 'undefined' ||\n              scrollTop < this._offsets[i + 1])\n\n      if (isActiveTarget) {\n        this._activate(this._targets[i])\n      }\n    }\n  }\n\n  _activate(target) {\n    this._activeTarget = target\n\n    this._clear()\n\n    const queries = this._selector\n      .split(',')\n      .map(selector => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n    const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n    if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n      $link.closest(SELECTOR_DROPDOWN)\n        .find(SELECTOR_DROPDOWN_TOGGLE)\n        .addClass(CLASS_NAME_ACTIVE)\n      $link.addClass(CLASS_NAME_ACTIVE)\n    } else {\n      // Set triggered link as active\n      $link.addClass(CLASS_NAME_ACTIVE)\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      $link.parents(SELECTOR_NAV_LIST_GROUP)\n        .prev(`${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n        .addClass(CLASS_NAME_ACTIVE)\n      // Handle special case when .nav-link is inside .nav-item\n      $link.parents(SELECTOR_NAV_LIST_GROUP)\n        .prev(SELECTOR_NAV_ITEMS)\n        .children(SELECTOR_NAV_LINKS)\n        .addClass(CLASS_NAME_ACTIVE)\n    }\n\n    $(this._scrollElement).trigger(EVENT_ACTIVATE, {\n      relatedTarget: target\n    })\n  }\n\n  _clear() {\n    [].slice.call(document.querySelectorAll(this._selector))\n      .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n      .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      const _config = typeof config === 'object' && config\n\n      if (!data) {\n        data = new ScrollSpy(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\n/**\n * Data API implementation\n */\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n  const scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY))\n  const scrollSpysLength = scrollSpys.length\n\n  for (let i = scrollSpysLength; i--;) {\n    const $spy = $(scrollSpys[i])\n    ScrollSpy._jQueryInterface.call($spy, $spy.data())\n  }\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = ScrollSpy._jQueryInterface\n$.fn[NAME].Constructor = ScrollSpy\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return ScrollSpy._jQueryInterface\n}\n\nexport default ScrollSpy\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = '> li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active'\n\n/**\n * Class definition\n */\n\nclass Tab {\n  constructor(element) {\n    this._element = element\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  // Public\n  show() {\n    if (this._element.parentNode &&\n        this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n        $(this._element).hasClass(CLASS_NAME_ACTIVE) ||\n        $(this._element).hasClass(CLASS_NAME_DISABLED) ||\n        this._element.hasAttribute('disabled')) {\n      return\n    }\n\n    let target\n    let previous\n    const listElement = $(this._element).closest(SELECTOR_NAV_LIST_GROUP)[0]\n    const selector = Util.getSelectorFromElement(this._element)\n\n    if (listElement) {\n      const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n      previous = $.makeArray($(listElement).find(itemSelector))\n      previous = previous[previous.length - 1]\n    }\n\n    const hideEvent = $.Event(EVENT_HIDE, {\n      relatedTarget: this._element\n    })\n\n    const showEvent = $.Event(EVENT_SHOW, {\n      relatedTarget: previous\n    })\n\n    if (previous) {\n      $(previous).trigger(hideEvent)\n    }\n\n    $(this._element).trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented() ||\n        hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    if (selector) {\n      target = document.querySelector(selector)\n    }\n\n    this._activate(\n      this._element,\n      listElement\n    )\n\n    const complete = () => {\n      const hiddenEvent = $.Event(EVENT_HIDDEN, {\n        relatedTarget: this._element\n      })\n\n      const shownEvent = $.Event(EVENT_SHOWN, {\n        relatedTarget: previous\n      })\n\n      $(previous).trigger(hiddenEvent)\n      $(this._element).trigger(shownEvent)\n    }\n\n    if (target) {\n      this._activate(target, target.parentNode, complete)\n    } else {\n      complete()\n    }\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n    this._element = null\n  }\n\n  // Private\n  _activate(element, container, callback) {\n    const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n      $(container).find(SELECTOR_ACTIVE_UL) :\n      $(container).children(SELECTOR_ACTIVE)\n\n    const active = activeElements[0]\n    const isTransitioning = callback && (active && $(active).hasClass(CLASS_NAME_FADE))\n    const complete = () => this._transitionComplete(\n      element,\n      active,\n      callback\n    )\n\n    if (active && isTransitioning) {\n      const transitionDuration = Util.getTransitionDurationFromElement(active)\n\n      $(active)\n        .removeClass(CLASS_NAME_SHOW)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      complete()\n    }\n  }\n\n  _transitionComplete(element, active, callback) {\n    if (active) {\n      $(active).removeClass(CLASS_NAME_ACTIVE)\n\n      const dropdownChild = $(active.parentNode).find(\n        SELECTOR_DROPDOWN_ACTIVE_CHILD\n      )[0]\n\n      if (dropdownChild) {\n        $(dropdownChild).removeClass(CLASS_NAME_ACTIVE)\n      }\n\n      if (active.getAttribute('role') === 'tab') {\n        active.setAttribute('aria-selected', false)\n      }\n    }\n\n    $(element).addClass(CLASS_NAME_ACTIVE)\n    if (element.getAttribute('role') === 'tab') {\n      element.setAttribute('aria-selected', true)\n    }\n\n    Util.reflow(element)\n\n    if (element.classList.contains(CLASS_NAME_FADE)) {\n      element.classList.add(CLASS_NAME_SHOW)\n    }\n\n    let parent = element.parentNode\n    if (parent && parent.nodeName === 'LI') {\n      parent = parent.parentNode\n    }\n\n    if (parent && $(parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n      const dropdownElement = $(element).closest(SELECTOR_DROPDOWN)[0]\n\n      if (dropdownElement) {\n        const dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE))\n\n        $(dropdownToggleList).addClass(CLASS_NAME_ACTIVE)\n      }\n\n      element.setAttribute('aria-expanded', true)\n    }\n\n    if (callback) {\n      callback()\n    }\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $this = $(this)\n      let data = $this.data(DATA_KEY)\n\n      if (!data) {\n        data = new Tab(this)\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\n/**\n * Data API implementation\n */\n\n$(document)\n  .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n    event.preventDefault()\n    Tab._jQueryInterface.call($(this), 'show')\n  })\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Tab._jQueryInterface\n$.fn[NAME].Constructor = Tab\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Tab._jQueryInterface\n}\n\nexport default Tab\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst SELECTOR_DATA_DISMISS = '[data-dismiss=\"toast\"]'\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 500\n}\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Toast {\n  constructor(element, config) {\n    this._element = element\n    this._config = this._getConfig(config)\n    this._timeout = null\n    this._setListeners()\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n  show() {\n    const showEvent = $.Event(EVENT_SHOW)\n\n    $(this._element).trigger(showEvent)\n    if (showEvent.isDefaultPrevented()) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      this._element.classList.add(CLASS_NAME_SHOW)\n\n      $(this._element).trigger(EVENT_SHOWN)\n\n      if (this._config.autohide) {\n        this._timeout = setTimeout(() => {\n          this.hide()\n        }, this._config.delay)\n      }\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE)\n    Util.reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    if (this._config.animation) {\n      const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n      $(this._element)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      complete()\n    }\n  }\n\n  hide() {\n    if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const hideEvent = $.Event(EVENT_HIDE)\n\n    $(this._element).trigger(hideEvent)\n    if (hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    this._close()\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    $(this._element).off(EVENT_CLICK_DISMISS)\n\n    $.removeData(this._element, DATA_KEY)\n    this._element = null\n    this._config = null\n  }\n\n  // Private\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...$(this._element).data(),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    Util.typeCheckConfig(\n      NAME,\n      config,\n      this.constructor.DefaultType\n    )\n\n    return config\n  }\n\n  _setListeners() {\n    $(this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n  }\n\n  _close() {\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE)\n      $(this._element).trigger(EVENT_HIDDEN)\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    if (this._config.animation) {\n      const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n      $(this._element)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      complete()\n    }\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n      const _config = typeof config === 'object' && config\n\n      if (!data) {\n        data = new Toast(this, _config)\n        $element.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](this)\n      }\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Toast._jQueryInterface\n$.fn[NAME].Constructor = Toast\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Toast._jQueryInterface\n}\n\nexport default Toast\n", "// Expose jQuery on the global object before any other vendor code runs, so\n// Bootstrap 4, jquery-ujs, the .js.erb SJR templates, and the inline view\n// scripts that reference `$`/`jQuery` can find it. This module MUST be imported\n// first in vendor.js.\nimport jQuery from \"jquery\";\n\nwindow.jQuery = window.$ = jQuery;\n", "// Vendor bundle: runtime libraries plus the hand-written jQuery scripts, loaded\n// before every page bundle. Import order is load order \u2014 the jQuery global must\n// be established before Bootstrap, jquery-ujs, and the ported scripts run.\nimport \"./vendor/jquery_global\";\nimport \"jquery-ujs\";\n// Popper v1 is bundled transitively via Bootstrap 4's own dependency on it.\nimport \"bootstrap\";\nimport flatpickr from \"flatpickr\";\nimport LocalTime from \"local-time\";\n\nimport \"./vendor/common\";\nimport \"./vendor/tooltips\";\nimport \"./vendor/users\";\nimport \"./vendor/simulator\";\n\nwindow.flatpickr = flatpickr;\nLocalTime.start();\n", "export var HOOKS = [\n    \"onChange\",\n    \"onClose\",\n    \"onDayCreate\",\n    \"onDestroy\",\n    \"onKeyDown\",\n    \"onMonthChange\",\n    \"onOpen\",\n    \"onParseConfig\",\n    \"onReady\",\n    \"onValueUpdate\",\n    \"onYearChange\",\n    \"onPreCalendarPosition\",\n];\nexport var defaults = {\n    _disable: [],\n    allowInput: false,\n    allowInvalidPreload: false,\n    altFormat: \"F j, Y\",\n    altInput: false,\n    altInputClass: \"form-control input\",\n    animate: typeof window === \"object\" &&\n        window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n    ariaDateFormat: \"F j, Y\",\n    autoFillDefaultTime: true,\n    clickOpens: true,\n    closeOnSelect: true,\n    conjunction: \", \",\n    dateFormat: \"Y-m-d\",\n    defaultHour: 12,\n    defaultMinute: 0,\n    defaultSeconds: 0,\n    disable: [],\n    disableMobile: false,\n    enableSeconds: false,\n    enableTime: false,\n    errorHandler: function (err) {\n        return typeof console !== \"undefined\" && console.warn(err);\n    },\n    getWeek: function (givenDate) {\n        var date = new Date(givenDate.getTime());\n        date.setHours(0, 0, 0, 0);\n        date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n        var week1 = new Date(date.getFullYear(), 0, 4);\n        return (1 +\n            Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n                3 +\n                ((week1.getDay() + 6) % 7)) /\n                7));\n    },\n    hourIncrement: 1,\n    ignoredFocusElements: [],\n    inline: false,\n    locale: \"default\",\n    minuteIncrement: 5,\n    mode: \"single\",\n    monthSelectorType: \"dropdown\",\n    nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n    noCalendar: false,\n    now: new Date(),\n    onChange: [],\n    onClose: [],\n    onDayCreate: [],\n    onDestroy: [],\n    onKeyDown: [],\n    onMonthChange: [],\n    onOpen: [],\n    onParseConfig: [],\n    onReady: [],\n    onValueUpdate: [],\n    onYearChange: [],\n    onPreCalendarPosition: [],\n    plugins: [],\n    position: \"auto\",\n    positionElement: undefined,\n    prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n    shorthandCurrentMonth: false,\n    showMonths: 1,\n    static: false,\n    time_24hr: false,\n    weekNumbers: false,\n    wrap: false,\n};\n", "export var english = {\n    weekdays: {\n        shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n        longhand: [\n            \"Sunday\",\n            \"Monday\",\n            \"Tuesday\",\n            \"Wednesday\",\n            \"Thursday\",\n            \"Friday\",\n            \"Saturday\",\n        ],\n    },\n    months: {\n        shorthand: [\n            \"Jan\",\n            \"Feb\",\n            \"Mar\",\n            \"Apr\",\n            \"May\",\n            \"Jun\",\n            \"Jul\",\n            \"Aug\",\n            \"Sep\",\n            \"Oct\",\n            \"Nov\",\n            \"Dec\",\n        ],\n        longhand: [\n            \"January\",\n            \"February\",\n            \"March\",\n            \"April\",\n            \"May\",\n            \"June\",\n            \"July\",\n            \"August\",\n            \"September\",\n            \"October\",\n            \"November\",\n            \"December\",\n        ],\n    },\n    daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n    firstDayOfWeek: 0,\n    ordinal: function (nth) {\n        var s = nth % 100;\n        if (s > 3 && s < 21)\n            return \"th\";\n        switch (s % 10) {\n            case 1:\n                return \"st\";\n            case 2:\n                return \"nd\";\n            case 3:\n                return \"rd\";\n            default:\n                return \"th\";\n        }\n    },\n    rangeSeparator: \" to \",\n    weekAbbreviation: \"Wk\",\n    scrollTitle: \"Scroll to increment\",\n    toggleTitle: \"Click to toggle\",\n    amPM: [\"AM\", \"PM\"],\n    yearAriaLabel: \"Year\",\n    monthAriaLabel: \"Month\",\n    hourAriaLabel: \"Hour\",\n    minuteAriaLabel: \"Minute\",\n    time_24hr: false,\n};\nexport default english;\n", "export var pad = function (number, length) {\n    if (length === void 0) { length = 2; }\n    return (\"000\" + number).slice(length * -1);\n};\nexport var int = function (bool) { return (bool === true ? 1 : 0); };\nexport function debounce(fn, wait) {\n    var t;\n    return function () {\n        var _this = this;\n        var args = arguments;\n        clearTimeout(t);\n        t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n    };\n}\nexport var arrayify = function (obj) {\n    return obj instanceof Array ? obj : [obj];\n};\n", "export function toggleClass(elem, className, bool) {\n    if (bool === true)\n        return elem.classList.add(className);\n    elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n    var e = window.document.createElement(tag);\n    className = className || \"\";\n    content = content || \"\";\n    e.className = className;\n    if (content !== undefined)\n        e.textContent = content;\n    return e;\n}\nexport function clearNode(node) {\n    while (node.firstChild)\n        node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n    if (condition(node))\n        return node;\n    else if (node.parentNode)\n        return findParent(node.parentNode, condition);\n    return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n    var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n    if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n        numInput.type = \"number\";\n    }\n    else {\n        numInput.type = \"text\";\n        numInput.pattern = \"\\\\d*\";\n    }\n    if (opts !== undefined)\n        for (var key in opts)\n            numInput.setAttribute(key, opts[key]);\n    wrapper.appendChild(numInput);\n    wrapper.appendChild(arrowUp);\n    wrapper.appendChild(arrowDown);\n    return wrapper;\n}\nexport function getEventTarget(event) {\n    try {\n        if (typeof event.composedPath === \"function\") {\n            var path = event.composedPath();\n            return path[0];\n        }\n        return event.target;\n    }\n    catch (error) {\n        return event.target;\n    }\n}\n", "import { int, pad } from \"../utils\";\nvar doNothing = function () { return undefined; };\nexport var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\nexport var revFormat = {\n    D: doNothing,\n    F: function (dateObj, monthName, locale) {\n        dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n    },\n    G: function (dateObj, hour) {\n        dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n    },\n    H: function (dateObj, hour) {\n        dateObj.setHours(parseFloat(hour));\n    },\n    J: function (dateObj, day) {\n        dateObj.setDate(parseFloat(day));\n    },\n    K: function (dateObj, amPM, locale) {\n        dateObj.setHours((dateObj.getHours() % 12) +\n            12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n    },\n    M: function (dateObj, shortMonth, locale) {\n        dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n    },\n    S: function (dateObj, seconds) {\n        dateObj.setSeconds(parseFloat(seconds));\n    },\n    U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n    W: function (dateObj, weekNum, locale) {\n        var weekNumber = parseInt(weekNum);\n        var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n        date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n        return date;\n    },\n    Y: function (dateObj, year) {\n        dateObj.setFullYear(parseFloat(year));\n    },\n    Z: function (_, ISODate) { return new Date(ISODate); },\n    d: function (dateObj, day) {\n        dateObj.setDate(parseFloat(day));\n    },\n    h: function (dateObj, hour) {\n        dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n    },\n    i: function (dateObj, minutes) {\n        dateObj.setMinutes(parseFloat(minutes));\n    },\n    j: function (dateObj, day) {\n        dateObj.setDate(parseFloat(day));\n    },\n    l: doNothing,\n    m: function (dateObj, month) {\n        dateObj.setMonth(parseFloat(month) - 1);\n    },\n    n: function (dateObj, month) {\n        dateObj.setMonth(parseFloat(month) - 1);\n    },\n    s: function (dateObj, seconds) {\n        dateObj.setSeconds(parseFloat(seconds));\n    },\n    u: function (_, unixMillSeconds) {\n        return new Date(parseFloat(unixMillSeconds));\n    },\n    w: doNothing,\n    y: function (dateObj, year) {\n        dateObj.setFullYear(2000 + parseFloat(year));\n    },\n};\nexport var tokenRegex = {\n    D: \"\",\n    F: \"\",\n    G: \"(\\\\d\\\\d|\\\\d)\",\n    H: \"(\\\\d\\\\d|\\\\d)\",\n    J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n    K: \"\",\n    M: \"\",\n    S: \"(\\\\d\\\\d|\\\\d)\",\n    U: \"(.+)\",\n    W: \"(\\\\d\\\\d|\\\\d)\",\n    Y: \"(\\\\d{4})\",\n    Z: \"(.+)\",\n    d: \"(\\\\d\\\\d|\\\\d)\",\n    h: \"(\\\\d\\\\d|\\\\d)\",\n    i: \"(\\\\d\\\\d|\\\\d)\",\n    j: \"(\\\\d\\\\d|\\\\d)\",\n    l: \"\",\n    m: \"(\\\\d\\\\d|\\\\d)\",\n    n: \"(\\\\d\\\\d|\\\\d)\",\n    s: \"(\\\\d\\\\d|\\\\d)\",\n    u: \"(.+)\",\n    w: \"(\\\\d\\\\d|\\\\d)\",\n    y: \"(\\\\d{2})\",\n};\nexport var formats = {\n    Z: function (date) { return date.toISOString(); },\n    D: function (date, locale, options) {\n        return locale.weekdays.shorthand[formats.w(date, locale, options)];\n    },\n    F: function (date, locale, options) {\n        return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n    },\n    G: function (date, locale, options) {\n        return pad(formats.h(date, locale, options));\n    },\n    H: function (date) { return pad(date.getHours()); },\n    J: function (date, locale) {\n        return locale.ordinal !== undefined\n            ? date.getDate() + locale.ordinal(date.getDate())\n            : date.getDate();\n    },\n    K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n    M: function (date, locale) {\n        return monthToStr(date.getMonth(), true, locale);\n    },\n    S: function (date) { return pad(date.getSeconds()); },\n    U: function (date) { return date.getTime() / 1000; },\n    W: function (date, _, options) {\n        return options.getWeek(date);\n    },\n    Y: function (date) { return pad(date.getFullYear(), 4); },\n    d: function (date) { return pad(date.getDate()); },\n    h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n    i: function (date) { return pad(date.getMinutes()); },\n    j: function (date) { return date.getDate(); },\n    l: function (date, locale) {\n        return locale.weekdays.longhand[date.getDay()];\n    },\n    m: function (date) { return pad(date.getMonth() + 1); },\n    n: function (date) { return date.getMonth() + 1; },\n    s: function (date) { return date.getSeconds(); },\n    u: function (date) { return date.getTime(); },\n    w: function (date) { return date.getDay(); },\n    y: function (date) { return String(date.getFullYear()).substring(2); },\n};\n", "import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport var createDateFormatter = function (_a) {\n    var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n    return function (dateObj, frmt, overrideLocale) {\n        var locale = overrideLocale || l10n;\n        if (config.formatDate !== undefined && !isMobile) {\n            return config.formatDate(dateObj, frmt, locale);\n        }\n        return frmt\n            .split(\"\")\n            .map(function (c, i, arr) {\n            return formats[c] && arr[i - 1] !== \"\\\\\"\n                ? formats[c](dateObj, locale, config)\n                : c !== \"\\\\\"\n                    ? c\n                    : \"\";\n        })\n            .join(\"\");\n    };\n};\nexport var createDateParser = function (_a) {\n    var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n    return function (date, givenFormat, timeless, customLocale) {\n        if (date !== 0 && !date)\n            return undefined;\n        var locale = customLocale || l10n;\n        var parsedDate;\n        var dateOrig = date;\n        if (date instanceof Date)\n            parsedDate = new Date(date.getTime());\n        else if (typeof date !== \"string\" &&\n            date.toFixed !== undefined)\n            parsedDate = new Date(date);\n        else if (typeof date === \"string\") {\n            var format = givenFormat || (config || defaults).dateFormat;\n            var datestr = String(date).trim();\n            if (datestr === \"today\") {\n                parsedDate = new Date();\n                timeless = true;\n            }\n            else if (config && config.parseDate) {\n                parsedDate = config.parseDate(date, format);\n            }\n            else if (/Z$/.test(datestr) ||\n                /GMT$/.test(datestr)) {\n                parsedDate = new Date(date);\n            }\n            else {\n                var matched = void 0, ops = [];\n                for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n                    var token = format[i];\n                    var isBackSlash = token === \"\\\\\";\n                    var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n                    if (tokenRegex[token] && !escaped) {\n                        regexStr += tokenRegex[token];\n                        var match = new RegExp(regexStr).exec(date);\n                        if (match && (matched = true)) {\n                            ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n                                fn: revFormat[token],\n                                val: match[++matchIndex],\n                            });\n                        }\n                    }\n                    else if (!isBackSlash)\n                        regexStr += \".\";\n                }\n                parsedDate =\n                    !config || !config.noCalendar\n                        ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n                        : new Date(new Date().setHours(0, 0, 0, 0));\n                ops.forEach(function (_a) {\n                    var fn = _a.fn, val = _a.val;\n                    return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n                });\n                parsedDate = matched ? parsedDate : undefined;\n            }\n        }\n        if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n            config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n            return undefined;\n        }\n        if (timeless === true)\n            parsedDate.setHours(0, 0, 0, 0);\n        return parsedDate;\n    };\n};\nexport function compareDates(date1, date2, timeless) {\n    if (timeless === void 0) { timeless = true; }\n    if (timeless !== false) {\n        return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n            new Date(date2.getTime()).setHours(0, 0, 0, 0));\n    }\n    return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n    return (3600 * (date1.getHours() - date2.getHours()) +\n        60 * (date1.getMinutes() - date2.getMinutes()) +\n        date1.getSeconds() -\n        date2.getSeconds());\n}\nexport var isBetween = function (ts, ts1, ts2) {\n    return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n    return hours * 3600 + minutes * 60 + seconds;\n};\nexport var parseSeconds = function (secondsSinceMidnight) {\n    var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n    return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexport var duration = {\n    DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n    var hours = config.defaultHour;\n    var minutes = config.defaultMinute;\n    var seconds = config.defaultSeconds;\n    if (config.minDate !== undefined) {\n        var minHour = config.minDate.getHours();\n        var minMinutes = config.minDate.getMinutes();\n        var minSeconds = config.minDate.getSeconds();\n        if (hours < minHour) {\n            hours = minHour;\n        }\n        if (hours === minHour && minutes < minMinutes) {\n            minutes = minMinutes;\n        }\n        if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n            seconds = config.minDate.getSeconds();\n    }\n    if (config.maxDate !== undefined) {\n        var maxHr = config.maxDate.getHours();\n        var maxMinutes = config.maxDate.getMinutes();\n        hours = Math.min(hours, maxHr);\n        if (hours === maxHr)\n            minutes = Math.min(maxMinutes, minutes);\n        if (hours === maxHr && minutes === maxMinutes)\n            seconds = config.maxDate.getSeconds();\n    }\n    return { hours: hours, minutes: minutes, seconds: seconds };\n}\n", "\"use strict\";\nif (typeof Object.assign !== \"function\") {\n    Object.assign = function (target) {\n        var args = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            args[_i - 1] = arguments[_i];\n        }\n        if (!target) {\n            throw TypeError(\"Cannot convert undefined or null to object\");\n        }\n        var _loop_1 = function (source) {\n            if (source) {\n                Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n            }\n        };\n        for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n            var source = args_1[_a];\n            _loop_1(source);\n        }\n        return target;\n    };\n}\n", "var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n            r[k] = a[j];\n    return r;\n};\nimport { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, calculateSecondsSinceMidnight, parseSeconds, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nvar DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n    var self = {\n        config: __assign(__assign({}, defaultOptions), flatpickr.defaultConfig),\n        l10n: English,\n    };\n    self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n    self._handlers = [];\n    self.pluginElements = [];\n    self.loadedPlugins = [];\n    self._bind = bind;\n    self._setHoursFromDate = setHoursFromDate;\n    self._positionCalendar = positionCalendar;\n    self.changeMonth = changeMonth;\n    self.changeYear = changeYear;\n    self.clear = clear;\n    self.close = close;\n    self.onMouseOver = onMouseOver;\n    self._createElement = createElement;\n    self.createDay = createDay;\n    self.destroy = destroy;\n    self.isEnabled = isEnabled;\n    self.jumpToDate = jumpToDate;\n    self.updateValue = updateValue;\n    self.open = open;\n    self.redraw = redraw;\n    self.set = set;\n    self.setDate = setDate;\n    self.toggle = toggle;\n    function setupHelperFunctions() {\n        self.utils = {\n            getDaysInMonth: function (month, yr) {\n                if (month === void 0) { month = self.currentMonth; }\n                if (yr === void 0) { yr = self.currentYear; }\n                if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n                    return 29;\n                return self.l10n.daysInMonth[month];\n            },\n        };\n    }\n    function init() {\n        self.element = self.input = element;\n        self.isOpen = false;\n        parseConfig();\n        setupLocale();\n        setupInputs();\n        setupDates();\n        setupHelperFunctions();\n        if (!self.isMobile)\n            build();\n        bindEvents();\n        if (self.selectedDates.length || self.config.noCalendar) {\n            if (self.config.enableTime) {\n                setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n            }\n            updateValue(false);\n        }\n        setCalendarWidth();\n        var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n        if (!self.isMobile && isSafari) {\n            positionCalendar();\n        }\n        triggerEvent(\"onReady\");\n    }\n    function getClosestActiveElement() {\n        var _a;\n        return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n            .activeElement || document.activeElement);\n    }\n    function bindToInstance(fn) {\n        return fn.bind(self);\n    }\n    function setCalendarWidth() {\n        var config = self.config;\n        if (config.weekNumbers === false && config.showMonths === 1) {\n            return;\n        }\n        else if (config.noCalendar !== true) {\n            window.requestAnimationFrame(function () {\n                if (self.calendarContainer !== undefined) {\n                    self.calendarContainer.style.visibility = \"hidden\";\n                    self.calendarContainer.style.display = \"block\";\n                }\n                if (self.daysContainer !== undefined) {\n                    var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n                    self.daysContainer.style.width = daysWidth + \"px\";\n                    self.calendarContainer.style.width =\n                        daysWidth +\n                            (self.weekWrapper !== undefined\n                                ? self.weekWrapper.offsetWidth\n                                : 0) +\n                            \"px\";\n                    self.calendarContainer.style.removeProperty(\"visibility\");\n                    self.calendarContainer.style.removeProperty(\"display\");\n                }\n            });\n        }\n    }\n    function updateTime(e) {\n        if (self.selectedDates.length === 0) {\n            var defaultDate = self.config.minDate === undefined ||\n                compareDates(new Date(), self.config.minDate) >= 0\n                ? new Date()\n                : new Date(self.config.minDate.getTime());\n            var defaults = getDefaultHours(self.config);\n            defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n            self.selectedDates = [defaultDate];\n            self.latestSelectedDateObj = defaultDate;\n        }\n        if (e !== undefined && e.type !== \"blur\") {\n            timeWrapper(e);\n        }\n        var prevValue = self._input.value;\n        setHoursFromInputs();\n        updateValue();\n        if (self._input.value !== prevValue) {\n            self._debouncedChange();\n        }\n    }\n    function ampm2military(hour, amPM) {\n        return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n    }\n    function military2ampm(hour) {\n        switch (hour % 24) {\n            case 0:\n            case 12:\n                return 12;\n            default:\n                return hour % 12;\n        }\n    }\n    function setHoursFromInputs() {\n        if (self.hourElement === undefined || self.minuteElement === undefined)\n            return;\n        var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n            ? (parseInt(self.secondElement.value, 10) || 0) % 60\n            : 0;\n        if (self.amPM !== undefined) {\n            hours = ampm2military(hours, self.amPM.textContent);\n        }\n        var limitMinHours = self.config.minTime !== undefined ||\n            (self.config.minDate &&\n                self.minDateHasTime &&\n                self.latestSelectedDateObj &&\n                compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n                    0);\n        var limitMaxHours = self.config.maxTime !== undefined ||\n            (self.config.maxDate &&\n                self.maxDateHasTime &&\n                self.latestSelectedDateObj &&\n                compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n                    0);\n        if (self.config.maxTime !== undefined &&\n            self.config.minTime !== undefined &&\n            self.config.minTime > self.config.maxTime) {\n            var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n            var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n            var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n            if (currentTime > maxBound && currentTime < minBound) {\n                var result = parseSeconds(minBound);\n                hours = result[0];\n                minutes = result[1];\n                seconds = result[2];\n            }\n        }\n        else {\n            if (limitMaxHours) {\n                var maxTime = self.config.maxTime !== undefined\n                    ? self.config.maxTime\n                    : self.config.maxDate;\n                hours = Math.min(hours, maxTime.getHours());\n                if (hours === maxTime.getHours())\n                    minutes = Math.min(minutes, maxTime.getMinutes());\n                if (minutes === maxTime.getMinutes())\n                    seconds = Math.min(seconds, maxTime.getSeconds());\n            }\n            if (limitMinHours) {\n                var minTime = self.config.minTime !== undefined\n                    ? self.config.minTime\n                    : self.config.minDate;\n                hours = Math.max(hours, minTime.getHours());\n                if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n                    minutes = minTime.getMinutes();\n                if (minutes === minTime.getMinutes())\n                    seconds = Math.max(seconds, minTime.getSeconds());\n            }\n        }\n        setHours(hours, minutes, seconds);\n    }\n    function setHoursFromDate(dateObj) {\n        var date = dateObj || self.latestSelectedDateObj;\n        if (date && date instanceof Date) {\n            setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n        }\n    }\n    function setHours(hours, minutes, seconds) {\n        if (self.latestSelectedDateObj !== undefined) {\n            self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n        }\n        if (!self.hourElement || !self.minuteElement || self.isMobile)\n            return;\n        self.hourElement.value = pad(!self.config.time_24hr\n            ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n            : hours);\n        self.minuteElement.value = pad(minutes);\n        if (self.amPM !== undefined)\n            self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n        if (self.secondElement !== undefined)\n            self.secondElement.value = pad(seconds);\n    }\n    function onYearInput(event) {\n        var eventTarget = getEventTarget(event);\n        var year = parseInt(eventTarget.value) + (event.delta || 0);\n        if (year / 1000 > 1 ||\n            (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n            changeYear(year);\n        }\n    }\n    function bind(element, event, handler, options) {\n        if (event instanceof Array)\n            return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n        if (element instanceof Array)\n            return element.forEach(function (el) { return bind(el, event, handler, options); });\n        element.addEventListener(event, handler, options);\n        self._handlers.push({\n            remove: function () { return element.removeEventListener(event, handler, options); },\n        });\n    }\n    function triggerChange() {\n        triggerEvent(\"onChange\");\n    }\n    function bindEvents() {\n        if (self.config.wrap) {\n            [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n                Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n                    return bind(el, \"click\", self[evt]);\n                });\n            });\n        }\n        if (self.isMobile) {\n            setupMobile();\n            return;\n        }\n        var debouncedResize = debounce(onResize, 50);\n        self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n        if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n            bind(self.daysContainer, \"mouseover\", function (e) {\n                if (self.config.mode === \"range\")\n                    onMouseOver(getEventTarget(e));\n            });\n        bind(self._input, \"keydown\", onKeyDown);\n        if (self.calendarContainer !== undefined) {\n            bind(self.calendarContainer, \"keydown\", onKeyDown);\n        }\n        if (!self.config.inline && !self.config.static)\n            bind(window, \"resize\", debouncedResize);\n        if (window.ontouchstart !== undefined)\n            bind(window.document, \"touchstart\", documentClick);\n        else\n            bind(window.document, \"mousedown\", documentClick);\n        bind(window.document, \"focus\", documentClick, { capture: true });\n        if (self.config.clickOpens === true) {\n            bind(self._input, \"focus\", self.open);\n            bind(self._input, \"click\", self.open);\n        }\n        if (self.daysContainer !== undefined) {\n            bind(self.monthNav, \"click\", onMonthNavClick);\n            bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n            bind(self.daysContainer, \"click\", selectDate);\n        }\n        if (self.timeContainer !== undefined &&\n            self.minuteElement !== undefined &&\n            self.hourElement !== undefined) {\n            var selText = function (e) {\n                return getEventTarget(e).select();\n            };\n            bind(self.timeContainer, [\"increment\"], updateTime);\n            bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n            bind(self.timeContainer, \"click\", timeIncrement);\n            bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n            if (self.secondElement !== undefined)\n                bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n            if (self.amPM !== undefined) {\n                bind(self.amPM, \"click\", function (e) {\n                    updateTime(e);\n                });\n            }\n        }\n        if (self.config.allowInput) {\n            bind(self._input, \"blur\", onBlur);\n        }\n    }\n    function jumpToDate(jumpDate, triggerChange) {\n        var jumpTo = jumpDate !== undefined\n            ? self.parseDate(jumpDate)\n            : self.latestSelectedDateObj ||\n                (self.config.minDate && self.config.minDate > self.now\n                    ? self.config.minDate\n                    : self.config.maxDate && self.config.maxDate < self.now\n                        ? self.config.maxDate\n                        : self.now);\n        var oldYear = self.currentYear;\n        var oldMonth = self.currentMonth;\n        try {\n            if (jumpTo !== undefined) {\n                self.currentYear = jumpTo.getFullYear();\n                self.currentMonth = jumpTo.getMonth();\n            }\n        }\n        catch (e) {\n            e.message = \"Invalid date supplied: \" + jumpTo;\n            self.config.errorHandler(e);\n        }\n        if (triggerChange && self.currentYear !== oldYear) {\n            triggerEvent(\"onYearChange\");\n            buildMonthSwitch();\n        }\n        if (triggerChange &&\n            (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n            triggerEvent(\"onMonthChange\");\n        }\n        self.redraw();\n    }\n    function timeIncrement(e) {\n        var eventTarget = getEventTarget(e);\n        if (~eventTarget.className.indexOf(\"arrow\"))\n            incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n    }\n    function incrementNumInput(e, delta, inputElem) {\n        var target = e && getEventTarget(e);\n        var input = inputElem ||\n            (target && target.parentNode && target.parentNode.firstChild);\n        var event = createEvent(\"increment\");\n        event.delta = delta;\n        input && input.dispatchEvent(event);\n    }\n    function build() {\n        var fragment = window.document.createDocumentFragment();\n        self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n        self.calendarContainer.tabIndex = -1;\n        if (!self.config.noCalendar) {\n            fragment.appendChild(buildMonthNav());\n            self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n            if (self.config.weekNumbers) {\n                var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n                self.innerContainer.appendChild(weekWrapper);\n                self.weekNumbers = weekNumbers;\n                self.weekWrapper = weekWrapper;\n            }\n            self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n            self.rContainer.appendChild(buildWeekdays());\n            if (!self.daysContainer) {\n                self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n                self.daysContainer.tabIndex = -1;\n            }\n            buildDays();\n            self.rContainer.appendChild(self.daysContainer);\n            self.innerContainer.appendChild(self.rContainer);\n            fragment.appendChild(self.innerContainer);\n        }\n        if (self.config.enableTime) {\n            fragment.appendChild(buildTime());\n        }\n        toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n        toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n        toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n        self.calendarContainer.appendChild(fragment);\n        var customAppend = self.config.appendTo !== undefined &&\n            self.config.appendTo.nodeType !== undefined;\n        if (self.config.inline || self.config.static) {\n            self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n            if (self.config.inline) {\n                if (!customAppend && self.element.parentNode)\n                    self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n                else if (self.config.appendTo !== undefined)\n                    self.config.appendTo.appendChild(self.calendarContainer);\n            }\n            if (self.config.static) {\n                var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n                if (self.element.parentNode)\n                    self.element.parentNode.insertBefore(wrapper, self.element);\n                wrapper.appendChild(self.element);\n                if (self.altInput)\n                    wrapper.appendChild(self.altInput);\n                wrapper.appendChild(self.calendarContainer);\n            }\n        }\n        if (!self.config.static && !self.config.inline)\n            (self.config.appendTo !== undefined\n                ? self.config.appendTo\n                : window.document.body).appendChild(self.calendarContainer);\n    }\n    function createDay(className, date, _dayNumber, i) {\n        var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", className, date.getDate().toString());\n        dayElement.dateObj = date;\n        dayElement.$i = i;\n        dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n        if (className.indexOf(\"hidden\") === -1 &&\n            compareDates(date, self.now) === 0) {\n            self.todayDateElem = dayElement;\n            dayElement.classList.add(\"today\");\n            dayElement.setAttribute(\"aria-current\", \"date\");\n        }\n        if (dateIsEnabled) {\n            dayElement.tabIndex = -1;\n            if (isDateSelected(date)) {\n                dayElement.classList.add(\"selected\");\n                self.selectedDateElem = dayElement;\n                if (self.config.mode === \"range\") {\n                    toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n                        compareDates(date, self.selectedDates[0], true) === 0);\n                    toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n                        compareDates(date, self.selectedDates[1], true) === 0);\n                    if (className === \"nextMonthDay\")\n                        dayElement.classList.add(\"inRange\");\n                }\n            }\n        }\n        else {\n            dayElement.classList.add(\"flatpickr-disabled\");\n        }\n        if (self.config.mode === \"range\") {\n            if (isDateInRange(date) && !isDateSelected(date))\n                dayElement.classList.add(\"inRange\");\n        }\n        if (self.weekNumbers &&\n            self.config.showMonths === 1 &&\n            className !== \"prevMonthDay\" &&\n            i % 7 === 6) {\n            self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n        }\n        triggerEvent(\"onDayCreate\", dayElement);\n        return dayElement;\n    }\n    function focusOnDayElem(targetNode) {\n        targetNode.focus();\n        if (self.config.mode === \"range\")\n            onMouseOver(targetNode);\n    }\n    function getFirstAvailableDay(delta) {\n        var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n        var endMonth = delta > 0 ? self.config.showMonths : -1;\n        for (var m = startMonth; m != endMonth; m += delta) {\n            var month = self.daysContainer.children[m];\n            var startIndex = delta > 0 ? 0 : month.children.length - 1;\n            var endIndex = delta > 0 ? month.children.length : -1;\n            for (var i = startIndex; i != endIndex; i += delta) {\n                var c = month.children[i];\n                if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n                    return c;\n            }\n        }\n        return undefined;\n    }\n    function getNextAvailableDay(current, delta) {\n        var givenMonth = current.className.indexOf(\"Month\") === -1\n            ? current.dateObj.getMonth()\n            : self.currentMonth;\n        var endMonth = delta > 0 ? self.config.showMonths : -1;\n        var loopDelta = delta > 0 ? 1 : -1;\n        for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n            var month = self.daysContainer.children[m];\n            var startIndex = givenMonth - self.currentMonth === m\n                ? current.$i + delta\n                : delta < 0\n                    ? month.children.length - 1\n                    : 0;\n            var numMonthDays = month.children.length;\n            for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n                var c = month.children[i];\n                if (c.className.indexOf(\"hidden\") === -1 &&\n                    isEnabled(c.dateObj) &&\n                    Math.abs(current.$i - i) >= Math.abs(delta))\n                    return focusOnDayElem(c);\n            }\n        }\n        self.changeMonth(loopDelta);\n        focusOnDay(getFirstAvailableDay(loopDelta), 0);\n        return undefined;\n    }\n    function focusOnDay(current, offset) {\n        var activeElement = getClosestActiveElement();\n        var dayFocused = isInView(activeElement || document.body);\n        var startElem = current !== undefined\n            ? current\n            : dayFocused\n                ? activeElement\n                : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n                    ? self.selectedDateElem\n                    : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n                        ? self.todayDateElem\n                        : getFirstAvailableDay(offset > 0 ? 1 : -1);\n        if (startElem === undefined) {\n            self._input.focus();\n        }\n        else if (!dayFocused) {\n            focusOnDayElem(startElem);\n        }\n        else {\n            getNextAvailableDay(startElem, offset);\n        }\n    }\n    function buildMonthDays(year, month) {\n        var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n        var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n        var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n        var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n        for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n            days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n        }\n        for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n            days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n        }\n        for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n            (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n            days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n        }\n        var dayContainer = createElement(\"div\", \"dayContainer\");\n        dayContainer.appendChild(days);\n        return dayContainer;\n    }\n    function buildDays() {\n        if (self.daysContainer === undefined) {\n            return;\n        }\n        clearNode(self.daysContainer);\n        if (self.weekNumbers)\n            clearNode(self.weekNumbers);\n        var frag = document.createDocumentFragment();\n        for (var i = 0; i < self.config.showMonths; i++) {\n            var d = new Date(self.currentYear, self.currentMonth, 1);\n            d.setMonth(self.currentMonth + i);\n            frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n        }\n        self.daysContainer.appendChild(frag);\n        self.days = self.daysContainer.firstChild;\n        if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n            onMouseOver();\n        }\n    }\n    function buildMonthSwitch() {\n        if (self.config.showMonths > 1 ||\n            self.config.monthSelectorType !== \"dropdown\")\n            return;\n        var shouldBuildMonth = function (month) {\n            if (self.config.minDate !== undefined &&\n                self.currentYear === self.config.minDate.getFullYear() &&\n                month < self.config.minDate.getMonth()) {\n                return false;\n            }\n            return !(self.config.maxDate !== undefined &&\n                self.currentYear === self.config.maxDate.getFullYear() &&\n                month > self.config.maxDate.getMonth());\n        };\n        self.monthsDropdownContainer.tabIndex = -1;\n        self.monthsDropdownContainer.innerHTML = \"\";\n        for (var i = 0; i < 12; i++) {\n            if (!shouldBuildMonth(i))\n                continue;\n            var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n            month.value = new Date(self.currentYear, i).getMonth().toString();\n            month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n            month.tabIndex = -1;\n            if (self.currentMonth === i) {\n                month.selected = true;\n            }\n            self.monthsDropdownContainer.appendChild(month);\n        }\n    }\n    function buildMonth() {\n        var container = createElement(\"div\", \"flatpickr-month\");\n        var monthNavFragment = window.document.createDocumentFragment();\n        var monthElement;\n        if (self.config.showMonths > 1 ||\n            self.config.monthSelectorType === \"static\") {\n            monthElement = createElement(\"span\", \"cur-month\");\n        }\n        else {\n            self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n            self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n            bind(self.monthsDropdownContainer, \"change\", function (e) {\n                var target = getEventTarget(e);\n                var selectedMonth = parseInt(target.value, 10);\n                self.changeMonth(selectedMonth - self.currentMonth);\n                triggerEvent(\"onMonthChange\");\n            });\n            buildMonthSwitch();\n            monthElement = self.monthsDropdownContainer;\n        }\n        var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n        var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n        yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n        if (self.config.minDate) {\n            yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n        }\n        if (self.config.maxDate) {\n            yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n            yearElement.disabled =\n                !!self.config.minDate &&\n                    self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n        }\n        var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n        currentMonth.appendChild(monthElement);\n        currentMonth.appendChild(yearInput);\n        monthNavFragment.appendChild(currentMonth);\n        container.appendChild(monthNavFragment);\n        return {\n            container: container,\n            yearElement: yearElement,\n            monthElement: monthElement,\n        };\n    }\n    function buildMonths() {\n        clearNode(self.monthNav);\n        self.monthNav.appendChild(self.prevMonthNav);\n        if (self.config.showMonths) {\n            self.yearElements = [];\n            self.monthElements = [];\n        }\n        for (var m = self.config.showMonths; m--;) {\n            var month = buildMonth();\n            self.yearElements.push(month.yearElement);\n            self.monthElements.push(month.monthElement);\n            self.monthNav.appendChild(month.container);\n        }\n        self.monthNav.appendChild(self.nextMonthNav);\n    }\n    function buildMonthNav() {\n        self.monthNav = createElement(\"div\", \"flatpickr-months\");\n        self.yearElements = [];\n        self.monthElements = [];\n        self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n        self.prevMonthNav.innerHTML = self.config.prevArrow;\n        self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n        self.nextMonthNav.innerHTML = self.config.nextArrow;\n        buildMonths();\n        Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n            get: function () { return self.__hidePrevMonthArrow; },\n            set: function (bool) {\n                if (self.__hidePrevMonthArrow !== bool) {\n                    toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n                    self.__hidePrevMonthArrow = bool;\n                }\n            },\n        });\n        Object.defineProperty(self, \"_hideNextMonthArrow\", {\n            get: function () { return self.__hideNextMonthArrow; },\n            set: function (bool) {\n                if (self.__hideNextMonthArrow !== bool) {\n                    toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n                    self.__hideNextMonthArrow = bool;\n                }\n            },\n        });\n        self.currentYearElement = self.yearElements[0];\n        updateNavigationCurrentMonth();\n        return self.monthNav;\n    }\n    function buildTime() {\n        self.calendarContainer.classList.add(\"hasTime\");\n        if (self.config.noCalendar)\n            self.calendarContainer.classList.add(\"noCalendar\");\n        var defaults = getDefaultHours(self.config);\n        self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n        self.timeContainer.tabIndex = -1;\n        var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n        var hourInput = createNumberInput(\"flatpickr-hour\", {\n            \"aria-label\": self.l10n.hourAriaLabel,\n        });\n        self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n        var minuteInput = createNumberInput(\"flatpickr-minute\", {\n            \"aria-label\": self.l10n.minuteAriaLabel,\n        });\n        self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n        self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n        self.hourElement.value = pad(self.latestSelectedDateObj\n            ? self.latestSelectedDateObj.getHours()\n            : self.config.time_24hr\n                ? defaults.hours\n                : military2ampm(defaults.hours));\n        self.minuteElement.value = pad(self.latestSelectedDateObj\n            ? self.latestSelectedDateObj.getMinutes()\n            : defaults.minutes);\n        self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n        self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n        self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n        self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n        self.hourElement.setAttribute(\"maxlength\", \"2\");\n        self.minuteElement.setAttribute(\"min\", \"0\");\n        self.minuteElement.setAttribute(\"max\", \"59\");\n        self.minuteElement.setAttribute(\"maxlength\", \"2\");\n        self.timeContainer.appendChild(hourInput);\n        self.timeContainer.appendChild(separator);\n        self.timeContainer.appendChild(minuteInput);\n        if (self.config.time_24hr)\n            self.timeContainer.classList.add(\"time24hr\");\n        if (self.config.enableSeconds) {\n            self.timeContainer.classList.add(\"hasSeconds\");\n            var secondInput = createNumberInput(\"flatpickr-second\");\n            self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n            self.secondElement.value = pad(self.latestSelectedDateObj\n                ? self.latestSelectedDateObj.getSeconds()\n                : defaults.seconds);\n            self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n            self.secondElement.setAttribute(\"min\", \"0\");\n            self.secondElement.setAttribute(\"max\", \"59\");\n            self.secondElement.setAttribute(\"maxlength\", \"2\");\n            self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n            self.timeContainer.appendChild(secondInput);\n        }\n        if (!self.config.time_24hr) {\n            self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n                ? self.hourElement.value\n                : self.config.defaultHour) > 11)]);\n            self.amPM.title = self.l10n.toggleTitle;\n            self.amPM.tabIndex = -1;\n            self.timeContainer.appendChild(self.amPM);\n        }\n        return self.timeContainer;\n    }\n    function buildWeekdays() {\n        if (!self.weekdayContainer)\n            self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n        else\n            clearNode(self.weekdayContainer);\n        for (var i = self.config.showMonths; i--;) {\n            var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n            self.weekdayContainer.appendChild(container);\n        }\n        updateWeekdays();\n        return self.weekdayContainer;\n    }\n    function updateWeekdays() {\n        if (!self.weekdayContainer) {\n            return;\n        }\n        var firstDayOfWeek = self.l10n.firstDayOfWeek;\n        var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n        if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n            weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n        }\n        for (var i = self.config.showMonths; i--;) {\n            self.weekdayContainer.children[i].innerHTML = \"\\n      <span class='flatpickr-weekday'>\\n        \" + weekdays.join(\"</span><span class='flatpickr-weekday'>\") + \"\\n      </span>\\n      \";\n        }\n    }\n    function buildWeeks() {\n        self.calendarContainer.classList.add(\"hasWeeks\");\n        var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n        weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n        var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n        weekWrapper.appendChild(weekNumbers);\n        return {\n            weekWrapper: weekWrapper,\n            weekNumbers: weekNumbers,\n        };\n    }\n    function changeMonth(value, isOffset) {\n        if (isOffset === void 0) { isOffset = true; }\n        var delta = isOffset ? value : value - self.currentMonth;\n        if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n            (delta > 0 && self._hideNextMonthArrow === true))\n            return;\n        self.currentMonth += delta;\n        if (self.currentMonth < 0 || self.currentMonth > 11) {\n            self.currentYear += self.currentMonth > 11 ? 1 : -1;\n            self.currentMonth = (self.currentMonth + 12) % 12;\n            triggerEvent(\"onYearChange\");\n            buildMonthSwitch();\n        }\n        buildDays();\n        triggerEvent(\"onMonthChange\");\n        updateNavigationCurrentMonth();\n    }\n    function clear(triggerChangeEvent, toInitial) {\n        if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n        if (toInitial === void 0) { toInitial = true; }\n        self.input.value = \"\";\n        if (self.altInput !== undefined)\n            self.altInput.value = \"\";\n        if (self.mobileInput !== undefined)\n            self.mobileInput.value = \"\";\n        self.selectedDates = [];\n        self.latestSelectedDateObj = undefined;\n        if (toInitial === true) {\n            self.currentYear = self._initialDate.getFullYear();\n            self.currentMonth = self._initialDate.getMonth();\n        }\n        if (self.config.enableTime === true) {\n            var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n            setHours(hours, minutes, seconds);\n        }\n        self.redraw();\n        if (triggerChangeEvent)\n            triggerEvent(\"onChange\");\n    }\n    function close() {\n        self.isOpen = false;\n        if (!self.isMobile) {\n            if (self.calendarContainer !== undefined) {\n                self.calendarContainer.classList.remove(\"open\");\n            }\n            if (self._input !== undefined) {\n                self._input.classList.remove(\"active\");\n            }\n        }\n        triggerEvent(\"onClose\");\n    }\n    function destroy() {\n        if (self.config !== undefined)\n            triggerEvent(\"onDestroy\");\n        for (var i = self._handlers.length; i--;) {\n            self._handlers[i].remove();\n        }\n        self._handlers = [];\n        if (self.mobileInput) {\n            if (self.mobileInput.parentNode)\n                self.mobileInput.parentNode.removeChild(self.mobileInput);\n            self.mobileInput = undefined;\n        }\n        else if (self.calendarContainer && self.calendarContainer.parentNode) {\n            if (self.config.static && self.calendarContainer.parentNode) {\n                var wrapper = self.calendarContainer.parentNode;\n                wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n                if (wrapper.parentNode) {\n                    while (wrapper.firstChild)\n                        wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n                    wrapper.parentNode.removeChild(wrapper);\n                }\n            }\n            else\n                self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n        }\n        if (self.altInput) {\n            self.input.type = \"text\";\n            if (self.altInput.parentNode)\n                self.altInput.parentNode.removeChild(self.altInput);\n            delete self.altInput;\n        }\n        if (self.input) {\n            self.input.type = self.input._type;\n            self.input.classList.remove(\"flatpickr-input\");\n            self.input.removeAttribute(\"readonly\");\n        }\n        [\n            \"_showTimeInput\",\n            \"latestSelectedDateObj\",\n            \"_hideNextMonthArrow\",\n            \"_hidePrevMonthArrow\",\n            \"__hideNextMonthArrow\",\n            \"__hidePrevMonthArrow\",\n            \"isMobile\",\n            \"isOpen\",\n            \"selectedDateElem\",\n            \"minDateHasTime\",\n            \"maxDateHasTime\",\n            \"days\",\n            \"daysContainer\",\n            \"_input\",\n            \"_positionElement\",\n            \"innerContainer\",\n            \"rContainer\",\n            \"monthNav\",\n            \"todayDateElem\",\n            \"calendarContainer\",\n            \"weekdayContainer\",\n            \"prevMonthNav\",\n            \"nextMonthNav\",\n            \"monthsDropdownContainer\",\n            \"currentMonthElement\",\n            \"currentYearElement\",\n            \"navigationCurrentMonth\",\n            \"selectedDateElem\",\n            \"config\",\n        ].forEach(function (k) {\n            try {\n                delete self[k];\n            }\n            catch (_) { }\n        });\n    }\n    function isCalendarElem(elem) {\n        return self.calendarContainer.contains(elem);\n    }\n    function documentClick(e) {\n        if (self.isOpen && !self.config.inline) {\n            var eventTarget_1 = getEventTarget(e);\n            var isCalendarElement = isCalendarElem(eventTarget_1);\n            var isInput = eventTarget_1 === self.input ||\n                eventTarget_1 === self.altInput ||\n                self.element.contains(eventTarget_1) ||\n                (e.path &&\n                    e.path.indexOf &&\n                    (~e.path.indexOf(self.input) ||\n                        ~e.path.indexOf(self.altInput)));\n            var lostFocus = !isInput &&\n                !isCalendarElement &&\n                !isCalendarElem(e.relatedTarget);\n            var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n                return elem.contains(eventTarget_1);\n            });\n            if (lostFocus && isIgnored) {\n                if (self.config.allowInput) {\n                    self.setDate(self._input.value, false, self.config.altInput\n                        ? self.config.altFormat\n                        : self.config.dateFormat);\n                }\n                if (self.timeContainer !== undefined &&\n                    self.minuteElement !== undefined &&\n                    self.hourElement !== undefined &&\n                    self.input.value !== \"\" &&\n                    self.input.value !== undefined) {\n                    updateTime();\n                }\n                self.close();\n                if (self.config &&\n                    self.config.mode === \"range\" &&\n                    self.selectedDates.length === 1)\n                    self.clear(false);\n            }\n        }\n    }\n    function changeYear(newYear) {\n        if (!newYear ||\n            (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n            (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n            return;\n        var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n        self.currentYear = newYearNum || self.currentYear;\n        if (self.config.maxDate &&\n            self.currentYear === self.config.maxDate.getFullYear()) {\n            self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n        }\n        else if (self.config.minDate &&\n            self.currentYear === self.config.minDate.getFullYear()) {\n            self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n        }\n        if (isNewYear) {\n            self.redraw();\n            triggerEvent(\"onYearChange\");\n            buildMonthSwitch();\n        }\n    }\n    function isEnabled(date, timeless) {\n        var _a;\n        if (timeless === void 0) { timeless = true; }\n        var dateToCheck = self.parseDate(date, undefined, timeless);\n        if ((self.config.minDate &&\n            dateToCheck &&\n            compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n            (self.config.maxDate &&\n                dateToCheck &&\n                compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n            return false;\n        if (!self.config.enable && self.config.disable.length === 0)\n            return true;\n        if (dateToCheck === undefined)\n            return false;\n        var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n        for (var i = 0, d = void 0; i < array.length; i++) {\n            d = array[i];\n            if (typeof d === \"function\" &&\n                d(dateToCheck))\n                return bool;\n            else if (d instanceof Date &&\n                dateToCheck !== undefined &&\n                d.getTime() === dateToCheck.getTime())\n                return bool;\n            else if (typeof d === \"string\") {\n                var parsed = self.parseDate(d, undefined, true);\n                return parsed && parsed.getTime() === dateToCheck.getTime()\n                    ? bool\n                    : !bool;\n            }\n            else if (typeof d === \"object\" &&\n                dateToCheck !== undefined &&\n                d.from &&\n                d.to &&\n                dateToCheck.getTime() >= d.from.getTime() &&\n                dateToCheck.getTime() <= d.to.getTime())\n                return bool;\n        }\n        return !bool;\n    }\n    function isInView(elem) {\n        if (self.daysContainer !== undefined)\n            return (elem.className.indexOf(\"hidden\") === -1 &&\n                elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n                self.daysContainer.contains(elem));\n        return false;\n    }\n    function onBlur(e) {\n        var isInput = e.target === self._input;\n        var valueChanged = self._input.value.trimEnd() !== getDateStr();\n        if (isInput &&\n            valueChanged &&\n            !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n            self.setDate(self._input.value, true, e.target === self.altInput\n                ? self.config.altFormat\n                : self.config.dateFormat);\n        }\n    }\n    function onKeyDown(e) {\n        var eventTarget = getEventTarget(e);\n        var isInput = self.config.wrap\n            ? element.contains(eventTarget)\n            : eventTarget === self._input;\n        var allowInput = self.config.allowInput;\n        var allowKeydown = self.isOpen && (!allowInput || !isInput);\n        var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n        if (e.keyCode === 13 && isInput) {\n            if (allowInput) {\n                self.setDate(self._input.value, true, eventTarget === self.altInput\n                    ? self.config.altFormat\n                    : self.config.dateFormat);\n                self.close();\n                return eventTarget.blur();\n            }\n            else {\n                self.open();\n            }\n        }\n        else if (isCalendarElem(eventTarget) ||\n            allowKeydown ||\n            allowInlineKeydown) {\n            var isTimeObj = !!self.timeContainer &&\n                self.timeContainer.contains(eventTarget);\n            switch (e.keyCode) {\n                case 13:\n                    if (isTimeObj) {\n                        e.preventDefault();\n                        updateTime();\n                        focusAndClose();\n                    }\n                    else\n                        selectDate(e);\n                    break;\n                case 27:\n                    e.preventDefault();\n                    focusAndClose();\n                    break;\n                case 8:\n                case 46:\n                    if (isInput && !self.config.allowInput) {\n                        e.preventDefault();\n                        self.clear();\n                    }\n                    break;\n                case 37:\n                case 39:\n                    if (!isTimeObj && !isInput) {\n                        e.preventDefault();\n                        var activeElement = getClosestActiveElement();\n                        if (self.daysContainer !== undefined &&\n                            (allowInput === false ||\n                                (activeElement && isInView(activeElement)))) {\n                            var delta_1 = e.keyCode === 39 ? 1 : -1;\n                            if (!e.ctrlKey)\n                                focusOnDay(undefined, delta_1);\n                            else {\n                                e.stopPropagation();\n                                changeMonth(delta_1);\n                                focusOnDay(getFirstAvailableDay(1), 0);\n                            }\n                        }\n                    }\n                    else if (self.hourElement)\n                        self.hourElement.focus();\n                    break;\n                case 38:\n                case 40:\n                    e.preventDefault();\n                    var delta = e.keyCode === 40 ? 1 : -1;\n                    if ((self.daysContainer &&\n                        eventTarget.$i !== undefined) ||\n                        eventTarget === self.input ||\n                        eventTarget === self.altInput) {\n                        if (e.ctrlKey) {\n                            e.stopPropagation();\n                            changeYear(self.currentYear - delta);\n                            focusOnDay(getFirstAvailableDay(1), 0);\n                        }\n                        else if (!isTimeObj)\n                            focusOnDay(undefined, delta * 7);\n                    }\n                    else if (eventTarget === self.currentYearElement) {\n                        changeYear(self.currentYear - delta);\n                    }\n                    else if (self.config.enableTime) {\n                        if (!isTimeObj && self.hourElement)\n                            self.hourElement.focus();\n                        updateTime(e);\n                        self._debouncedChange();\n                    }\n                    break;\n                case 9:\n                    if (isTimeObj) {\n                        var elems = [\n                            self.hourElement,\n                            self.minuteElement,\n                            self.secondElement,\n                            self.amPM,\n                        ]\n                            .concat(self.pluginElements)\n                            .filter(function (x) { return x; });\n                        var i = elems.indexOf(eventTarget);\n                        if (i !== -1) {\n                            var target = elems[i + (e.shiftKey ? -1 : 1)];\n                            e.preventDefault();\n                            (target || self._input).focus();\n                        }\n                    }\n                    else if (!self.config.noCalendar &&\n                        self.daysContainer &&\n                        self.daysContainer.contains(eventTarget) &&\n                        e.shiftKey) {\n                        e.preventDefault();\n                        self._input.focus();\n                    }\n                    break;\n                default:\n                    break;\n            }\n        }\n        if (self.amPM !== undefined && eventTarget === self.amPM) {\n            switch (e.key) {\n                case self.l10n.amPM[0].charAt(0):\n                case self.l10n.amPM[0].charAt(0).toLowerCase():\n                    self.amPM.textContent = self.l10n.amPM[0];\n                    setHoursFromInputs();\n                    updateValue();\n                    break;\n                case self.l10n.amPM[1].charAt(0):\n                case self.l10n.amPM[1].charAt(0).toLowerCase():\n                    self.amPM.textContent = self.l10n.amPM[1];\n                    setHoursFromInputs();\n                    updateValue();\n                    break;\n            }\n        }\n        if (isInput || isCalendarElem(eventTarget)) {\n            triggerEvent(\"onKeyDown\", e);\n        }\n    }\n    function onMouseOver(elem, cellClass) {\n        if (cellClass === void 0) { cellClass = \"flatpickr-day\"; }\n        if (self.selectedDates.length !== 1 ||\n            (elem &&\n                (!elem.classList.contains(cellClass) ||\n                    elem.classList.contains(\"flatpickr-disabled\"))))\n            return;\n        var hoverDate = elem\n            ? elem.dateObj.getTime()\n            : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n        var containsDisabled = false;\n        var minRange = 0, maxRange = 0;\n        for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n            if (!isEnabled(new Date(t), true)) {\n                containsDisabled =\n                    containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n                if (t < initialDate && (!minRange || t > minRange))\n                    minRange = t;\n                else if (t > initialDate && (!maxRange || t < maxRange))\n                    maxRange = t;\n            }\n        }\n        var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n        hoverableCells.forEach(function (dayElem) {\n            var date = dayElem.dateObj;\n            var timestamp = date.getTime();\n            var outOfRange = (minRange > 0 && timestamp < minRange) ||\n                (maxRange > 0 && timestamp > maxRange);\n            if (outOfRange) {\n                dayElem.classList.add(\"notAllowed\");\n                [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n                    dayElem.classList.remove(c);\n                });\n                return;\n            }\n            else if (containsDisabled && !outOfRange)\n                return;\n            [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n                dayElem.classList.remove(c);\n            });\n            if (elem !== undefined) {\n                elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n                    ? \"startRange\"\n                    : \"endRange\");\n                if (initialDate < hoverDate && timestamp === initialDate)\n                    dayElem.classList.add(\"startRange\");\n                else if (initialDate > hoverDate && timestamp === initialDate)\n                    dayElem.classList.add(\"endRange\");\n                if (timestamp >= minRange &&\n                    (maxRange === 0 || timestamp <= maxRange) &&\n                    isBetween(timestamp, initialDate, hoverDate))\n                    dayElem.classList.add(\"inRange\");\n            }\n        });\n    }\n    function onResize() {\n        if (self.isOpen && !self.config.static && !self.config.inline)\n            positionCalendar();\n    }\n    function open(e, positionElement) {\n        if (positionElement === void 0) { positionElement = self._positionElement; }\n        if (self.isMobile === true) {\n            if (e) {\n                e.preventDefault();\n                var eventTarget = getEventTarget(e);\n                if (eventTarget) {\n                    eventTarget.blur();\n                }\n            }\n            if (self.mobileInput !== undefined) {\n                self.mobileInput.focus();\n                self.mobileInput.click();\n            }\n            triggerEvent(\"onOpen\");\n            return;\n        }\n        else if (self._input.disabled || self.config.inline) {\n            return;\n        }\n        var wasOpen = self.isOpen;\n        self.isOpen = true;\n        if (!wasOpen) {\n            self.calendarContainer.classList.add(\"open\");\n            self._input.classList.add(\"active\");\n            triggerEvent(\"onOpen\");\n            positionCalendar(positionElement);\n        }\n        if (self.config.enableTime === true && self.config.noCalendar === true) {\n            if (self.config.allowInput === false &&\n                (e === undefined ||\n                    !self.timeContainer.contains(e.relatedTarget))) {\n                setTimeout(function () { return self.hourElement.select(); }, 50);\n            }\n        }\n    }\n    function minMaxDateSetter(type) {\n        return function (date) {\n            var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n            var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n            if (dateObj !== undefined) {\n                self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n                    dateObj.getHours() > 0 ||\n                        dateObj.getMinutes() > 0 ||\n                        dateObj.getSeconds() > 0;\n            }\n            if (self.selectedDates) {\n                self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n                if (!self.selectedDates.length && type === \"min\")\n                    setHoursFromDate(dateObj);\n                updateValue();\n            }\n            if (self.daysContainer) {\n                redraw();\n                if (dateObj !== undefined)\n                    self.currentYearElement[type] = dateObj.getFullYear().toString();\n                else\n                    self.currentYearElement.removeAttribute(type);\n                self.currentYearElement.disabled =\n                    !!inverseDateObj &&\n                        dateObj !== undefined &&\n                        inverseDateObj.getFullYear() === dateObj.getFullYear();\n            }\n        };\n    }\n    function parseConfig() {\n        var boolOpts = [\n            \"wrap\",\n            \"weekNumbers\",\n            \"allowInput\",\n            \"allowInvalidPreload\",\n            \"clickOpens\",\n            \"time_24hr\",\n            \"enableTime\",\n            \"noCalendar\",\n            \"altInput\",\n            \"shorthandCurrentMonth\",\n            \"inline\",\n            \"static\",\n            \"enableSeconds\",\n            \"disableMobile\",\n        ];\n        var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n        var formats = {};\n        self.config.parseDate = userConfig.parseDate;\n        self.config.formatDate = userConfig.formatDate;\n        Object.defineProperty(self.config, \"enable\", {\n            get: function () { return self.config._enable; },\n            set: function (dates) {\n                self.config._enable = parseDateRules(dates);\n            },\n        });\n        Object.defineProperty(self.config, \"disable\", {\n            get: function () { return self.config._disable; },\n            set: function (dates) {\n                self.config._disable = parseDateRules(dates);\n            },\n        });\n        var timeMode = userConfig.mode === \"time\";\n        if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n            var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n            formats.dateFormat =\n                userConfig.noCalendar || timeMode\n                    ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n                    : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n        }\n        if (userConfig.altInput &&\n            (userConfig.enableTime || timeMode) &&\n            !userConfig.altFormat) {\n            var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n            formats.altFormat =\n                userConfig.noCalendar || timeMode\n                    ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n                    : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n        }\n        Object.defineProperty(self.config, \"minDate\", {\n            get: function () { return self.config._minDate; },\n            set: minMaxDateSetter(\"min\"),\n        });\n        Object.defineProperty(self.config, \"maxDate\", {\n            get: function () { return self.config._maxDate; },\n            set: minMaxDateSetter(\"max\"),\n        });\n        var minMaxTimeSetter = function (type) { return function (val) {\n            self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n        }; };\n        Object.defineProperty(self.config, \"minTime\", {\n            get: function () { return self.config._minTime; },\n            set: minMaxTimeSetter(\"min\"),\n        });\n        Object.defineProperty(self.config, \"maxTime\", {\n            get: function () { return self.config._maxTime; },\n            set: minMaxTimeSetter(\"max\"),\n        });\n        if (userConfig.mode === \"time\") {\n            self.config.noCalendar = true;\n            self.config.enableTime = true;\n        }\n        Object.assign(self.config, formats, userConfig);\n        for (var i = 0; i < boolOpts.length; i++)\n            self.config[boolOpts[i]] =\n                self.config[boolOpts[i]] === true ||\n                    self.config[boolOpts[i]] === \"true\";\n        HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n            self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n        });\n        self.isMobile =\n            !self.config.disableMobile &&\n                !self.config.inline &&\n                self.config.mode === \"single\" &&\n                !self.config.disable.length &&\n                !self.config.enable &&\n                !self.config.weekNumbers &&\n                /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n        for (var i = 0; i < self.config.plugins.length; i++) {\n            var pluginConf = self.config.plugins[i](self) || {};\n            for (var key in pluginConf) {\n                if (HOOKS.indexOf(key) > -1) {\n                    self.config[key] = arrayify(pluginConf[key])\n                        .map(bindToInstance)\n                        .concat(self.config[key]);\n                }\n                else if (typeof userConfig[key] === \"undefined\")\n                    self.config[key] = pluginConf[key];\n            }\n        }\n        if (!userConfig.altInputClass) {\n            self.config.altInputClass =\n                getInputElem().className + \" \" + self.config.altInputClass;\n        }\n        triggerEvent(\"onParseConfig\");\n    }\n    function getInputElem() {\n        return self.config.wrap\n            ? element.querySelector(\"[data-input]\")\n            : element;\n    }\n    function setupLocale() {\n        if (typeof self.config.locale !== \"object\" &&\n            typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n            self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n        self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n            ? self.config.locale\n            : self.config.locale !== \"default\"\n                ? flatpickr.l10ns[self.config.locale]\n                : undefined));\n        tokenRegex.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n        tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n        tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n        tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n        tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n        var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n        if (userConfig.time_24hr === undefined &&\n            flatpickr.defaultConfig.time_24hr === undefined) {\n            self.config.time_24hr = self.l10n.time_24hr;\n        }\n        self.formatDate = createDateFormatter(self);\n        self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n    }\n    function positionCalendar(customPositionElement) {\n        if (typeof self.config.position === \"function\") {\n            return void self.config.position(self, customPositionElement);\n        }\n        if (self.calendarContainer === undefined)\n            return;\n        triggerEvent(\"onPreCalendarPosition\");\n        var positionElement = customPositionElement || self._positionElement;\n        var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n            (configPosVertical !== \"below\" &&\n                distanceFromBottom < calendarHeight &&\n                inputBounds.top > calendarHeight);\n        var top = window.pageYOffset +\n            inputBounds.top +\n            (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n        toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n        toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n        if (self.config.inline)\n            return;\n        var left = window.pageXOffset + inputBounds.left;\n        var isCenter = false;\n        var isRight = false;\n        if (configPosHorizontal === \"center\") {\n            left -= (calendarWidth - inputBounds.width) / 2;\n            isCenter = true;\n        }\n        else if (configPosHorizontal === \"right\") {\n            left -= calendarWidth - inputBounds.width;\n            isRight = true;\n        }\n        toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n        toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n        toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n        var right = window.document.body.offsetWidth -\n            (window.pageXOffset + inputBounds.right);\n        var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n        var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n        toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n        if (self.config.static)\n            return;\n        self.calendarContainer.style.top = top + \"px\";\n        if (!rightMost) {\n            self.calendarContainer.style.left = left + \"px\";\n            self.calendarContainer.style.right = \"auto\";\n        }\n        else if (!centerMost) {\n            self.calendarContainer.style.left = \"auto\";\n            self.calendarContainer.style.right = right + \"px\";\n        }\n        else {\n            var doc = getDocumentStyleSheet();\n            if (doc === undefined)\n                return;\n            var bodyWidth = window.document.body.offsetWidth;\n            var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n            var centerBefore = \".flatpickr-calendar.centerMost:before\";\n            var centerAfter = \".flatpickr-calendar.centerMost:after\";\n            var centerIndex = doc.cssRules.length;\n            var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n            toggleClass(self.calendarContainer, \"rightMost\", false);\n            toggleClass(self.calendarContainer, \"centerMost\", true);\n            doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n            self.calendarContainer.style.left = centerLeft + \"px\";\n            self.calendarContainer.style.right = \"auto\";\n        }\n    }\n    function getDocumentStyleSheet() {\n        var editableSheet = null;\n        for (var i = 0; i < document.styleSheets.length; i++) {\n            var sheet = document.styleSheets[i];\n            if (!sheet.cssRules)\n                continue;\n            try {\n                sheet.cssRules;\n            }\n            catch (err) {\n                continue;\n            }\n            editableSheet = sheet;\n            break;\n        }\n        return editableSheet != null ? editableSheet : createStyleSheet();\n    }\n    function createStyleSheet() {\n        var style = document.createElement(\"style\");\n        document.head.appendChild(style);\n        return style.sheet;\n    }\n    function redraw() {\n        if (self.config.noCalendar || self.isMobile)\n            return;\n        buildMonthSwitch();\n        updateNavigationCurrentMonth();\n        buildDays();\n    }\n    function focusAndClose() {\n        self._input.focus();\n        if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n            navigator.msMaxTouchPoints !== undefined) {\n            setTimeout(self.close, 0);\n        }\n        else {\n            self.close();\n        }\n    }\n    function selectDate(e) {\n        e.preventDefault();\n        e.stopPropagation();\n        var isSelectable = function (day) {\n            return day.classList &&\n                day.classList.contains(\"flatpickr-day\") &&\n                !day.classList.contains(\"flatpickr-disabled\") &&\n                !day.classList.contains(\"notAllowed\");\n        };\n        var t = findParent(getEventTarget(e), isSelectable);\n        if (t === undefined)\n            return;\n        var target = t;\n        var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n        var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n            selectedDate.getMonth() >\n                self.currentMonth + self.config.showMonths - 1) &&\n            self.config.mode !== \"range\";\n        self.selectedDateElem = target;\n        if (self.config.mode === \"single\")\n            self.selectedDates = [selectedDate];\n        else if (self.config.mode === \"multiple\") {\n            var selectedIndex = isDateSelected(selectedDate);\n            if (selectedIndex)\n                self.selectedDates.splice(parseInt(selectedIndex), 1);\n            else\n                self.selectedDates.push(selectedDate);\n        }\n        else if (self.config.mode === \"range\") {\n            if (self.selectedDates.length === 2) {\n                self.clear(false, false);\n            }\n            self.latestSelectedDateObj = selectedDate;\n            self.selectedDates.push(selectedDate);\n            if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n                self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n        }\n        setHoursFromInputs();\n        if (shouldChangeMonth) {\n            var isNewYear = self.currentYear !== selectedDate.getFullYear();\n            self.currentYear = selectedDate.getFullYear();\n            self.currentMonth = selectedDate.getMonth();\n            if (isNewYear) {\n                triggerEvent(\"onYearChange\");\n                buildMonthSwitch();\n            }\n            triggerEvent(\"onMonthChange\");\n        }\n        updateNavigationCurrentMonth();\n        buildDays();\n        updateValue();\n        if (!shouldChangeMonth &&\n            self.config.mode !== \"range\" &&\n            self.config.showMonths === 1)\n            focusOnDayElem(target);\n        else if (self.selectedDateElem !== undefined &&\n            self.hourElement === undefined) {\n            self.selectedDateElem && self.selectedDateElem.focus();\n        }\n        if (self.hourElement !== undefined)\n            self.hourElement !== undefined && self.hourElement.focus();\n        if (self.config.closeOnSelect) {\n            var single = self.config.mode === \"single\" && !self.config.enableTime;\n            var range = self.config.mode === \"range\" &&\n                self.selectedDates.length === 2 &&\n                !self.config.enableTime;\n            if (single || range) {\n                focusAndClose();\n            }\n        }\n        triggerChange();\n    }\n    var CALLBACKS = {\n        locale: [setupLocale, updateWeekdays],\n        showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n        minDate: [jumpToDate],\n        maxDate: [jumpToDate],\n        positionElement: [updatePositionElement],\n        clickOpens: [\n            function () {\n                if (self.config.clickOpens === true) {\n                    bind(self._input, \"focus\", self.open);\n                    bind(self._input, \"click\", self.open);\n                }\n                else {\n                    self._input.removeEventListener(\"focus\", self.open);\n                    self._input.removeEventListener(\"click\", self.open);\n                }\n            },\n        ],\n    };\n    function set(option, value) {\n        if (option !== null && typeof option === \"object\") {\n            Object.assign(self.config, option);\n            for (var key in option) {\n                if (CALLBACKS[key] !== undefined)\n                    CALLBACKS[key].forEach(function (x) { return x(); });\n            }\n        }\n        else {\n            self.config[option] = value;\n            if (CALLBACKS[option] !== undefined)\n                CALLBACKS[option].forEach(function (x) { return x(); });\n            else if (HOOKS.indexOf(option) > -1)\n                self.config[option] = arrayify(value);\n        }\n        self.redraw();\n        updateValue(true);\n    }\n    function setSelectedDate(inputDate, format) {\n        var dates = [];\n        if (inputDate instanceof Array)\n            dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n        else if (inputDate instanceof Date || typeof inputDate === \"number\")\n            dates = [self.parseDate(inputDate, format)];\n        else if (typeof inputDate === \"string\") {\n            switch (self.config.mode) {\n                case \"single\":\n                case \"time\":\n                    dates = [self.parseDate(inputDate, format)];\n                    break;\n                case \"multiple\":\n                    dates = inputDate\n                        .split(self.config.conjunction)\n                        .map(function (date) { return self.parseDate(date, format); });\n                    break;\n                case \"range\":\n                    dates = inputDate\n                        .split(self.l10n.rangeSeparator)\n                        .map(function (date) { return self.parseDate(date, format); });\n                    break;\n                default:\n                    break;\n            }\n        }\n        else\n            self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n        self.selectedDates = (self.config.allowInvalidPreload\n            ? dates\n            : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n        if (self.config.mode === \"range\")\n            self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n    }\n    function setDate(date, triggerChange, format) {\n        if (triggerChange === void 0) { triggerChange = false; }\n        if (format === void 0) { format = self.config.dateFormat; }\n        if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n            return self.clear(triggerChange);\n        setSelectedDate(date, format);\n        self.latestSelectedDateObj =\n            self.selectedDates[self.selectedDates.length - 1];\n        self.redraw();\n        jumpToDate(undefined, triggerChange);\n        setHoursFromDate();\n        if (self.selectedDates.length === 0) {\n            self.clear(false);\n        }\n        updateValue(triggerChange);\n        if (triggerChange)\n            triggerEvent(\"onChange\");\n    }\n    function parseDateRules(arr) {\n        return arr\n            .slice()\n            .map(function (rule) {\n            if (typeof rule === \"string\" ||\n                typeof rule === \"number\" ||\n                rule instanceof Date) {\n                return self.parseDate(rule, undefined, true);\n            }\n            else if (rule &&\n                typeof rule === \"object\" &&\n                rule.from &&\n                rule.to)\n                return {\n                    from: self.parseDate(rule.from, undefined),\n                    to: self.parseDate(rule.to, undefined),\n                };\n            return rule;\n        })\n            .filter(function (x) { return x; });\n    }\n    function setupDates() {\n        self.selectedDates = [];\n        self.now = self.parseDate(self.config.now) || new Date();\n        var preloadedDate = self.config.defaultDate ||\n            ((self.input.nodeName === \"INPUT\" ||\n                self.input.nodeName === \"TEXTAREA\") &&\n                self.input.placeholder &&\n                self.input.value === self.input.placeholder\n                ? null\n                : self.input.value);\n        if (preloadedDate)\n            setSelectedDate(preloadedDate, self.config.dateFormat);\n        self._initialDate =\n            self.selectedDates.length > 0\n                ? self.selectedDates[0]\n                : self.config.minDate &&\n                    self.config.minDate.getTime() > self.now.getTime()\n                    ? self.config.minDate\n                    : self.config.maxDate &&\n                        self.config.maxDate.getTime() < self.now.getTime()\n                        ? self.config.maxDate\n                        : self.now;\n        self.currentYear = self._initialDate.getFullYear();\n        self.currentMonth = self._initialDate.getMonth();\n        if (self.selectedDates.length > 0)\n            self.latestSelectedDateObj = self.selectedDates[0];\n        if (self.config.minTime !== undefined)\n            self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n        if (self.config.maxTime !== undefined)\n            self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n        self.minDateHasTime =\n            !!self.config.minDate &&\n                (self.config.minDate.getHours() > 0 ||\n                    self.config.minDate.getMinutes() > 0 ||\n                    self.config.minDate.getSeconds() > 0);\n        self.maxDateHasTime =\n            !!self.config.maxDate &&\n                (self.config.maxDate.getHours() > 0 ||\n                    self.config.maxDate.getMinutes() > 0 ||\n                    self.config.maxDate.getSeconds() > 0);\n    }\n    function setupInputs() {\n        self.input = getInputElem();\n        if (!self.input) {\n            self.config.errorHandler(new Error(\"Invalid input element specified\"));\n            return;\n        }\n        self.input._type = self.input.type;\n        self.input.type = \"text\";\n        self.input.classList.add(\"flatpickr-input\");\n        self._input = self.input;\n        if (self.config.altInput) {\n            self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n            self._input = self.altInput;\n            self.altInput.placeholder = self.input.placeholder;\n            self.altInput.disabled = self.input.disabled;\n            self.altInput.required = self.input.required;\n            self.altInput.tabIndex = self.input.tabIndex;\n            self.altInput.type = \"text\";\n            self.input.setAttribute(\"type\", \"hidden\");\n            if (!self.config.static && self.input.parentNode)\n                self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n        }\n        if (!self.config.allowInput)\n            self._input.setAttribute(\"readonly\", \"readonly\");\n        updatePositionElement();\n    }\n    function updatePositionElement() {\n        self._positionElement = self.config.positionElement || self._input;\n    }\n    function setupMobile() {\n        var inputType = self.config.enableTime\n            ? self.config.noCalendar\n                ? \"time\"\n                : \"datetime-local\"\n            : \"date\";\n        self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n        self.mobileInput.tabIndex = 1;\n        self.mobileInput.type = inputType;\n        self.mobileInput.disabled = self.input.disabled;\n        self.mobileInput.required = self.input.required;\n        self.mobileInput.placeholder = self.input.placeholder;\n        self.mobileFormatStr =\n            inputType === \"datetime-local\"\n                ? \"Y-m-d\\\\TH:i:S\"\n                : inputType === \"date\"\n                    ? \"Y-m-d\"\n                    : \"H:i:S\";\n        if (self.selectedDates.length > 0) {\n            self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n        }\n        if (self.config.minDate)\n            self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n        if (self.config.maxDate)\n            self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n        if (self.input.getAttribute(\"step\"))\n            self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n        self.input.type = \"hidden\";\n        if (self.altInput !== undefined)\n            self.altInput.type = \"hidden\";\n        try {\n            if (self.input.parentNode)\n                self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n        }\n        catch (_a) { }\n        bind(self.mobileInput, \"change\", function (e) {\n            self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n            triggerEvent(\"onChange\");\n            triggerEvent(\"onClose\");\n        });\n    }\n    function toggle(e) {\n        if (self.isOpen === true)\n            return self.close();\n        self.open(e);\n    }\n    function triggerEvent(event, data) {\n        if (self.config === undefined)\n            return;\n        var hooks = self.config[event];\n        if (hooks !== undefined && hooks.length > 0) {\n            for (var i = 0; hooks[i] && i < hooks.length; i++)\n                hooks[i](self.selectedDates, self.input.value, self, data);\n        }\n        if (event === \"onChange\") {\n            self.input.dispatchEvent(createEvent(\"change\"));\n            self.input.dispatchEvent(createEvent(\"input\"));\n        }\n    }\n    function createEvent(name) {\n        var e = document.createEvent(\"Event\");\n        e.initEvent(name, true, true);\n        return e;\n    }\n    function isDateSelected(date) {\n        for (var i = 0; i < self.selectedDates.length; i++) {\n            var selectedDate = self.selectedDates[i];\n            if (selectedDate instanceof Date &&\n                compareDates(selectedDate, date) === 0)\n                return \"\" + i;\n        }\n        return false;\n    }\n    function isDateInRange(date) {\n        if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n            return false;\n        return (compareDates(date, self.selectedDates[0]) >= 0 &&\n            compareDates(date, self.selectedDates[1]) <= 0);\n    }\n    function updateNavigationCurrentMonth() {\n        if (self.config.noCalendar || self.isMobile || !self.monthNav)\n            return;\n        self.yearElements.forEach(function (yearElement, i) {\n            var d = new Date(self.currentYear, self.currentMonth, 1);\n            d.setMonth(self.currentMonth + i);\n            if (self.config.showMonths > 1 ||\n                self.config.monthSelectorType === \"static\") {\n                self.monthElements[i].textContent =\n                    monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n            }\n            else {\n                self.monthsDropdownContainer.value = d.getMonth().toString();\n            }\n            yearElement.value = d.getFullYear().toString();\n        });\n        self._hidePrevMonthArrow =\n            self.config.minDate !== undefined &&\n                (self.currentYear === self.config.minDate.getFullYear()\n                    ? self.currentMonth <= self.config.minDate.getMonth()\n                    : self.currentYear < self.config.minDate.getFullYear());\n        self._hideNextMonthArrow =\n            self.config.maxDate !== undefined &&\n                (self.currentYear === self.config.maxDate.getFullYear()\n                    ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n                    : self.currentYear > self.config.maxDate.getFullYear());\n    }\n    function getDateStr(specificFormat) {\n        var format = specificFormat ||\n            (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n        return self.selectedDates\n            .map(function (dObj) { return self.formatDate(dObj, format); })\n            .filter(function (d, i, arr) {\n            return self.config.mode !== \"range\" ||\n                self.config.enableTime ||\n                arr.indexOf(d) === i;\n        })\n            .join(self.config.mode !== \"range\"\n            ? self.config.conjunction\n            : self.l10n.rangeSeparator);\n    }\n    function updateValue(triggerChange) {\n        if (triggerChange === void 0) { triggerChange = true; }\n        if (self.mobileInput !== undefined && self.mobileFormatStr) {\n            self.mobileInput.value =\n                self.latestSelectedDateObj !== undefined\n                    ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n                    : \"\";\n        }\n        self.input.value = getDateStr(self.config.dateFormat);\n        if (self.altInput !== undefined) {\n            self.altInput.value = getDateStr(self.config.altFormat);\n        }\n        if (triggerChange !== false)\n            triggerEvent(\"onValueUpdate\");\n    }\n    function onMonthNavClick(e) {\n        var eventTarget = getEventTarget(e);\n        var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n        var isNextMonth = self.nextMonthNav.contains(eventTarget);\n        if (isPrevMonth || isNextMonth) {\n            changeMonth(isPrevMonth ? -1 : 1);\n        }\n        else if (self.yearElements.indexOf(eventTarget) >= 0) {\n            eventTarget.select();\n        }\n        else if (eventTarget.classList.contains(\"arrowUp\")) {\n            self.changeYear(self.currentYear + 1);\n        }\n        else if (eventTarget.classList.contains(\"arrowDown\")) {\n            self.changeYear(self.currentYear - 1);\n        }\n    }\n    function timeWrapper(e) {\n        e.preventDefault();\n        var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n        if (self.amPM !== undefined && eventTarget === self.amPM) {\n            self.amPM.textContent =\n                self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n        }\n        var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n            (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n        var newValue = curValue + step * delta;\n        if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n            var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n            if (newValue < min) {\n                newValue =\n                    max +\n                        newValue +\n                        int(!isHourElem) +\n                        (int(isHourElem) && int(!self.amPM));\n                if (isMinuteElem)\n                    incrementNumInput(undefined, -1, self.hourElement);\n            }\n            else if (newValue > max) {\n                newValue =\n                    input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n                if (isMinuteElem)\n                    incrementNumInput(undefined, 1, self.hourElement);\n            }\n            if (self.amPM &&\n                isHourElem &&\n                (step === 1\n                    ? newValue + curValue === 23\n                    : Math.abs(newValue - curValue) > step)) {\n                self.amPM.textContent =\n                    self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n            }\n            input.value = pad(newValue);\n        }\n    }\n    init();\n    return self;\n}\nfunction _flatpickr(nodeList, config) {\n    var nodes = Array.prototype.slice\n        .call(nodeList)\n        .filter(function (x) { return x instanceof HTMLElement; });\n    var instances = [];\n    for (var i = 0; i < nodes.length; i++) {\n        var node = nodes[i];\n        try {\n            if (node.getAttribute(\"data-fp-omit\") !== null)\n                continue;\n            if (node._flatpickr !== undefined) {\n                node._flatpickr.destroy();\n                node._flatpickr = undefined;\n            }\n            node._flatpickr = FlatpickrInstance(node, config || {});\n            instances.push(node._flatpickr);\n        }\n        catch (e) {\n            console.error(e);\n        }\n    }\n    return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n    typeof HTMLCollection !== \"undefined\" &&\n    typeof NodeList !== \"undefined\") {\n    HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n        return _flatpickr(this, config);\n    };\n    HTMLElement.prototype.flatpickr = function (config) {\n        return _flatpickr([this], config);\n    };\n}\nvar flatpickr = function (selector, config) {\n    if (typeof selector === \"string\") {\n        return _flatpickr(window.document.querySelectorAll(selector), config);\n    }\n    else if (selector instanceof Node) {\n        return _flatpickr([selector], config);\n    }\n    else {\n        return _flatpickr(selector, config);\n    }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n    en: __assign({}, English),\n    default: __assign({}, English),\n};\nflatpickr.localize = function (l10n) {\n    flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = function (config) {\n    flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n    jQuery.fn.flatpickr = function (config) {\n        return _flatpickr(this, config);\n    };\n}\nDate.prototype.fp_incr = function (days) {\n    return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n    window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n", "const t={config:{},run(){this.getController().processElements()},process(...t){for(const e of t)this.getController().processElement(e);return t.length},getController(){return this.controller?this.controller:this.controller=new t.Controller}};t.config.useFormat24=!1,t.config.i18n={en:{date:{dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],abbrDayNames:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],abbrMonthNames:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],yesterday:\"yesterday\",today:\"today\",tomorrow:\"tomorrow\",on:\"on {date}\",formats:{default:\"%b %e, %Y\",thisYear:\"%b %e\"}},time:{am:\"am\",pm:\"pm\",singular:\"a {time}\",singularAn:\"an {time}\",elapsed:\"{time} ago\",second:\"second\",seconds:\"seconds\",minute:\"minute\",minutes:\"minutes\",hour:\"hour\",hours:\"hours\",formats:{default:\"%l:%M%P\",default_24h:\"%H:%M\"}},datetime:{at:\"{date} at {time}\",formats:{default:\"%B %e, %Y at %l:%M%P %Z\",default_24h:\"%B %e, %Y at %H:%M %Z\"}}}},t.config.locale=\"en\",t.config.defaultLocale=\"en\",t.config.timerInterval=6e4;const e=!isNaN(Date.parse(\"2011-01-01T12:00:00-05:00\"));t.parseDate=t=>(t=t.toString(),e||(t=function(t){const e=t.match(r);if(e){let t;const[r,a,s,n,i,o,c,u]=e;return\"Z\"!==u&&(t=u.replace(\":\",\"\")),`${a}/${s}/${n} ${i}:${o}:${c} GMT${[t]}`}}(t)),new Date(Date.parse(t)));const r=/^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(Z|[-+]?[\\d:]+)$/;t.elementMatchesSelector=(()=>{const t=document.documentElement,e=t.matches||t.matchesSelector||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector;return(t,r)=>{if(t?.nodeType===Node.ELEMENT_NODE)return e.call(t,r)}})();const{config:a}=t,{i18n:s}=a;t.getI18nValue=(e=\"\",r={locale:a.locale})=>{const{locale:n}=r,i=function(t,e){let r=t;for(var a of Array.from(e.split(\".\"))){if(!r[a])return null;r=r[a]}return r}(s[n],e);return i||(n!==a.defaultLocale?t.getI18nValue(e,{locale:a.defaultLocale}):void 0)},t.translate=(e,r={},a)=>{let s=t.getI18nValue(e,a);for(const t in r){const e=r[t];s=s.replace(`{${t}}`,e)}return s};const{getI18nValue:n,translate:i}=t,o=\"function\"==typeof Intl?.DateTimeFormat,c={\"Central European Standard Time\":\"CET\",\"Central European Summer Time\":\"CEST\",\"China Standard Time\":\"CST\",\"Israel Daylight Time\":\"IDT\",\"Israel Standard Time\":\"IST\",\"Moscow Standard Time\":\"MSK\",\"Peru Standard Time\":\"PET\",\"Philippine Standard Time\":\"PHT\",\"Singapore Standard Time\":\"SGT\",\"Western Indonesia Time\":\"WIB\"};t.knownEdgeCaseTimeZones=c,t.strftime=(()=>{const t=(a,s)=>{const u=a.getDay(),l=a.getDate(),d=a.getMonth(),m=a.getFullYear(),h=a.getHours(),f=a.getMinutes(),g=a.getSeconds();return s.replace(/%(-?)([%aAbBcdeHIlmMpPSwyYZ])/g,((s,p,y)=>{switch(y){case\"%\":return\"%\";case\"a\":return n(\"date.abbrDayNames\")[u];case\"A\":return n(\"date.dayNames\")[u];case\"b\":return n(\"date.abbrMonthNames\")[d];case\"B\":return n(\"date.monthNames\")[d];case\"c\":return a.toString();case\"d\":return e(l,p);case\"e\":return l;case\"H\":return e(h,p);case\"I\":return e(t(a,\"%l\"),p);case\"l\":return 0===h||12===h?12:(h+12)%12;case\"m\":return e(d+1,p);case\"M\":return e(f,p);case\"p\":return i(\"time.\"+(h>11?\"pm\":\"am\")).toUpperCase();case\"P\":return i(\"time.\"+(h>11?\"pm\":\"am\"));case\"S\":return e(g,p);case\"w\":return u;case\"y\":return e(m%100,p);case\"Y\":return m;case\"Z\":return function(t){let e,a,s;return(a=function(t){return Object.keys(c).find((e=>o?new Date(t).toLocaleString(\"en-US\",{timeZoneName:\"long\"}).includes(e):t.toString().includes(e)))}(t))?c[a]:(s=r(t,{allowGMT:!1}))||(s=function(t){const e=t.toString();let r;if(null!=(r=e.match(/\\(([\\w\\s]+)\\)$/))){const t=r[1];return/\\s/.test(t)?t.match(/\\b(\\w)/g).join(\"\"):t}if(null!=(r=e.match(/(\\w{3,4})\\s\\d{4}$/)))return r[1];if(null!=(r=e.match(/(UTC[\\+\\-]\\d+)/)))return r[1]}(t))?s:(e=r(t,{allowGMT:!0}))?e:\"\"}(a)}}))};function e(t,e){return\"-\"===e?t:`0${t}`.slice(-2)}function r(t,{allowGMT:e}){if(o){const r=new Date(t).toLocaleString(\"en-US\",{timeZoneName:\"short\"}).split(\" \").pop();if(e||!r.includes(\"GMT\"))return r}}return t})(),t.CalendarDate=class{static fromDate(t){return new this(t.getFullYear(),t.getMonth()+1,t.getDate())}static today(){return this.fromDate(new Date)}constructor(t,e,r){this.date=new Date(Date.UTC(t,e-1)),this.date.setUTCDate(r),this.year=this.date.getUTCFullYear(),this.month=this.date.getUTCMonth()+1,this.day=this.date.getUTCDate(),this.value=this.date.getTime()}equals(t){return t?.value===this.value}is(t){return this.equals(t)}isToday(){return this.is(this.constructor.today())}occursOnSameYearAs(t){return this.year===t?.year}occursThisYear(){return this.occursOnSameYearAs(this.constructor.today())}daysSince(t){if(t)return(this.date-t.date)/864e5}daysPassed(){return this.constructor.today().daysSince(this)}};const{strftime:u,translate:l,getI18nValue:d,config:m}=t;t.RelativeTime=class{constructor(e){this.date=e,this.calendarDate=t.CalendarDate.fromDate(this.date)}toString(){let t,e;return(e=this.toTimeElapsedString())?l(\"time.elapsed\",{time:e}):(t=this.toWeekdayString())?(e=this.toTimeString(),l(\"datetime.at\",{date:t,time:e})):l(\"date.on\",{date:this.toDateString()})}toTimeOrDateString(){return this.calendarDate.isToday()?this.toTimeString():this.toDateString()}toTimeElapsedString(){let t;const e=(new Date).getTime()-this.date.getTime(),r=Math.round(e/1e3),a=Math.round(r/60),s=Math.round(a/60);return e<0?null:r<10?(t=l(\"time.second\"),l(\"time.singular\",{time:t})):r<45?`${r} ${l(\"time.seconds\")}`:r<90?(t=l(\"time.minute\"),l(\"time.singular\",{time:t})):a<45?`${a} ${l(\"time.minutes\")}`:a<90?(t=l(\"time.hour\"),l(\"time.singularAn\",{time:t})):s<24?`${s} ${l(\"time.hours\")}`:\"\"}toWeekdayString(){switch(this.calendarDate.daysPassed()){case 0:return l(\"date.today\");case 1:return l(\"date.yesterday\");case-1:return l(\"date.tomorrow\");case 2:case 3:case 4:case 5:case 6:return u(this.date,\"%A\");default:return\"\"}}toDateString(){const t=this.calendarDate.occursThisYear()?d(\"date.formats.thisYear\"):d(\"date.formats.default\");return u(this.date,t)}toTimeString(){const t=m.useFormat24?\"default_24h\":\"default\";return u(this.date,d(`time.formats.${t}`))}};const{elementMatchesSelector:h}=t;t.PageObserver=class{constructor(t,e){this.selector=t,this.callback=e,this.processMutations=this.processMutations.bind(this),this.processInsertion=this.processInsertion.bind(this)}start(){this.started||(this.observeWithMutationObserver()||this.observeWithMutationEvent(),this.started=!0)}observeWithMutationObserver(){if(\"undefined\"!=typeof MutationObserver&&null!==MutationObserver){return new MutationObserver(this.processMutations).observe(document.documentElement,{childList:!0,subtree:!0}),!0}return!1}observeWithMutationEvent(){return addEventListener(\"DOMNodeInserted\",this.processInsertion,!1),!0}findSignificantElements(t){const e=[];return t?.nodeType===Node.ELEMENT_NODE&&(h(t,this.selector)&&e.push(t),e.push(...Array.from(t.querySelectorAll(this.selector)||[]))),e}processMutations(t){const e=[];for(const r of t)if(\"childList\"===r.type)for(const t of r.addedNodes)e.push(...this.findSignificantElements(t)||[]);this.notify(e)}processInsertion(t){const e=this.findSignificantElements(t.target);this.notify(e)}notify(t){t?.length>0&&\"function\"==typeof this.callback&&this.callback(t)}};const{parseDate:f,strftime:g,getI18nValue:p,config:y}=t,S=\"time[data-local]:not([data-localized])\",T=t=>t.setAttribute(\"data-localized\",\"\"),b=e=>new t.RelativeTime(e);t.Controller=class{constructor(){this.processElements=this.processElements.bind(this),this.pageObserver=new t.PageObserver(S,this.processElements)}start(){this.started||(this.processElements(),this.startTimer(),this.pageObserver.start(),this.started=!0)}startTimer(){let t;(t=y.timerInterval)&&(this.timer||(this.timer=setInterval(this.processElements,t)))}processElements(t){t||(t=document.querySelectorAll(S));for(const e of Array.from(t))this.processElement(e);return t.length}processElement(t){const e=t.getAttribute(\"datetime\"),r=t.getAttribute(\"data-local\"),a=y.useFormat24&&t.getAttribute(\"data-format24\")||t.getAttribute(\"data-format\"),s=f(e);if(!isNaN(s)){if(!t.hasAttribute(\"title\")){const e=y.useFormat24?\"default_24h\":\"default\",r=g(s,p(`datetime.formats.${e}`));t.setAttribute(\"title\",r)}(t=>{t.setAttribute(\"data-processed-at\",(new Date).toISOString())})(t),t.textContent=(()=>{switch(r){case\"time\":return T(t),g(s,a);case\"date\":return T(t),b(s).toDateString();case\"time-ago\":return b(s).toString();case\"time-or-date\":return b(s).toTimeOrDateString();case\"weekday\":return b(s).toWeekdayString();case\"weekday-or-date\":return b(s).toWeekdayString()||b(s).toDateString()}})()}}};let M=!1;function D(){t.getController().start()}t.start=()=>{var e;M?t.run():(M=!0,\"undefined\"!=typeof MutationObserver&&null!==MutationObserver||(document.attachEvent?\"complete\"===document.readyState:\"loading\"!==document.readyState)?D():(e=D,\"function\"==typeof requestAnimationFrame?requestAnimationFrame(e):setTimeout(e,17)))},t.processing=()=>t.getController().started,window.LocalTime===t&&t.start();export{t as default};\n", "function isValidEmail(email) {\n    if (!email) {\n        return false;\n    }\n    const re = new RegExp(/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/);\n    return re.test(email.toLowerCase());\n}\n\nfunction getUrlVars() {\n    let vars = {};\n    window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (m, key, value) {\n        vars[key] = value;\n    });\n    return vars;\n}\n\nfunction getUrlParam(parameter, defaultVal) {\n    let urlParam = defaultVal;\n    if (window.location.href.indexOf(parameter) > -1) {\n        urlParam = getUrlVars()[parameter];\n    }\n    return urlParam;\n}\n\n// esbuild bundles each module in its own scope, so functions consumed by other\n// bundled scripts (users.js) and inline view handlers must be re-attached to\n// the global object.\nwindow.isValidEmail = isValidEmail;\nwindow.getUrlVars = getUrlVars;\nwindow.getUrlParam = getUrlParam;\n", "// Auto-initialize Bootstrap 4 tooltips for any element with [data-toggle=\"tooltip\"].\n// Runs on initial page load and on Turbo Drive navigations.\nfunction initTooltips() {\n    if (typeof $ === \"undefined\" || typeof $.fn.tooltip === \"undefined\") {\n        return;\n    }\n    $('[data-toggle=\"tooltip\"]').tooltip();\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", initTooltips);\ndocument.addEventListener(\"turbo:load\", initTooltips);\n", "jQuery(document).ready(function ($) {\n    $(\"#sign-up-form\").on('click', 'input[type=\"submit\"]', function (e) {\n        e.preventDefault();\n\n        let emailField = $('#email');\n        let passwordField = $('#password');\n        let has_errors = false;\n\n        $(\".form-control\").removeClass(\"has-error\");\n\n        // Email\n        let emailVal = emailField.val();\n        if (!isValidEmail(emailVal)) {\n            emailField.addClass(\"has-error\");\n            has_errors = true;\n        }\n\n        // Password\n        let pattern = new RegExp(/^(?=.*[a-zA-Z])(?=.*\\d)(?=.*[!@#$%^&*()_+])[A-Za-z\\d][A-Za-z\\d!@#$%^&*()_+]{8,20}$/);\n        let passwordVal = passwordField.val();\n\n        // if (!passwordVal || !pattern.test(passwordVal)) {\n        //     passwordField.addClass(\"has-error\");\n        //     has_errors = true;\n        // }\n\n        // Saving of form\n        if (!has_errors) {\n            $(\"#sign-up-form\").submit();\n        }\n    });\n\n    $(\"#forgot-password-form\").on('click', 'input[type=\"submit\"]', function (e) {\n        e.preventDefault();\n\n        let emailField = $('#email');\n        let has_errors = false;\n\n        $(\".form-control\").removeClass(\"has-error\");\n\n        // Email\n        let emailVal = emailField.val();\n        if (!isValidEmail(emailVal)) {\n            emailField.addClass(\"has-error\");\n            has_errors = true;\n        }\n\n        // Saving of form\n        if (!has_errors) {\n            $(\"#sign-up-form\").submit();\n        }\n    });\n});\n", "function onChangeStateForSimulator(el) {\n    let state_id = $(\"#state_id\").val();\n    $(\"#zone_id\").empty();\n    // let zoneDropDownEl = document.getElementById('zone_id');\n    // $.ajax({\n    //     type: \"GET\",\n    //     url: \"/admin/states/\" + state_id + '/get_zones',\n    //     contentType: \"application/json; charset=utf-8\",\n    //     dataType: \"json\",\n    //     success: function (result, status, xhr) {\n    //         $(\"#zone_id\").empty();\n    //         for (i = 0; i < result.length; i++) {\n    //             option = document.createElement('option');\n    //             option.value = result[i]['id'];\n    //             option.innerText = result[i]['name'];\n    //             zoneDropDownEl.appendChild(option);\n    //         }\n    //     },\n    //     error: function (xhr, status, error) {\n    //         console.error(\"Result: \" + status + \" \" + error + \" \" + xhr.status + \" \" + xhr.statusText)\n    //     }\n    // });\n\n}\nfunction onChangeSpeciesForSimulator(el){\n    let species_id = $(\"#species_id\").val();\n    let animalDropDownEl = document.getElementById('animal_id');\n\n    $(\"#zone_id\").empty();\n    $.ajax({\n        type: \"GET\",\n        url: \"/admin/animals?filter=true&species_id=\" + species_id,\n        contentType: \"application/json; charset=utf-8\",\n        dataType: \"json\",\n        success: function (result, status, xhr) {\n            $(\"#animal_id\").empty();\n            option = document.createElement('option');\n            option.value = 0;\n            option.innerText = \"Select one\";\n            animalDropDownEl.appendChild(option);\n\n\n            for (i = 0; i < result.length; i++) {\n                option = document.createElement('option');\n                option.value = result[i]['id'];\n                option.innerText = result[i]['name'];\n                animalDropDownEl.appendChild(option);\n            }\n        },\n        error: function (xhr, status, error) {\n            console.error(\"Result: \" + status + \" \" + error + \" \" + xhr.status + \" \" + xhr.statusText)\n        }\n    });\n\n\n}\n\n\nfunction onChangeAnimalForSimulator(el){\n    let state_id = $(\"#state_id\").val();\n    let zoneDropDownEl = document.getElementById('zone_id');\n    $(\"#zone_id\").empty();\n    $.ajax({\n        type: \"GET\",\n        url: \"/admin/zones?filter=true&state_id=\" + state_id,\n        contentType: \"application/json; charset=utf-8\",\n        dataType: \"json\",\n        success: function (result, status, xhr) {\n            $(\"#zone_id\").empty();\n            for (i = 0; i < result.length; i++) {\n                option = document.createElement('option');\n                option.value = result[i]['id'];\n                option.innerText = result[i]['name'];\n                zoneDropDownEl.appendChild(option);\n            }\n        },\n        error: function (xhr, status, error) {\n            console.error(\"Result: \" + status + \" \" + error + \" \" + xhr.status + \" \" + xhr.statusText)\n        }\n    });\n}\n\n// Referenced by inline onchange= handlers in app/views/admin/simulator/index.html.erb;\n// esbuild's module scope is not global, so re-attach them to the window.\nwindow.onChangeStateForSimulator = onChangeStateForSimulator;\nwindow.onChangeSpeciesForSimulator = onChangeSpeciesForSimulator;\nwindow.onChangeAnimalForSimulator = onChangeAnimalForSimulator;\n"],
  "mappings": "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",
  "names": ["require_jquery", "__commonJSMin", "exports", "module", "global", "factory", "w", "window", "noGlobal", "arr", "getProto", "slice", "flat", "array", "push", "indexOf", "class2type", "toString", "hasOwn", "fnToString", "ObjectFunctionString", "support", "isFunction", "obj", "isWindow", "document", "preservedScriptAttributes", "DOMEval", "code", "node", "doc", "i", "val", "script", "toType", "version", "rhtmlSuffix", "jQuery", "selector", "context", "num", "elems", "ret", "callback", "elem", "_elem", "len", "j", "options", "name", "src", "copy", "copyIsArray", "clone", "target", "length", "deep", "msg", "proto", "Ctor", "isArrayLike", "nodeType", "results", "namespace", "docElem", "first", "second", "invert", "callbackInverse", "matches", "callbackExpect", "arg", "value", "_i", "type", "nodeName", "pop", "sort", "splice", "whitespace", "rtrimCSS", "a", "b", "bup", "rcssescape", "fcssescape", "ch", "asCodePoint", "sel", "preferredDoc", "pushNative", "Expr", "outermostContext", "sortInput", "hasDuplicate", "documentElement", "documentIsHTML", "rbuggyQSA", "expando", "dirruns", "done", "classCache", "createCache", "tokenCache", "compilerCache", "nonnativeSelectorCache", "sortOrder", "booleans", "identifier", "attributes", "pseudos", "rwhitespace", "rcomma", "rleadingCombinator", "rdescend", "rpseudo", "ridentifier", "matchExpr", "rinputs", "rheader", "rquickExpr", "rsibling", "runescape", "funescape", "escape", "nonHex", "high", "unloadHandler", "setDocument", "inDisabledFieldset", "addCombinator", "safeActiveElement", "els", "find", "seed", "m", "nid", "match", "groups", "newSelector", "newContext", "testContext", "tokenize", "toSelector", "select", "keys", "cache", "key", "markFunction", "fn", "assert", "el", "createInputPseudo", "createButtonPseudo", "createDisabledPseudo", "disabled", "createPositionalPseudo", "argument", "matchIndexes", "subWindow", "id", "attrId", "tag", "className", "input", "compare", "expr", "elements", "duplicates", "excess", "unquoted", "nodeNameSelector", "expectedNodeName", "pattern", "operator", "check", "result", "what", "_argument", "last", "simple", "forward", "ofType", "_context", "xml", "outerCache", "nodeIndex", "start", "dir", "parent", "useCache", "diff", "pseudo", "args", "idx", "matched", "matcher", "compile", "unmatched", "text", "lang", "elemLang", "hash", "attr", "_matchIndexes", "setFilters", "parseOnly", "tokens", "soFar", "preFilters", "cached", "combinator", "base", "skip", "checkNonElements", "doneName", "oldCache", "newCache", "elementMatcher", "matchers", "multipleContexts", "contexts", "condense", "map", "filter", "newUnmatched", "mapped", "setMatcher", "preFilter", "postFilter", "postFinder", "postSelector", "temp", "matcherOut", "preMap", "postMap", "preexisting", "matcherIn", "matcherFromTokens", "checkContext", "leadingRelative", "implicitRelative", "matchContext", "matchAnyContext", "matcherFromGroupMatchers", "elementMatchers", "setMatchers", "bySet", "byElement", "superMatcher", "outermost", "matchedCount", "setMatched", "contextBackup", "dirrunsUnique", "token", "compiled", "until", "truncate", "siblings", "n", "rneedsContext", "rsingleTag", "winnow", "qualifier", "not", "self", "rootjQuery", "init", "root", "rparentsprev", "guaranteedUnique", "targets", "l", "selectors", "cur", "sibling", "rnothtmlwhite", "createOptions", "object", "_", "flag", "firing", "memory", "fired", "locked", "list", "queue", "firingIndex", "fire", "add", "index", "Identity", "v", "Thrower", "ex", "adoptValue", "resolve", "reject", "noValue", "method", "func", "tuples", "state", "promise", "deferred", "fns", "newDefer", "tuple", "returned", "onFulfilled", "onRejected", "onProgress", "maxDepth", "depth", "handler", "special", "that", "mightThrow", "then", "process", "e", "stateString", "singleValue", "remaining", "resolveContexts", "resolveValues", "primary", "updateFunc", "rerrorNames", "error", "asyncError", "readyList", "wait", "completed", "access", "chainable", "emptyGet", "raw", "bulk", "_key", "rmsPrefix", "rdashAlpha", "fcamelCase", "_all", "letter", "camelCase", "string", "acceptData", "owner", "Data", "data", "prop", "dataPriv", "dataUser", "rbrace", "rmultiDash", "getData", "dataAttr", "attrs", "startLength", "hooks", "next", "setter", "tmp", "count", "defer", "pnum", "rcssNum", "cssExpand", "isAttached", "composed", "isHiddenWithinTree", "adjustCSS", "valueParts", "tween", "adjusted", "scale", "maxIterations", "currentValue", "initial", "unit", "initialInUnit", "defaultDisplayMap", "getDefaultDisplay", "display", "showHide", "show", "values", "rcheckableType", "rtagName", "rscriptType", "fragment", "div", "wrapMap", "getAll", "setGlobalEval", "refElements", "rhtml", "buildFragment", "scripts", "selection", "ignored", "wrap", "attached", "nodes", "rtypenamespace", "returnTrue", "returnFalse", "on", "types", "one", "origFn", "event", "handleObjIn", "eventHandle", "events", "t", "handleObj", "handlers", "namespaces", "origType", "elemData", "mappedTypes", "origCount", "nativeEvent", "handlerQueue", "matchedHandlers", "matchedSelectors", "delegateCount", "hook", "originalEvent", "leverageNative", "isSetup", "saved", "handle", "props", "delegateType", "focusMappedHandler", "attaches", "dataHolder", "orig", "fix", "related", "rnoInnerhtml", "rchecked", "rcleanScript", "manipulationTarget", "content", "disableScript", "restoreScript", "cloneCopyEvent", "dest", "pdataOld", "udataOld", "udataCur", "fixInput", "domManip", "collection", "hasScripts", "iNoClone", "valueIsFunction", "remove", "keepData", "html", "dataAndEvents", "deepDataAndEvents", "srcElements", "destElements", "inPage", "original", "insert", "rnumnonpx", "rcustomProp", "getStyles", "view", "swap", "old", "rboxStyle", "computeStyleTests", "container", "divStyle", "pixelPositionVal", "reliableMarginLeftVal", "roundPixelMeasures", "pixelBoxStylesVal", "boxSizingReliableVal", "scrollboxSizeVal", "measure", "reliableTrDimensionsVal", "table", "tr", "trChild", "trStyle", "curCSS", "computed", "width", "minWidth", "maxWidth", "isCustomProp", "style", "addGetHookIf", "conditionFn", "hookFn", "cssPrefixes", "emptyStyle", "vendorProps", "vendorPropName", "capName", "finalPropName", "final", "rdisplayswap", "cssShow", "cssNormalTransform", "setPositiveNumber", "subtract", "boxModelAdjustment", "dimension", "box", "isBorderBox", "styles", "computedVal", "extra", "delta", "marginDelta", "getWidthOrHeight", "boxSizingNeeded", "valueIsBorderBox", "offsetProp", "origName", "scrollboxSizeBuggy", "prefix", "suffix", "expanded", "parts", "Tween", "end", "easing", "percent", "eased", "p", "fxNow", "inProgress", "rfxtypes", "rrun", "schedule", "createFxNow", "genFx", "includeWidth", "which", "createTween", "animation", "Animation", "defaultPrefilter", "opts", "toggle", "oldfire", "propTween", "restoreDisplay", "isBox", "anim", "hidden", "dataShow", "propFilter", "specialEasing", "properties", "stopped", "tick", "currentTime", "gotoEnd", "prepend", "speed", "opt", "to", "empty", "optall", "doAnimation", "clearQueue", "stopQueue", "stop", "dequeue", "timers", "cssFn", "timer", "time", "timeout", "boolHook", "attrHandle", "nType", "attrNames", "getter", "isXML", "lowercaseName", "rfocusable", "rclickable", "tabindex", "stripAndCollapse", "getClass", "classesToArray", "classNames", "curValue", "finalValue", "stateVal", "isValidValue", "rreturn", "option", "max", "optionSet", "location", "nonce", "rquery", "parserErrorElem", "rfocusMorph", "stopPropagationCallback", "onlyHandlers", "bubbleType", "ontype", "lastElement", "eventPath", "rbracket", "rCRLF", "rsubmitterTypes", "rsubmittable", "buildParams", "traditional", "s", "valueOrFunction", "r20", "rhash", "rantiCache", "rheaders", "rlocalProtocol", "rnoContent", "rprotocol", "prefilters", "transports", "allTypes", "originAnchor", "addToPrefiltersOrTransports", "structure", "dataTypeExpression", "dataType", "dataTypes", "inspectPrefiltersOrTransports", "originalOptions", "jqXHR", "inspected", "seekingTransport", "inspect", "selected", "prefilterOrFactory", "dataTypeOrTransport", "ajaxExtend", "flatOptions", "ajaxHandleResponses", "responses", "ct", "finalDataType", "firstDataType", "contents", "ajaxConvert", "response", "isSuccess", "conv2", "current", "conv", "prev", "converters", "settings", "url", "transport", "cacheURL", "responseHeadersString", "responseHeaders", "timeoutTimer", "urlAnchor", "fireGlobals", "uncached", "callbackContext", "globalEventContext", "completeDeferred", "statusCode", "requestHeaders", "requestHeadersNames", "strAbort", "statusText", "finalText", "status", "nativeStatusText", "headers", "success", "modified", "htmlIsFunction", "xhrSuccessStatus", "xhrSupported", "errorCallback", "complete", "xhr", "evt", "oldCallbacks", "rjsonp", "originalSettings", "callbackName", "overwritten", "responseContainer", "jsonProp", "body", "keepScripts", "parsed", "params", "off", "responseText", "curPosition", "curLeft", "curCSSTop", "curTop", "curOffset", "curCSSLeft", "calculatePosition", "position", "curElem", "rect", "win", "offsetParent", "offset", "parentOffset", "top", "defaultExtra", "funcName", "margin", "fnOver", "fnOut", "rtrim", "proxy", "hold", "_jQuery", "_$", "require_rails", "__commonJSMin", "exports", "module", "jqueryUjsInit", "$", "undefined", "rails", "$document", "xhr", "token", "obj", "name", "data", "event", "message", "options", "element", "method", "url", "withCredentials", "dataType", "button", "settings", "status", "error", "originAnchor", "urlAnchor", "link", "href", "target", "csrfToken", "csrfParam", "form", "metadataInput", "selector", "replacement", "answer", "callback", "e", "specifiedSelector", "nonBlank", "foundInputs", "input", "valueToCheck", "radiosForNameWithNoneSelected", "radioName", "requiredInputs", "checkedRadioButtonNames", "originalOptions", "metaClick", "handleRemote", "remote", "blankRequiredInputs", "nonBlankFileInputs", "aborted", "isBrowser", "window", "document", "navigator", "timeoutDuration", "longerTimeoutBrowsers", "i", "length", "userAgent", "indexOf", "microtaskDebounce", "fn", "called", "Promise", "resolve", "then", "taskDebounce", "scheduled", "supportsMicroTasks", "debounce", "isFunction", "functionToCheck", "getType", "toString", "call", "getStyleComputedProperty", "element", "property", "nodeType", "ownerDocument", "defaultView", "css", "getComputedStyle", "getParentNode", "nodeName", "parentNode", "host", "getScrollParent", "body", "overflow", "_getStyleComputedProp", "overflowX", "overflowY", "test", "getReferenceNode", "reference", "referenceNode", "isIE11", "MSInputMethodContext", "documentMode", "isIE10", "isIE", "version", "getOffsetParent", "documentElement", "noOffsetParent", "offsetParent", "nextElementSibling", "isOffsetContainer", "firstElementChild", "getRoot", "node", "findCommonOffsetParent", "element1", "element2", "order", "compareDocumentPosition", "Node", "DOCUMENT_POSITION_FOLLOWING", "start", "end", "range", "createRange", "setStart", "setEnd", "commonAncestorContainer", "contains", "element1root", "getScroll", "side", "upperSide", "html", "scrollingElement", "includeScroll", "rect", "subtract", "scrollTop", "scrollLeft", "modifier", "top", "bottom", "left", "right", "getBordersSize", "styles", "axis", "sideA", "sideB", "parseFloat", "getSize", "computedStyle", "Math", "max", "parseInt", "getWindowSizes", "getClientRect", "offsets", "width", "height", "getBoundingClientRect", "result", "sizes", "clientWidth", "clientHeight", "horizScrollbar", "offsetWidth", "vertScrollbar", "offsetHeight", "getOffsetRectRelativeToArbitraryNode", "children", "parent", "fixedPosition", "runIsIE", "isHTML", "childrenRect", "parentRect", "scrollParent", "borderTopWidth", "borderLeftWidth", "marginTop", "marginLeft", "getViewportOffsetRectRelativeToArtbitraryNode", "excludeScroll", "relativeOffset", "innerWidth", "innerHeight", "offset", "isFixed", "getFixedPositionOffsetParent", "parentElement", "el", "getBoundaries", "popper", "padding", "boundariesElement", "boundaries", "boundariesNode", "_getWindowSizes", "isPaddingNumber", "getArea", "_ref", "computeAutoPlacement", "placement", "refRect", "rects", "sortedAreas", "Object", "keys", "map", "key", "sort", "a", "b", "area", "filteredAreas", "filter", "_ref2", "computedPlacement", "variation", "split", "getReferenceOffsets", "state", "commonOffsetParent", "getOuterSizes", "x", "marginBottom", "y", "marginRight", "getOppositePlacement", "hash", "replace", "matched", "getPopperOffsets", "referenceOffsets", "popperRect", "popperOffsets", "isHoriz", "mainSide", "secondarySide", "measurement", "secondaryMeasurement", "find", "arr", "check", "Array", "prototype", "findIndex", "prop", "value", "cur", "match", "obj", "runModifiers", "modifiers", "data", "ends", "modifiersToRun", "undefined", "slice", "forEach", "warn", "enabled", "update", "isDestroyed", "options", "positionFixed", "flip", "originalPlacement", "position", "isCreated", "onUpdate", "onCreate", "isModifierEnabled", "modifierName", "some", "name", "getSupportedPropertyName", "prefixes", "upperProp", "charAt", "toUpperCase", "prefix", "toCheck", "style", "destroy", "removeAttribute", "willChange", "disableEventListeners", "removeOnDestroy", "removeChild", "getWindow", "attachToScrollParents", "event", "callback", "scrollParents", "isBody", "target", "addEventListener", "passive", "push", "setupEventListeners", "updateBound", "scrollElement", "eventsEnabled", "enableEventListeners", "scheduleUpdate", "removeEventListeners", "removeEventListener", "isNumeric", "n", "isNaN", "isFinite", "setStyles", "unit", "setAttributes", "attributes", "setAttribute", "applyStyle", "instance", "arrowElement", "arrowStyles", "applyStyleOnLoad", "modifierOptions", "getRoundedOffsets", "shouldRound", "_data$offsets", "round", "floor", "noRound", "v", "referenceWidth", "popperWidth", "isVertical", "isVariation", "sameWidthParity", "bothOddWidth", "horizontalToInteger", "verticalToInteger", "isFirefox", "computeStyle", "legacyGpuAccelerationOption", "gpuAcceleration", "offsetParentRect", "devicePixelRatio", "prefixedProperty", "invertTop", "invertLeft", "_extends", "arrow", "isModifierRequired", "requestingName", "requestedName", "requesting", "isRequired", "requested", "querySelector", "len", "sideCapitalized", "toLowerCase", "altSide", "opSide", "arrowElementSize", "center", "popperMarginSide", "popperBorderSide", "sideValue", "min", "_data$offsets$arrow", "defineProperty", "getOppositeVariation", "placements", "validPlacements", "clockwise", "counter", "index", "concat", "reverse", "BEHAVIORS", "flipped", "placementOpposite", "flipOrder", "behavior", "FLIP", "CLOCKWISE", "COUNTERCLOCKWISE", "step", "refOffsets", "overlapsRef", "overflowsLeft", "overflowsRight", "overflowsTop", "overflowsBottom", "overflowsBoundaries", "flippedVariationByRef", "flipVariations", "flippedVariationByContent", "flipVariationsByContent", "flippedVariation", "keepTogether", "toValue", "str", "size", "parseOffset", "basePlacement", "useHeight", "fragments", "frag", "trim", "divider", "search", "splitRegex", "ops", "op", "mergeWithPrevious", "reduce", "index2", "preventOverflow", "transformProp", "popperStyles", "transform", "priority", "escapeWithReference", "shift", "shiftvariation", "shiftOffsets", "hide", "bound", "inner", "subtractLength", "Defaults", "Popper", "requestAnimationFrame", "_this", "bind", "jquery", "onLoad", "Utils", "global", "PopperUtils", "TRANSITION_END", "MAX_UID", "MILLISECONDS_MULTIPLIER", "toType", "obj", "toString", "call", "match", "toLowerCase", "getSpecialTransitionEndEvent", "bindType", "delegateType", "handle", "event", "$", "target", "is", "handleObj", "handler", "apply", "arguments", "transitionEndEmulator", "duration", "_this", "called", "one", "Util", "setTimeout", "triggerTransitionEnd", "setTransitionEndSupport", "fn", "emulateTransitionEnd", "special", "getUID", "prefix", "Math", "random", "document", "getElementById", "getSelectorFromElement", "element", "selector", "getAttribute", "hrefAttr", "trim", "querySelector", "getTransitionDurationFromElement", "transitionDuration", "css", "transitionDelay", "floatTransitionDuration", "parseFloat", "floatTransitionDelay", "split", "reflow", "offsetHeight", "trigger", "supportsTransitionEnd", "Boolean", "isElement", "nodeType", "typeCheckConfig", "componentName", "config", "configTypes", "property", "Object", "prototype", "hasOwnProperty", "expectedTypes", "value", "valueType", "RegExp", "test", "Error", "toUpperCase", "findShadowRoot", "documentElement", "attachShadow", "getRootNode", "root", "ShadowRoot", "parentNode", "jQueryDetection", "TypeError", "version", "jquery", "minMajor", "ltMajor", "minMinor", "minPatch", "maxMajor", "NAME", "VERSION", "DATA_KEY", "EVENT_KEY", "DATA_API_KEY", "JQUERY_NO_CONFLICT", "CLASS_NAME_ALERT", "CLASS_NAME_FADE", "CLASS_NAME_SHOW", "EVENT_CLOSE", "EVENT_CLOSED", "EVENT_CLICK_DATA_API", "SELECTOR_DISMISS", "Alert", "_element", "close", "rootElement", "_getRootElement", "customEvent", "_triggerCloseEvent", "isDefaultPrevented", "_removeElement", "dispose", "removeData", "parent", "closest", "closeEvent", "Event", "removeClass", "hasClass", "_destroyElement", "detach", "remove", "_jQueryInterface", "each", "$element", "data", "_handleDismiss", "alertInstance", "preventDefault", "on", "Constructor", "noConflict", "CLASS_NAME_ACTIVE", "CLASS_NAME_BUTTON", "CLASS_NAME_FOCUS", "EVENT_FOCUS_BLUR_DATA_API", "EVENT_LOAD_DATA_API", "SELECTOR_DATA_TOGGLE_CARROT", "SELECTOR_DATA_TOGGLES", "SELECTOR_DATA_TOGGLE", "SELECTOR_DATA_TOGGLES_BUTTONS", "SELECTOR_INPUT", "SELECTOR_ACTIVE", "SELECTOR_BUTTON", "Button", "shouldAvoidTriggerChange", "toggle", "triggerChangeEvent", "addAriaPressed", "input", "type", "checked", "classList", "contains", "activeElement", "focus", "hasAttribute", "setAttribute", "toggleClass", "avoidTriggerChange", "button", "initialButton", "inputBtn", "tagName", "window", "buttons", "slice", "querySelectorAll", "i", "len", "length", "add", "ARROW_LEFT_KEYCODE", "ARROW_RIGHT_KEYCODE", "TOUCHEVENT_COMPAT_WAIT", "SWIPE_THRESHOLD", "CLASS_NAME_CAROUSEL", "CLASS_NAME_SLIDE", "CLASS_NAME_RIGHT", "CLASS_NAME_LEFT", "CLASS_NAME_NEXT", "CLASS_NAME_PREV", "CLASS_NAME_POINTER_EVENT", "DIRECTION_NEXT", "DIRECTION_PREV", "DIRECTION_LEFT", "DIRECTION_RIGHT", "EVENT_SLIDE", "EVENT_SLID", "EVENT_KEYDOWN", "EVENT_MOUSEENTER", "EVENT_MOUSELEAVE", "EVENT_TOUCHSTART", "EVENT_TOUCHMOVE", "EVENT_TOUCHEND", "EVENT_POINTERDOWN", "EVENT_POINTERUP", "EVENT_DRAG_START", "SELECTOR_ACTIVE_ITEM", "SELECTOR_ITEM", "SELECTOR_ITEM_IMG", "SELECTOR_NEXT_PREV", "SELECTOR_INDICATORS", "SELECTOR_DATA_SLIDE", "SELECTOR_DATA_RIDE", "Default", "interval", "keyboard", "slide", "pause", "wrap", "touch", "DefaultType", "PointerType", "TOUCH", "PEN", "Carousel", "_items", "_interval", "_activeElement", "_isPaused", "_isSliding", "touchTimeout", "touchStartX", "touchDeltaX", "_config", "_getConfig", "_indicatorsElement", "_touchSupported", "navigator", "maxTouchPoints", "_pointerEvent", "PointerEvent", "MSPointerEvent", "_addEventListeners", "next", "_slide", "nextWhenVisible", "hidden", "prev", "cycle", "clearInterval", "_updateInterval", "setInterval", "visibilityState", "bind", "to", "index", "activeIndex", "_getItemIndex", "direction", "off", "_handleSwipe", "absDeltax", "abs", "_this2", "_keydown", "_addTouchEventListeners", "_this3", "start", "originalEvent", "pointerType", "clientX", "touches", "move", "end", "clearTimeout", "e", "which", "indexOf", "_getItemByDirection", "isNextDirection", "isPrevDirection", "lastItemIndex", "isGoingToWrap", "delta", "itemIndex", "_triggerSlideEvent", "relatedTarget", "eventDirectionName", "targetIndex", "fromIndex", "slideEvent", "from", "_setActiveIndicatorElement", "indicators", "nextIndicator", "children", "addClass", "elementInterval", "parseInt", "defaultInterval", "_this4", "activeElementIndex", "nextElement", "nextElementIndex", "isCycling", "directionalClassName", "orderClassName", "slidEvent", "action", "ride", "_dataApiClickHandler", "slideIndex", "carousels", "$carousel", "CLASS_NAME_COLLAPSE", "CLASS_NAME_COLLAPSING", "CLASS_NAME_COLLAPSED", "DIMENSION_WIDTH", "DIMENSION_HEIGHT", "EVENT_SHOW", "EVENT_SHOWN", "EVENT_HIDE", "EVENT_HIDDEN", "SELECTOR_ACTIVES", "Collapse", "_isTransitioning", "_triggerArray", "id", "toggleList", "elem", "filterElement", "filter", "foundElem", "_selector", "push", "_parent", "_getParent", "_addAriaAndCollapsedClass", "hide", "show", "actives", "activesData", "not", "startEvent", "dimension", "_getDimension", "style", "attr", "setTransitioning", "complete", "capitalizedDimension", "scrollSize", "getBoundingClientRect", "triggerArrayLength", "$elem", "isTransitioning", "hasWidth", "_getTargetFromElement", "triggerArray", "isOpen", "currentTarget", "$trigger", "selectors", "$target", "ESCAPE_KEYCODE", "SPACE_KEYCODE", "TAB_KEYCODE", "ARROW_UP_KEYCODE", "ARROW_DOWN_KEYCODE", "RIGHT_MOUSE_BUTTON_WHICH", "REGEXP_KEYDOWN", "CLASS_NAME_DISABLED", "CLASS_NAME_DROPUP", "CLASS_NAME_DROPRIGHT", "CLASS_NAME_DROPLEFT", "CLASS_NAME_MENURIGHT", "CLASS_NAME_POSITION_STATIC", "EVENT_CLICK", "EVENT_KEYDOWN_DATA_API", "EVENT_KEYUP_DATA_API", "SELECTOR_FORM_CHILD", "SELECTOR_MENU", "SELECTOR_NAVBAR_NAV", "SELECTOR_VISIBLE_ITEMS", "PLACEMENT_TOP", "PLACEMENT_TOPEND", "PLACEMENT_BOTTOM", "PLACEMENT_BOTTOMEND", "PLACEMENT_RIGHT", "PLACEMENT_LEFT", "offset", "flip", "boundary", "reference", "display", "popperConfig", "Dropdown", "_popper", "_menu", "_getMenuElement", "_inNavbar", "_detectNavbar", "disabled", "isActive", "_clearMenus", "usePopper", "showEvent", "_getParentFromElement", "Popper", "referenceElement", "_getPopperConfig", "body", "noop", "hideEvent", "destroy", "update", "scheduleUpdate", "stopPropagation", "_extends", "constructor", "_getPlacement", "$parentDropdown", "placement", "_getOffset", "offsets", "modifiers", "enabled", "preventOverflow", "boundariesElement", "applyStyle", "toggles", "context", "clickEvent", "dropdownMenu", "_dataApiKeydownHandler", "items", "item", "CLASS_NAME_SCROLLABLE", "CLASS_NAME_SCROLLBAR_MEASURER", "CLASS_NAME_BACKDROP", "CLASS_NAME_OPEN", "CLASS_NAME_STATIC", "EVENT_HIDE_PREVENTED", "EVENT_FOCUSIN", "EVENT_RESIZE", "EVENT_CLICK_DISMISS", "EVENT_KEYDOWN_DISMISS", "EVENT_MOUSEUP_DISMISS", "EVENT_MOUSEDOWN_DISMISS", "SELECTOR_DIALOG", "SELECTOR_MODAL_BODY", "SELECTOR_DATA_DISMISS", "SELECTOR_FIXED_CONTENT", "SELECTOR_STICKY_CONTENT", "backdrop", "Modal", "_dialog", "_backdrop", "_isShown", "_isBodyOverflowing", "_ignoreBackdropClick", "_scrollbarWidth", "_checkScrollbar", "_setScrollbar", "_adjustDialog", "_setEscapeEvent", "_setResizeEvent", "_showBackdrop", "_showElement", "transition", "_hideModal", "forEach", "htmlElement", "handleUpdate", "_triggerBackdropTransition", "hideEventPrevented", "isModalOverflowing", "scrollHeight", "clientHeight", "overflowY", "modalTransitionDuration", "modalBody", "Node", "ELEMENT_NODE", "appendChild", "removeAttribute", "scrollTop", "_enforceFocus", "shownEvent", "transitionComplete", "_this5", "has", "_this6", "_this7", "_this8", "_resetAdjustments", "_resetScrollbar", "_removeBackdrop", "callback", "_this9", "animate", "createElement", "className", "appendTo", "backdropTransitionDuration", "callbackRemove", "paddingLeft", "paddingRight", "rect", "round", "left", "right", "innerWidth", "_getScrollbarWidth", "_this10", "fixedContent", "stickyContent", "actualPadding", "calculatedPadding", "actualMargin", "marginRight", "calculatedMargin", "padding", "elements", "margin", "scrollDiv", "scrollbarWidth", "width", "clientWidth", "removeChild", "_this11", "uriAttrs", "ARIA_ATTRIBUTE_PATTERN", "DefaultWhitelist", "a", "area", "b", "br", "col", "code", "div", "em", "hr", "h1", "h2", "h3", "h4", "h5", "h6", "img", "li", "ol", "p", "pre", "s", "small", "span", "sub", "sup", "strong", "u", "ul", "SAFE_URL_PATTERN", "DATA_URL_PATTERN", "allowedAttribute", "allowedAttributeList", "attrName", "nodeName", "nodeValue", "regExp", "attrRegex", "sanitizeHtml", "unsafeHtml", "whiteList", "sanitizeFn", "domParser", "DOMParser", "createdDocument", "parseFromString", "whitelistKeys", "keys", "el", "elName", "attributeList", "attributes", "whitelistedAttributes", "concat", "innerHTML", "CLASS_PREFIX", "BSCLS_PREFIX_REGEX", "DISALLOWED_ATTRIBUTES", "HOVER_STATE_SHOW", "HOVER_STATE_OUT", "SELECTOR_TOOLTIP_INNER", "SELECTOR_ARROW", "TRIGGER_HOVER", "TRIGGER_FOCUS", "TRIGGER_CLICK", "TRIGGER_MANUAL", "AttachmentMap", "AUTO", "TOP", "RIGHT", "BOTTOM", "LEFT", "animation", "template", "title", "delay", "html", "container", "fallbackPlacement", "customClass", "sanitize", "HIDE", "HIDDEN", "SHOW", "SHOWN", "INSERTED", "CLICK", "FOCUSIN", "FOCUSOUT", "MOUSEENTER", "MOUSELEAVE", "Tooltip", "_isEnabled", "_timeout", "_hoverState", "_activeTrigger", "tip", "_setListeners", "enable", "disable", "toggleEnabled", "dataKey", "_getDelegateConfig", "click", "_isWithActiveTrigger", "_enter", "_leave", "getTipElement", "_hideModalHandler", "isWithContent", "shadowRoot", "isInTheDom", "ownerDocument", "tipId", "setContent", "attachment", "_getAttachment", "addAttachmentClass", "_getContainer", "_fixTransition", "prevHoverState", "_cleanTipClass", "getTitle", "setElementContent", "content", "empty", "append", "text", "defaultBsConfig", "behavior", "arrow", "onCreate", "originalPlacement", "_handlePopperPlacementChange", "onUpdate", "find", "triggers", "eventIn", "eventOut", "_fixTitle", "titleType", "dataAttributes", "dataAttr", "key", "$tip", "tabClass", "join", "popperData", "instance", "popper", "initConfigAnimation", "SELECTOR_TITLE", "SELECTOR_CONTENT", "Popover", "_getContent", "CLASS_NAME_DROPDOWN_ITEM", "EVENT_ACTIVATE", "EVENT_SCROLL", "METHOD_OFFSET", "METHOD_POSITION", "SELECTOR_DATA_SPY", "SELECTOR_NAV_LIST_GROUP", "SELECTOR_NAV_LINKS", "SELECTOR_NAV_ITEMS", "SELECTOR_LIST_ITEMS", "SELECTOR_DROPDOWN", "SELECTOR_DROPDOWN_ITEMS", "SELECTOR_DROPDOWN_TOGGLE", "method", "ScrollSpy", "_scrollElement", "_offsets", "_targets", "_activeTarget", "_scrollHeight", "_process", "refresh", "autoMethod", "offsetMethod", "offsetBase", "_getScrollTop", "_getScrollHeight", "targets", "map", "targetSelector", "targetBCR", "height", "top", "sort", "pageYOffset", "max", "_getOffsetHeight", "innerHeight", "maxScroll", "_activate", "_clear", "isActiveTarget", "queries", "$link", "parents", "node", "scrollSpys", "scrollSpysLength", "$spy", "CLASS_NAME_DROPDOWN_MENU", "SELECTOR_ACTIVE_UL", "SELECTOR_DROPDOWN_ACTIVE_CHILD", "Tab", "previous", "listElement", "itemSelector", "makeArray", "hiddenEvent", "activeElements", "active", "_transitionComplete", "dropdownChild", "dropdownElement", "dropdownToggleList", "$this", "CLASS_NAME_HIDE", "CLASS_NAME_SHOWING", "autohide", "Toast", "_clearTimeout", "_close", "import_jquery", "jQuery", "import_jquery_ujs", "import_bootstrap", "HOOKS", "defaults", "err", "givenDate", "date", "week1", "english", "nth", "s", "default_default", "pad", "number", "length", "int", "bool", "debounce", "fn", "wait", "_this", "args", "arrayify", "obj", "toggleClass", "elem", "className", "bool", "createElement", "tag", "content", "e", "clearNode", "node", "findParent", "condition", "createNumberInput", "inputClassName", "opts", "wrapper", "numInput", "arrowUp", "arrowDown", "key", "getEventTarget", "event", "path", "doNothing", "monthToStr", "monthNumber", "shorthand", "locale", "revFormat", "dateObj", "monthName", "hour", "day", "amPM", "int", "shortMonth", "seconds", "_", "unixSeconds", "weekNum", "weekNumber", "date", "year", "ISODate", "minutes", "month", "unixMillSeconds", "tokenRegex", "formats", "options", "pad", "createDateFormatter", "_a", "_b", "config", "defaults", "_c", "l10n", "english", "_d", "isMobile", "dateObj", "frmt", "overrideLocale", "locale", "c", "i", "arr", "formats", "createDateParser", "date", "givenFormat", "timeless", "customLocale", "parsedDate", "dateOrig", "format", "datestr", "matched", "ops", "matchIndex", "regexStr", "token", "isBackSlash", "escaped", "tokenRegex", "match", "revFormat", "fn", "val", "compareDates", "date1", "date2", "isBetween", "ts", "ts1", "ts2", "calculateSecondsSinceMidnight", "hours", "minutes", "seconds", "parseSeconds", "secondsSinceMidnight", "duration", "getDefaultHours", "config", "minHour", "minMinutes", "minSeconds", "maxHr", "maxMinutes", "target", "args", "_i", "_loop_1", "source", "key", "_a", "args_1", "__assign", "t", "s", "i", "n", "p", "__spreadArrays", "il", "r", "k", "a", "j", "jl", "DEBOUNCED_CHANGE_MS", "FlatpickrInstance", "element", "instanceConfig", "self", "defaults", "flatpickr", "default_default", "createDateParser", "bind", "setHoursFromDate", "positionCalendar", "changeMonth", "changeYear", "clear", "close", "onMouseOver", "createElement", "createDay", "destroy", "isEnabled", "jumpToDate", "updateValue", "open", "redraw", "set", "setDate", "toggle", "setupHelperFunctions", "month", "yr", "init", "parseConfig", "setupLocale", "setupInputs", "setupDates", "build", "bindEvents", "setCalendarWidth", "isSafari", "triggerEvent", "getClosestActiveElement", "_a", "bindToInstance", "fn", "config", "daysWidth", "updateTime", "e", "defaultDate", "compareDates", "getDefaultHours", "timeWrapper", "prevValue", "setHoursFromInputs", "ampm2military", "hour", "amPM", "int", "military2ampm", "hours", "minutes", "seconds", "limitMinHours", "limitMaxHours", "minBound", "calculateSecondsSinceMidnight", "maxBound", "currentTime", "result", "parseSeconds", "maxTime", "minTime", "setHours", "dateObj", "date", "pad", "onYearInput", "event", "eventTarget", "getEventTarget", "year", "handler", "options", "ev", "el", "triggerChange", "evt", "setupMobile", "debouncedResize", "debounce", "onResize", "onKeyDown", "documentClick", "onMonthNavClick", "selectDate", "selText", "timeIncrement", "onBlur", "jumpDate", "jumpTo", "oldYear", "oldMonth", "buildMonthSwitch", "incrementNumInput", "delta", "inputElem", "target", "input", "createEvent", "fragment", "buildMonthNav", "buildWeeks", "weekWrapper", "weekNumbers", "buildWeekdays", "buildDays", "buildTime", "toggleClass", "customAppend", "wrapper", "className", "_dayNumber", "dateIsEnabled", "dayElement", "isDateSelected", "isDateInRange", "focusOnDayElem", "targetNode", "getFirstAvailableDay", "startMonth", "endMonth", "m", "startIndex", "endIndex", "c", "getNextAvailableDay", "current", "givenMonth", "loopDelta", "numMonthDays", "focusOnDay", "offset", "activeElement", "dayFocused", "isInView", "startElem", "buildMonthDays", "firstOfMonth", "prevMonthDays", "daysInMonth", "days", "isMultiMonth", "prevMonthDayClass", "nextMonthDayClass", "dayNumber", "dayIndex", "dayNum", "dayContainer", "clearNode", "frag", "d", "shouldBuildMonth", "monthToStr", "buildMonth", "container", "monthNavFragment", "monthElement", "selectedMonth", "yearInput", "createNumberInput", "yearElement", "currentMonth", "buildMonths", "bool", "updateNavigationCurrentMonth", "separator", "hourInput", "minuteInput", "secondInput", "updateWeekdays", "firstDayOfWeek", "weekdays", "value", "isOffset", "triggerChangeEvent", "toInitial", "isCalendarElem", "elem", "eventTarget_1", "isCalendarElement", "isInput", "lostFocus", "isIgnored", "newYear", "newYearNum", "isNewYear", "timeless", "dateToCheck", "array", "parsed", "valueChanged", "getDateStr", "allowInput", "allowKeydown", "allowInlineKeydown", "isTimeObj", "focusAndClose", "delta_1", "elems", "x", "cellClass", "hoverDate", "initialDate", "rangeStartDate", "rangeEndDate", "containsDisabled", "minRange", "maxRange", "duration", "hoverableCells", "dayElem", "timestamp", "outOfRange", "isBetween", "positionElement", "wasOpen", "minMaxDateSetter", "type", "inverseDateObj", "boolOpts", "userConfig", "formats", "dates", "parseDateRules", "timeMode", "defaultDateFormat", "defaultAltFormat", "minMaxTimeSetter", "val", "HOOKS", "hook", "arrayify", "pluginConf", "key", "getInputElem", "tokenRegex", "createDateFormatter", "customPositionElement", "calendarHeight", "acc", "child", "calendarWidth", "configPos", "configPosVertical", "configPosHorizontal", "inputBounds", "distanceFromBottom", "showOnTop", "top", "left", "isCenter", "isRight", "right", "rightMost", "centerMost", "doc", "getDocumentStyleSheet", "bodyWidth", "centerLeft", "centerBefore", "centerAfter", "centerIndex", "centerStyle", "editableSheet", "sheet", "createStyleSheet", "style", "isSelectable", "day", "findParent", "selectedDate", "shouldChangeMonth", "selectedIndex", "b", "single", "range", "CALLBACKS", "updatePositionElement", "option", "setSelectedDate", "inputDate", "format", "arr", "rule", "preloadedDate", "inputType", "data", "hooks", "name", "specificFormat", "dObj", "isPrevMonth", "isNextMonth", "isKeyDown", "min", "max", "step", "curValue", "newValue", "isHourElem", "isMinuteElem", "_flatpickr", "nodeList", "nodes", "instances", "node", "selector", "l10n", "esm_default", "t", "e", "r", "a", "s", "n", "i", "o", "c", "u", "l", "d", "m", "h", "f", "g", "p", "y", "S", "T", "b", "M", "D", "isValidEmail", "email", "getUrlVars", "vars", "m", "key", "value", "getUrlParam", "parameter", "defaultVal", "urlParam", "initTooltips", "$", "e", "emailField", "passwordField", "has_errors", "emailVal", "pattern", "passwordVal", "onChangeStateForSimulator", "el", "state_id", "onChangeSpeciesForSimulator", "species_id", "animalDropDownEl", "result", "status", "xhr", "error", "onChangeAnimalForSimulator", "zoneDropDownEl", "esm_default", "t"]
}
