{
  "version": 3,
  "sources": ["../../../../node_modules/jquery/dist/jquery.js", "../../../../node_modules/jquery-ujs/src/rails.js", "../../../../node_modules/turbolinks/dist/turbolinks.js", "../../../javascript/oog/essentials.js", "../../../../node_modules/foundation-sites/js/foundation.core.utils.js", "../../../../node_modules/foundation-sites/js/foundation.util.mediaQuery.js", "../../../../node_modules/foundation-sites/js/foundation.core.js", "../../../../node_modules/foundation-sites/js/foundation.util.box.js", "../../../../node_modules/foundation-sites/js/foundation.util.imageLoader.js", "../../../../node_modules/foundation-sites/js/foundation.util.keyboard.js", "../../../../node_modules/foundation-sites/js/foundation.util.motion.js", "../../../../node_modules/foundation-sites/js/foundation.util.nest.js", "../../../../node_modules/foundation-sites/js/foundation.util.timer.js", "../../../../node_modules/foundation-sites/js/foundation.util.touch.js", "../../../../node_modules/foundation-sites/js/foundation.util.triggers.js", "../../../../node_modules/foundation-sites/js/foundation.core.plugin.js", "../../../../node_modules/foundation-sites/js/foundation.abide.js", "../../../../node_modules/foundation-sites/js/foundation.accordion.js", "../../../../node_modules/foundation-sites/js/foundation.accordionMenu.js", "../../../../node_modules/foundation-sites/js/foundation.drilldown.js", "../../../../node_modules/foundation-sites/js/foundation.positionable.js", "../../../../node_modules/foundation-sites/js/foundation.dropdown.js", "../../../../node_modules/foundation-sites/js/foundation.dropdownMenu.js", "../../../../node_modules/foundation-sites/js/foundation.equalizer.js", "../../../../node_modules/foundation-sites/js/foundation.interchange.js", "../../../../node_modules/foundation-sites/js/foundation.smoothScroll.js", "../../../../node_modules/foundation-sites/js/foundation.magellan.js", "../../../../node_modules/foundation-sites/js/foundation.offcanvas.js", "../../../../node_modules/foundation-sites/js/foundation.orbit.js", "../../../../node_modules/foundation-sites/js/foundation.responsiveMenu.js", "../../../../node_modules/foundation-sites/js/foundation.responsiveToggle.js", "../../../../node_modules/foundation-sites/js/foundation.reveal.js", "../../../../node_modules/foundation-sites/js/foundation.slider.js", "../../../../node_modules/foundation-sites/js/foundation.sticky.js", "../../../../node_modules/foundation-sites/js/foundation.tabs.js", "../../../../node_modules/foundation-sites/js/foundation.toggler.js", "../../../../node_modules/foundation-sites/js/foundation.tooltip.js", "../../../../node_modules/foundation-sites/js/foundation.responsiveAccordionTabs.js", "../../../../node_modules/foundation-sites/js/entries/foundation.js", "../../../javascript/modernizr.js", "../../../javascript/oog/platform_detection.js", "../../../javascript/oog/topbar.js", "../../../../node_modules/@splidejs/splide/dist/js/splide.min.js", "../../../javascript/oog/splide.js", "../../../javascript/oog/modals.js", "../../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../../javascript/oog/controllers/change_account_details_controller.js", "../../../../node_modules/@rails/request.js/src/fetch_response.js", "../../../../node_modules/@rails/request.js/src/request_interceptor.js", "../../../../node_modules/@rails/request.js/src/lib/utils.js", "../../../../node_modules/@rails/request.js/src/fetch_request.js", "../../../../node_modules/@rails/request.js/src/verbs.js", "../../../javascript/oog/controllers/generate_parent_letters_controller.js", "../../../javascript/oog/controllers/class_code_controller.js", "../../../javascript/oog/controllers/empty_controller.js", "../../../javascript/oog/controllers/valid_controller.js", "../../../javascript/oog/controllers/generate_pdf_controller.js"],
  "sourcesContent": ["/*!\n * jQuery JavaScript Library v3.6.4\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-03-08T15:28Z\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\n\tversion = \"3.6.4\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.10\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2023-02-14\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || 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\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t// Make sure the 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/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\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\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\n\t\t\t// Support: IE <9 only\n\t\t\t// IE doesn't have `contains` on `document` so we need to check for\n\t\t\t// `documentElement` presence.\n\t\t\t// We need to fall back to `a` when `documentElement` is missing\n\t\t\t// as `ownerDocument` of elements within `<template/>` may have\n\t\t\t// a null one - a default behavior of all modern browsers.\n\t\t\tvar adown = a.nodeType === 9 && a.documentElement || a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = 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( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <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 Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <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.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See 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\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <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\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (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\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur 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\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// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase()  !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\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 Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar 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\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( 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 = \"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\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (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\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (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\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// 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.mouseenter( fnOver ).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", "/*\nTurbolinks 5.2.0\nCopyright \u00A9 2018 Basecamp, LLC\n */\n(function(){var t=this;(function(){(function(){this.Turbolinks={supported:function(){return null!=window.history.pushState&&null!=window.requestAnimationFrame&&null!=window.addEventListener}(),visit:function(t,r){return e.controller.visit(t,r)},clearCache:function(){return e.controller.clearCache()},setProgressBarDelay:function(t){return e.controller.setProgressBarDelay(t)}}}).call(this)}).call(t);var e=t.Turbolinks;(function(){(function(){var t,r,n,o=[].slice;e.copyObject=function(t){var e,r,n;r={};for(e in t)n=t[e],r[e]=n;return r},e.closest=function(e,r){return t.call(e,r)},t=function(){var t,e;return t=document.documentElement,null!=(e=t.closest)?e:function(t){var e;for(e=this;e;){if(e.nodeType===Node.ELEMENT_NODE&&r.call(e,t))return e;e=e.parentNode}}}(),e.defer=function(t){return setTimeout(t,1)},e.throttle=function(t){var e;return e=null,function(){var r;return r=1<=arguments.length?o.call(arguments,0):[],null!=e?e:e=requestAnimationFrame(function(n){return function(){return e=null,t.apply(n,r)}}(this))}},e.dispatch=function(t,e){var r,o,i,s,a,u;return a=null!=e?e:{},u=a.target,r=a.cancelable,o=a.data,i=document.createEvent(\"Events\"),i.initEvent(t,!0,r===!0),i.data=null!=o?o:{},i.cancelable&&!n&&(s=i.preventDefault,i.preventDefault=function(){return this.defaultPrevented||Object.defineProperty(this,\"defaultPrevented\",{get:function(){return!0}}),s.call(this)}),(null!=u?u:document).dispatchEvent(i),i},n=function(){var t;return t=document.createEvent(\"Events\"),t.initEvent(\"test\",!0,!0),t.preventDefault(),t.defaultPrevented}(),e.match=function(t,e){return r.call(t,e)},r=function(){var t,e,r,n;return t=document.documentElement,null!=(e=null!=(r=null!=(n=t.matchesSelector)?n:t.webkitMatchesSelector)?r:t.msMatchesSelector)?e:t.mozMatchesSelector}(),e.uuid=function(){var t,e,r;for(r=\"\",t=e=1;36>=e;t=++e)r+=9===t||14===t||19===t||24===t?\"-\":15===t?\"4\":20===t?(Math.floor(4*Math.random())+8).toString(16):Math.floor(15*Math.random()).toString(16);return r}}).call(this),function(){e.Location=function(){function t(t){var e,r;null==t&&(t=\"\"),r=document.createElement(\"a\"),r.href=t.toString(),this.absoluteURL=r.href,e=r.hash.length,2>e?this.requestURL=this.absoluteURL:(this.requestURL=this.absoluteURL.slice(0,-e),this.anchor=r.hash.slice(1))}var e,r,n,o;return t.wrap=function(t){return t instanceof this?t:new this(t)},t.prototype.getOrigin=function(){return this.absoluteURL.split(\"/\",3).join(\"/\")},t.prototype.getPath=function(){var t,e;return null!=(t=null!=(e=this.requestURL.match(/\\/\\/[^\\/]*(\\/[^?;]*)/))?e[1]:void 0)?t:\"/\"},t.prototype.getPathComponents=function(){return this.getPath().split(\"/\").slice(1)},t.prototype.getLastPathComponent=function(){return this.getPathComponents().slice(-1)[0]},t.prototype.getExtension=function(){var t,e;return null!=(t=null!=(e=this.getLastPathComponent().match(/\\.[^.]*$/))?e[0]:void 0)?t:\"\"},t.prototype.isHTML=function(){return this.getExtension().match(/^(?:|\\.(?:htm|html|xhtml))$/)},t.prototype.isPrefixedBy=function(t){var e;return e=r(t),this.isEqualTo(t)||o(this.absoluteURL,e)},t.prototype.isEqualTo=function(t){return this.absoluteURL===(null!=t?t.absoluteURL:void 0)},t.prototype.toCacheKey=function(){return this.requestURL},t.prototype.toJSON=function(){return this.absoluteURL},t.prototype.toString=function(){return this.absoluteURL},t.prototype.valueOf=function(){return this.absoluteURL},r=function(t){return e(t.getOrigin()+t.getPath())},e=function(t){return n(t,\"/\")?t:t+\"/\"},o=function(t,e){return t.slice(0,e.length)===e},n=function(t,e){return t.slice(-e.length)===e},t}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.HttpRequest=function(){function r(r,n,o){this.delegate=r,this.requestCanceled=t(this.requestCanceled,this),this.requestTimedOut=t(this.requestTimedOut,this),this.requestFailed=t(this.requestFailed,this),this.requestLoaded=t(this.requestLoaded,this),this.requestProgressed=t(this.requestProgressed,this),this.url=e.Location.wrap(n).requestURL,this.referrer=e.Location.wrap(o).absoluteURL,this.createXHR()}return r.NETWORK_FAILURE=0,r.TIMEOUT_FAILURE=-1,r.timeout=60,r.prototype.send=function(){var t;return this.xhr&&!this.sent?(this.notifyApplicationBeforeRequestStart(),this.setProgress(0),this.xhr.send(),this.sent=!0,\"function\"==typeof(t=this.delegate).requestStarted?t.requestStarted():void 0):void 0},r.prototype.cancel=function(){return this.xhr&&this.sent?this.xhr.abort():void 0},r.prototype.requestProgressed=function(t){return t.lengthComputable?this.setProgress(t.loaded/t.total):void 0},r.prototype.requestLoaded=function(){return this.endRequest(function(t){return function(){var e;return 200<=(e=t.xhr.status)&&300>e?t.delegate.requestCompletedWithResponse(t.xhr.responseText,t.xhr.getResponseHeader(\"Turbolinks-Location\")):(t.failed=!0,t.delegate.requestFailedWithStatusCode(t.xhr.status,t.xhr.responseText))}}(this))},r.prototype.requestFailed=function(){return this.endRequest(function(t){return function(){return t.failed=!0,t.delegate.requestFailedWithStatusCode(t.constructor.NETWORK_FAILURE)}}(this))},r.prototype.requestTimedOut=function(){return this.endRequest(function(t){return function(){return t.failed=!0,t.delegate.requestFailedWithStatusCode(t.constructor.TIMEOUT_FAILURE)}}(this))},r.prototype.requestCanceled=function(){return this.endRequest()},r.prototype.notifyApplicationBeforeRequestStart=function(){return e.dispatch(\"turbolinks:request-start\",{data:{url:this.url,xhr:this.xhr}})},r.prototype.notifyApplicationAfterRequestEnd=function(){return e.dispatch(\"turbolinks:request-end\",{data:{url:this.url,xhr:this.xhr}})},r.prototype.createXHR=function(){return this.xhr=new XMLHttpRequest,this.xhr.open(\"GET\",this.url,!0),this.xhr.timeout=1e3*this.constructor.timeout,this.xhr.setRequestHeader(\"Accept\",\"text/html, application/xhtml+xml\"),this.xhr.setRequestHeader(\"Turbolinks-Referrer\",this.referrer),this.xhr.onprogress=this.requestProgressed,this.xhr.onload=this.requestLoaded,this.xhr.onerror=this.requestFailed,this.xhr.ontimeout=this.requestTimedOut,this.xhr.onabort=this.requestCanceled},r.prototype.endRequest=function(t){return this.xhr?(this.notifyApplicationAfterRequestEnd(),null!=t&&t.call(this),this.destroy()):void 0},r.prototype.setProgress=function(t){var e;return this.progress=t,\"function\"==typeof(e=this.delegate).requestProgressed?e.requestProgressed(this.progress):void 0},r.prototype.destroy=function(){var t;return this.setProgress(1),\"function\"==typeof(t=this.delegate).requestFinished&&t.requestFinished(),this.delegate=null,this.xhr=null},r}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.ProgressBar=function(){function e(){this.trickle=t(this.trickle,this),this.stylesheetElement=this.createStylesheetElement(),this.progressElement=this.createProgressElement()}var r;return r=300,e.defaultCSS=\".turbolinks-progress-bar {\\n  position: fixed;\\n  display: block;\\n  top: 0;\\n  left: 0;\\n  height: 3px;\\n  background: #0076ff;\\n  z-index: 9999;\\n  transition: width \"+r+\"ms ease-out, opacity \"+r/2+\"ms \"+r/2+\"ms ease-in;\\n  transform: translate3d(0, 0, 0);\\n}\",e.prototype.show=function(){return this.visible?void 0:(this.visible=!0,this.installStylesheetElement(),this.installProgressElement(),this.startTrickling())},e.prototype.hide=function(){return this.visible&&!this.hiding?(this.hiding=!0,this.fadeProgressElement(function(t){return function(){return t.uninstallProgressElement(),t.stopTrickling(),t.visible=!1,t.hiding=!1}}(this))):void 0},e.prototype.setValue=function(t){return this.value=t,this.refresh()},e.prototype.installStylesheetElement=function(){return document.head.insertBefore(this.stylesheetElement,document.head.firstChild)},e.prototype.installProgressElement=function(){return this.progressElement.style.width=0,this.progressElement.style.opacity=1,document.documentElement.insertBefore(this.progressElement,document.body),this.refresh()},e.prototype.fadeProgressElement=function(t){return this.progressElement.style.opacity=0,setTimeout(t,1.5*r)},e.prototype.uninstallProgressElement=function(){return this.progressElement.parentNode?document.documentElement.removeChild(this.progressElement):void 0},e.prototype.startTrickling=function(){return null!=this.trickleInterval?this.trickleInterval:this.trickleInterval=setInterval(this.trickle,r)},e.prototype.stopTrickling=function(){return clearInterval(this.trickleInterval),this.trickleInterval=null},e.prototype.trickle=function(){return this.setValue(this.value+Math.random()/100)},e.prototype.refresh=function(){return requestAnimationFrame(function(t){return function(){return t.progressElement.style.width=10+90*t.value+\"%\"}}(this))},e.prototype.createStylesheetElement=function(){var t;return t=document.createElement(\"style\"),t.type=\"text/css\",t.textContent=this.constructor.defaultCSS,t},e.prototype.createProgressElement=function(){var t;return t=document.createElement(\"div\"),t.className=\"turbolinks-progress-bar\",t},e}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.BrowserAdapter=function(){function r(r){this.controller=r,this.showProgressBar=t(this.showProgressBar,this),this.progressBar=new e.ProgressBar}var n,o,i;return i=e.HttpRequest,n=i.NETWORK_FAILURE,o=i.TIMEOUT_FAILURE,r.prototype.visitProposedToLocationWithAction=function(t,e){return this.controller.startVisitToLocationWithAction(t,e)},r.prototype.visitStarted=function(t){return t.issueRequest(),t.changeHistory(),t.loadCachedSnapshot()},r.prototype.visitRequestStarted=function(t){return this.progressBar.setValue(0),t.hasCachedSnapshot()||\"restore\"!==t.action?this.showProgressBarAfterDelay():this.showProgressBar()},r.prototype.visitRequestProgressed=function(t){return this.progressBar.setValue(t.progress)},r.prototype.visitRequestCompleted=function(t){return t.loadResponse()},r.prototype.visitRequestFailedWithStatusCode=function(t,e){switch(e){case n:case o:return this.reload();default:return t.loadResponse()}},r.prototype.visitRequestFinished=function(t){return this.hideProgressBar()},r.prototype.visitCompleted=function(t){return t.followRedirect()},r.prototype.pageInvalidated=function(){return this.reload()},r.prototype.showProgressBarAfterDelay=function(){return this.progressBarTimeout=setTimeout(this.showProgressBar,this.controller.progressBarDelay)},r.prototype.showProgressBar=function(){return this.progressBar.show()},r.prototype.hideProgressBar=function(){return this.progressBar.hide(),clearTimeout(this.progressBarTimeout)},r.prototype.reload=function(){return window.location.reload()},r}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.History=function(){function r(e){this.delegate=e,this.onPageLoad=t(this.onPageLoad,this),this.onPopState=t(this.onPopState,this)}return r.prototype.start=function(){return this.started?void 0:(addEventListener(\"popstate\",this.onPopState,!1),addEventListener(\"load\",this.onPageLoad,!1),this.started=!0)},r.prototype.stop=function(){return this.started?(removeEventListener(\"popstate\",this.onPopState,!1),removeEventListener(\"load\",this.onPageLoad,!1),this.started=!1):void 0},r.prototype.push=function(t,r){return t=e.Location.wrap(t),this.update(\"push\",t,r)},r.prototype.replace=function(t,r){return t=e.Location.wrap(t),this.update(\"replace\",t,r)},r.prototype.onPopState=function(t){var r,n,o,i;return this.shouldHandlePopState()&&(i=null!=(n=t.state)?n.turbolinks:void 0)?(r=e.Location.wrap(window.location),o=i.restorationIdentifier,this.delegate.historyPoppedToLocationWithRestorationIdentifier(r,o)):void 0},r.prototype.onPageLoad=function(t){return e.defer(function(t){return function(){return t.pageLoaded=!0}}(this))},r.prototype.shouldHandlePopState=function(){return this.pageIsLoaded()},r.prototype.pageIsLoaded=function(){return this.pageLoaded||\"complete\"===document.readyState},r.prototype.update=function(t,e,r){var n;return n={turbolinks:{restorationIdentifier:r}},history[t+\"State\"](n,null,e)},r}()}.call(this),function(){e.HeadDetails=function(){function t(t){var e,r,n,s,a,u;for(this.elements={},n=0,a=t.length;a>n;n++)u=t[n],u.nodeType===Node.ELEMENT_NODE&&(s=u.outerHTML,r=null!=(e=this.elements)[s]?e[s]:e[s]={type:i(u),tracked:o(u),elements:[]},r.elements.push(u))}var e,r,n,o,i;return t.fromHeadElement=function(t){var e;return new this(null!=(e=null!=t?t.childNodes:void 0)?e:[])},t.prototype.hasElementWithKey=function(t){return t in this.elements},t.prototype.getTrackedElementSignature=function(){var t,e;return function(){var r,n;r=this.elements,n=[];for(t in r)e=r[t].tracked,e&&n.push(t);return n}.call(this).join(\"\")},t.prototype.getScriptElementsNotInDetails=function(t){return this.getElementsMatchingTypeNotInDetails(\"script\",t)},t.prototype.getStylesheetElementsNotInDetails=function(t){return this.getElementsMatchingTypeNotInDetails(\"stylesheet\",t)},t.prototype.getElementsMatchingTypeNotInDetails=function(t,e){var r,n,o,i,s,a;o=this.elements,s=[];for(n in o)i=o[n],a=i.type,r=i.elements,a!==t||e.hasElementWithKey(n)||s.push(r[0]);return s},t.prototype.getProvisionalElements=function(){var t,e,r,n,o,i,s;r=[],n=this.elements;for(e in n)o=n[e],s=o.type,i=o.tracked,t=o.elements,null!=s||i?t.length>1&&r.push.apply(r,t.slice(1)):r.push.apply(r,t);return r},t.prototype.getMetaValue=function(t){var e;return null!=(e=this.findMetaElementByName(t))?e.getAttribute(\"content\"):void 0},t.prototype.findMetaElementByName=function(t){var r,n,o,i;r=void 0,i=this.elements;for(o in i)n=i[o].elements,e(n[0],t)&&(r=n[0]);return r},i=function(t){return r(t)?\"script\":n(t)?\"stylesheet\":void 0},o=function(t){return\"reload\"===t.getAttribute(\"data-turbolinks-track\")},r=function(t){var e;return e=t.tagName.toLowerCase(),\"script\"===e},n=function(t){var e;return e=t.tagName.toLowerCase(),\"style\"===e||\"link\"===e&&\"stylesheet\"===t.getAttribute(\"rel\")},e=function(t,e){var r;return r=t.tagName.toLowerCase(),\"meta\"===r&&t.getAttribute(\"name\")===e},t}()}.call(this),function(){e.Snapshot=function(){function t(t,e){this.headDetails=t,this.bodyElement=e}return t.wrap=function(t){return t instanceof this?t:\"string\"==typeof t?this.fromHTMLString(t):this.fromHTMLElement(t)},t.fromHTMLString=function(t){var e;return e=document.createElement(\"html\"),e.innerHTML=t,this.fromHTMLElement(e)},t.fromHTMLElement=function(t){var r,n,o,i;return o=t.querySelector(\"head\"),r=null!=(i=t.querySelector(\"body\"))?i:document.createElement(\"body\"),n=e.HeadDetails.fromHeadElement(o),new this(n,r)},t.prototype.clone=function(){return new this.constructor(this.headDetails,this.bodyElement.cloneNode(!0))},t.prototype.getRootLocation=function(){var t,r;return r=null!=(t=this.getSetting(\"root\"))?t:\"/\",new e.Location(r)},t.prototype.getCacheControlValue=function(){return this.getSetting(\"cache-control\")},t.prototype.getElementForAnchor=function(t){try{return this.bodyElement.querySelector(\"[id='\"+t+\"'], a[name='\"+t+\"']\")}catch(e){}},t.prototype.getPermanentElements=function(){return this.bodyElement.querySelectorAll(\"[id][data-turbolinks-permanent]\")},t.prototype.getPermanentElementById=function(t){return this.bodyElement.querySelector(\"#\"+t+\"[data-turbolinks-permanent]\")},t.prototype.getPermanentElementsPresentInSnapshot=function(t){var e,r,n,o,i;for(o=this.getPermanentElements(),i=[],r=0,n=o.length;n>r;r++)e=o[r],t.getPermanentElementById(e.id)&&i.push(e);return i},t.prototype.findFirstAutofocusableElement=function(){return this.bodyElement.querySelector(\"[autofocus]\")},t.prototype.hasAnchor=function(t){return null!=this.getElementForAnchor(t)},t.prototype.isPreviewable=function(){return\"no-preview\"!==this.getCacheControlValue()},t.prototype.isCacheable=function(){return\"no-cache\"!==this.getCacheControlValue()},t.prototype.isVisitable=function(){return\"reload\"!==this.getSetting(\"visit-control\")},t.prototype.getSetting=function(t){return this.headDetails.getMetaValue(\"turbolinks-\"+t)},t}()}.call(this),function(){var t=[].slice;e.Renderer=function(){function e(){}var r;return e.render=function(){var e,r,n,o;return n=arguments[0],r=arguments[1],e=3<=arguments.length?t.call(arguments,2):[],o=function(t,e,r){r.prototype=t.prototype;var n=new r,o=t.apply(n,e);return Object(o)===o?o:n}(this,e,function(){}),o.delegate=n,o.render(r),o},e.prototype.renderView=function(t){return this.delegate.viewWillRender(this.newBody),t(),this.delegate.viewRendered(this.newBody)},e.prototype.invalidateView=function(){return this.delegate.viewInvalidated()},e.prototype.createScriptElement=function(t){var e;return\"false\"===t.getAttribute(\"data-turbolinks-eval\")?t:(e=document.createElement(\"script\"),e.textContent=t.textContent,e.async=!1,r(e,t),e)},r=function(t,e){var r,n,o,i,s,a,u;for(i=e.attributes,a=[],r=0,n=i.length;n>r;r++)s=i[r],o=s.name,u=s.value,a.push(t.setAttribute(o,u));return a},e}()}.call(this),function(){var t,r,n=function(t,e){function r(){this.constructor=t}for(var n in e)o.call(e,n)&&(t[n]=e[n]);return r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype,t},o={}.hasOwnProperty;e.SnapshotRenderer=function(e){function o(t,e,r){this.currentSnapshot=t,this.newSnapshot=e,this.isPreview=r,this.currentHeadDetails=this.currentSnapshot.headDetails,this.newHeadDetails=this.newSnapshot.headDetails,this.currentBody=this.currentSnapshot.bodyElement,this.newBody=this.newSnapshot.bodyElement}return n(o,e),o.prototype.render=function(t){return this.shouldRender()?(this.mergeHead(),this.renderView(function(e){return function(){return e.replaceBody(),e.isPreview||e.focusFirstAutofocusableElement(),t()}}(this))):this.invalidateView()},o.prototype.mergeHead=function(){return this.copyNewHeadStylesheetElements(),this.copyNewHeadScriptElements(),this.removeCurrentHeadProvisionalElements(),this.copyNewHeadProvisionalElements()},o.prototype.replaceBody=function(){var t;return t=this.relocateCurrentBodyPermanentElements(),this.activateNewBodyScriptElements(),this.assignNewBody(),this.replacePlaceholderElementsWithClonedPermanentElements(t)},o.prototype.shouldRender=function(){return this.newSnapshot.isVisitable()&&this.trackedElementsAreIdentical()},o.prototype.trackedElementsAreIdentical=function(){return this.currentHeadDetails.getTrackedElementSignature()===this.newHeadDetails.getTrackedElementSignature()},o.prototype.copyNewHeadStylesheetElements=function(){var t,e,r,n,o;for(n=this.getNewHeadStylesheetElements(),o=[],e=0,r=n.length;r>e;e++)t=n[e],o.push(document.head.appendChild(t));return o},o.prototype.copyNewHeadScriptElements=function(){var t,e,r,n,o;for(n=this.getNewHeadScriptElements(),o=[],e=0,r=n.length;r>e;e++)t=n[e],o.push(document.head.appendChild(this.createScriptElement(t)));return o},o.prototype.removeCurrentHeadProvisionalElements=function(){var t,e,r,n,o;for(n=this.getCurrentHeadProvisionalElements(),o=[],e=0,r=n.length;r>e;e++)t=n[e],o.push(document.head.removeChild(t));return o},o.prototype.copyNewHeadProvisionalElements=function(){var t,e,r,n,o;for(n=this.getNewHeadProvisionalElements(),o=[],e=0,r=n.length;r>e;e++)t=n[e],o.push(document.head.appendChild(t));return o},o.prototype.relocateCurrentBodyPermanentElements=function(){var e,n,o,i,s,a,u;for(a=this.getCurrentBodyPermanentElements(),u=[],e=0,n=a.length;n>e;e++)i=a[e],s=t(i),o=this.newSnapshot.getPermanentElementById(i.id),r(i,s.element),r(o,i),u.push(s);return u},o.prototype.replacePlaceholderElementsWithClonedPermanentElements=function(t){var e,n,o,i,s,a,u;for(u=[],o=0,i=t.length;i>o;o++)a=t[o],n=a.element,s=a.permanentElement,e=s.cloneNode(!0),u.push(r(n,e));return u},o.prototype.activateNewBodyScriptElements=function(){var t,e,n,o,i,s;for(i=this.getNewBodyScriptElements(),s=[],e=0,o=i.length;o>e;e++)n=i[e],t=this.createScriptElement(n),s.push(r(n,t));return s},o.prototype.assignNewBody=function(){return document.body=this.newBody},o.prototype.focusFirstAutofocusableElement=function(){var t;return null!=(t=this.newSnapshot.findFirstAutofocusableElement())?t.focus():void 0},o.prototype.getNewHeadStylesheetElements=function(){return this.newHeadDetails.getStylesheetElementsNotInDetails(this.currentHeadDetails)},o.prototype.getNewHeadScriptElements=function(){return this.newHeadDetails.getScriptElementsNotInDetails(this.currentHeadDetails)},o.prototype.getCurrentHeadProvisionalElements=function(){return this.currentHeadDetails.getProvisionalElements()},o.prototype.getNewHeadProvisionalElements=function(){return this.newHeadDetails.getProvisionalElements()},o.prototype.getCurrentBodyPermanentElements=function(){return this.currentSnapshot.getPermanentElementsPresentInSnapshot(this.newSnapshot)},o.prototype.getNewBodyScriptElements=function(){return this.newBody.querySelectorAll(\"script\")},o}(e.Renderer),t=function(t){var e;return e=document.createElement(\"meta\"),e.setAttribute(\"name\",\"turbolinks-permanent-placeholder\"),e.setAttribute(\"content\",t.id),{element:e,permanentElement:t}},r=function(t,e){var r;return(r=t.parentNode)?r.replaceChild(e,t):void 0}}.call(this),function(){var t=function(t,e){function n(){this.constructor=t}for(var o in e)r.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},r={}.hasOwnProperty;e.ErrorRenderer=function(e){function r(t){var e;e=document.createElement(\"html\"),e.innerHTML=t,this.newHead=e.querySelector(\"head\"),this.newBody=e.querySelector(\"body\")}return t(r,e),r.prototype.render=function(t){return this.renderView(function(e){return function(){return e.replaceHeadAndBody(),e.activateBodyScriptElements(),t()}}(this))},r.prototype.replaceHeadAndBody=function(){var t,e;return e=document.head,t=document.body,e.parentNode.replaceChild(this.newHead,e),t.parentNode.replaceChild(this.newBody,t)},r.prototype.activateBodyScriptElements=function(){var t,e,r,n,o,i;for(n=this.getScriptElements(),i=[],e=0,r=n.length;r>e;e++)o=n[e],t=this.createScriptElement(o),i.push(o.parentNode.replaceChild(t,o));return i},r.prototype.getScriptElements=function(){return document.documentElement.querySelectorAll(\"script\")},r}(e.Renderer)}.call(this),function(){e.View=function(){function t(t){this.delegate=t,this.htmlElement=document.documentElement}return t.prototype.getRootLocation=function(){return this.getSnapshot().getRootLocation()},t.prototype.getElementForAnchor=function(t){return this.getSnapshot().getElementForAnchor(t)},t.prototype.getSnapshot=function(){return e.Snapshot.fromHTMLElement(this.htmlElement)},t.prototype.render=function(t,e){var r,n,o;return o=t.snapshot,r=t.error,n=t.isPreview,this.markAsPreview(n),null!=o?this.renderSnapshot(o,n,e):this.renderError(r,e)},t.prototype.markAsPreview=function(t){return t?this.htmlElement.setAttribute(\"data-turbolinks-preview\",\"\"):this.htmlElement.removeAttribute(\"data-turbolinks-preview\")},t.prototype.renderSnapshot=function(t,r,n){return e.SnapshotRenderer.render(this.delegate,n,this.getSnapshot(),e.Snapshot.wrap(t),r)},t.prototype.renderError=function(t,r){return e.ErrorRenderer.render(this.delegate,r,t)},t}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.ScrollManager=function(){function r(r){this.delegate=r,this.onScroll=t(this.onScroll,this),this.onScroll=e.throttle(this.onScroll)}return r.prototype.start=function(){return this.started?void 0:(addEventListener(\"scroll\",this.onScroll,!1),this.onScroll(),this.started=!0)},r.prototype.stop=function(){return this.started?(removeEventListener(\"scroll\",this.onScroll,!1),this.started=!1):void 0},r.prototype.scrollToElement=function(t){return t.scrollIntoView()},r.prototype.scrollToPosition=function(t){var e,r;return e=t.x,r=t.y,window.scrollTo(e,r)},r.prototype.onScroll=function(t){return this.updatePosition({x:window.pageXOffset,y:window.pageYOffset})},r.prototype.updatePosition=function(t){var e;return this.position=t,null!=(e=this.delegate)?e.scrollPositionChanged(this.position):void 0},r}()}.call(this),function(){e.SnapshotCache=function(){function t(t){this.size=t,this.keys=[],this.snapshots={}}var r;return t.prototype.has=function(t){var e;return e=r(t),e in this.snapshots},t.prototype.get=function(t){var e;if(this.has(t))return e=this.read(t),this.touch(t),e},t.prototype.put=function(t,e){return this.write(t,e),this.touch(t),e},t.prototype.read=function(t){var e;return e=r(t),this.snapshots[e]},t.prototype.write=function(t,e){var n;return n=r(t),this.snapshots[n]=e},t.prototype.touch=function(t){var e,n;return n=r(t),e=this.keys.indexOf(n),e>-1&&this.keys.splice(e,1),this.keys.unshift(n),this.trim()},t.prototype.trim=function(){var t,e,r,n,o;for(n=this.keys.splice(this.size),o=[],t=0,r=n.length;r>t;t++)e=n[t],o.push(delete this.snapshots[e]);return o},r=function(t){return e.Location.wrap(t).toCacheKey()},t}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.Visit=function(){function r(r,n,o){this.controller=r,this.action=o,this.performScroll=t(this.performScroll,this),this.identifier=e.uuid(),this.location=e.Location.wrap(n),this.adapter=this.controller.adapter,this.state=\"initialized\",this.timingMetrics={}}var n;return r.prototype.start=function(){return\"initialized\"===this.state?(this.recordTimingMetric(\"visitStart\"),this.state=\"started\",this.adapter.visitStarted(this)):void 0},r.prototype.cancel=function(){var t;return\"started\"===this.state?(null!=(t=this.request)&&t.cancel(),this.cancelRender(),this.state=\"canceled\"):void 0},r.prototype.complete=function(){var t;return\"started\"===this.state?(this.recordTimingMetric(\"visitEnd\"),this.state=\"completed\",\"function\"==typeof(t=this.adapter).visitCompleted&&t.visitCompleted(this),this.controller.visitCompleted(this)):void 0},r.prototype.fail=function(){var t;return\"started\"===this.state?(this.state=\"failed\",\"function\"==typeof(t=this.adapter).visitFailed?t.visitFailed(this):void 0):void 0},r.prototype.changeHistory=function(){var t,e;return this.historyChanged?void 0:(t=this.location.isEqualTo(this.referrer)?\"replace\":this.action,e=n(t),this.controller[e](this.location,this.restorationIdentifier),this.historyChanged=!0)},r.prototype.issueRequest=function(){return this.shouldIssueRequest()&&null==this.request?(this.progress=0,this.request=new e.HttpRequest(this,this.location,this.referrer),this.request.send()):void 0},r.prototype.getCachedSnapshot=function(){var t;return!(t=this.controller.getCachedSnapshotForLocation(this.location))||null!=this.location.anchor&&!t.hasAnchor(this.location.anchor)||\"restore\"!==this.action&&!t.isPreviewable()?void 0:t},r.prototype.hasCachedSnapshot=function(){return null!=this.getCachedSnapshot()},r.prototype.loadCachedSnapshot=function(){var t,e;return(e=this.getCachedSnapshot())?(t=this.shouldIssueRequest(),this.render(function(){var r;return this.cacheSnapshot(),this.controller.render({snapshot:e,isPreview:t},this.performScroll),\"function\"==typeof(r=this.adapter).visitRendered&&r.visitRendered(this),t?void 0:this.complete()})):void 0},r.prototype.loadResponse=function(){return null!=this.response?this.render(function(){var t,e;return this.cacheSnapshot(),this.request.failed?(this.controller.render({error:this.response},this.performScroll),\"function\"==typeof(t=this.adapter).visitRendered&&t.visitRendered(this),this.fail()):(this.controller.render({snapshot:this.response},this.performScroll),\"function\"==typeof(e=this.adapter).visitRendered&&e.visitRendered(this),this.complete())}):void 0},r.prototype.followRedirect=function(){return this.redirectedToLocation&&!this.followedRedirect?(this.location=this.redirectedToLocation,this.controller.replaceHistoryWithLocationAndRestorationIdentifier(this.redirectedToLocation,this.restorationIdentifier),this.followedRedirect=!0):void 0},r.prototype.requestStarted=function(){var t;return this.recordTimingMetric(\"requestStart\"),\"function\"==typeof(t=this.adapter).visitRequestStarted?t.visitRequestStarted(this):void 0},r.prototype.requestProgressed=function(t){var e;return this.progress=t,\"function\"==typeof(e=this.adapter).visitRequestProgressed?e.visitRequestProgressed(this):void 0},r.prototype.requestCompletedWithResponse=function(t,r){return this.response=t,null!=r&&(this.redirectedToLocation=e.Location.wrap(r)),this.adapter.visitRequestCompleted(this)},r.prototype.requestFailedWithStatusCode=function(t,e){return this.response=e,this.adapter.visitRequestFailedWithStatusCode(this,t)},r.prototype.requestFinished=function(){var t;return this.recordTimingMetric(\"requestEnd\"),\"function\"==typeof(t=this.adapter).visitRequestFinished?t.visitRequestFinished(this):void 0},r.prototype.performScroll=function(){return this.scrolled?void 0:(\"restore\"===this.action?this.scrollToRestoredPosition()||this.scrollToTop():this.scrollToAnchor()||this.scrollToTop(),this.scrolled=!0)},r.prototype.scrollToRestoredPosition=function(){var t,e;return t=null!=(e=this.restorationData)?e.scrollPosition:void 0,null!=t?(this.controller.scrollToPosition(t),!0):void 0},r.prototype.scrollToAnchor=function(){return null!=this.location.anchor?(this.controller.scrollToAnchor(this.location.anchor),!0):void 0},r.prototype.scrollToTop=function(){return this.controller.scrollToPosition({x:0,y:0})},r.prototype.recordTimingMetric=function(t){var e;return null!=(e=this.timingMetrics)[t]?e[t]:e[t]=(new Date).getTime()},r.prototype.getTimingMetrics=function(){return e.copyObject(this.timingMetrics)},n=function(t){switch(t){case\"replace\":return\"replaceHistoryWithLocationAndRestorationIdentifier\";case\"advance\":case\"restore\":return\"pushHistoryWithLocationAndRestorationIdentifier\"}},r.prototype.shouldIssueRequest=function(){return\"restore\"===this.action?!this.hasCachedSnapshot():!0},r.prototype.cacheSnapshot=function(){return this.snapshotCached?void 0:(this.controller.cacheSnapshot(),this.snapshotCached=!0)},r.prototype.render=function(t){return this.cancelRender(),this.frame=requestAnimationFrame(function(e){return function(){return e.frame=null,t.call(e)}}(this))},r.prototype.cancelRender=function(){return this.frame?cancelAnimationFrame(this.frame):void 0},r}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.Controller=function(){function r(){this.clickBubbled=t(this.clickBubbled,this),this.clickCaptured=t(this.clickCaptured,this),this.pageLoaded=t(this.pageLoaded,this),this.history=new e.History(this),this.view=new e.View(this),this.scrollManager=new e.ScrollManager(this),this.restorationData={},this.clearCache(),this.setProgressBarDelay(500)}return r.prototype.start=function(){return e.supported&&!this.started?(addEventListener(\"click\",this.clickCaptured,!0),addEventListener(\"DOMContentLoaded\",this.pageLoaded,!1),this.scrollManager.start(),this.startHistory(),this.started=!0,this.enabled=!0):void 0},r.prototype.disable=function(){return this.enabled=!1},r.prototype.stop=function(){return this.started?(removeEventListener(\"click\",this.clickCaptured,!0),removeEventListener(\"DOMContentLoaded\",this.pageLoaded,!1),this.scrollManager.stop(),this.stopHistory(),this.started=!1):void 0},r.prototype.clearCache=function(){return this.cache=new e.SnapshotCache(10)},r.prototype.visit=function(t,r){var n,o;return null==r&&(r={}),t=e.Location.wrap(t),this.applicationAllowsVisitingLocation(t)?this.locationIsVisitable(t)?(n=null!=(o=r.action)?o:\"advance\",this.adapter.visitProposedToLocationWithAction(t,n)):window.location=t:void 0},r.prototype.startVisitToLocationWithAction=function(t,r,n){var o;return e.supported?(o=this.getRestorationDataForIdentifier(n),this.startVisit(t,r,{restorationData:o})):window.location=t},r.prototype.setProgressBarDelay=function(t){return this.progressBarDelay=t},r.prototype.startHistory=function(){return this.location=e.Location.wrap(window.location),this.restorationIdentifier=e.uuid(),this.history.start(),this.history.replace(this.location,this.restorationIdentifier)},r.prototype.stopHistory=function(){return this.history.stop()},r.prototype.pushHistoryWithLocationAndRestorationIdentifier=function(t,r){return this.restorationIdentifier=r,this.location=e.Location.wrap(t),this.history.push(this.location,this.restorationIdentifier)},r.prototype.replaceHistoryWithLocationAndRestorationIdentifier=function(t,r){return this.restorationIdentifier=r,this.location=e.Location.wrap(t),this.history.replace(this.location,this.restorationIdentifier)},r.prototype.historyPoppedToLocationWithRestorationIdentifier=function(t,r){var n;return this.restorationIdentifier=r,this.enabled?(n=this.getRestorationDataForIdentifier(this.restorationIdentifier),this.startVisit(t,\"restore\",{restorationIdentifier:this.restorationIdentifier,restorationData:n,historyChanged:!0}),this.location=e.Location.wrap(t)):this.adapter.pageInvalidated()},r.prototype.getCachedSnapshotForLocation=function(t){var e;return null!=(e=this.cache.get(t))?e.clone():void 0},r.prototype.shouldCacheSnapshot=function(){return this.view.getSnapshot().isCacheable();\n},r.prototype.cacheSnapshot=function(){var t,r;return this.shouldCacheSnapshot()?(this.notifyApplicationBeforeCachingSnapshot(),r=this.view.getSnapshot(),t=this.lastRenderedLocation,e.defer(function(e){return function(){return e.cache.put(t,r.clone())}}(this))):void 0},r.prototype.scrollToAnchor=function(t){var e;return(e=this.view.getElementForAnchor(t))?this.scrollToElement(e):this.scrollToPosition({x:0,y:0})},r.prototype.scrollToElement=function(t){return this.scrollManager.scrollToElement(t)},r.prototype.scrollToPosition=function(t){return this.scrollManager.scrollToPosition(t)},r.prototype.scrollPositionChanged=function(t){var e;return e=this.getCurrentRestorationData(),e.scrollPosition=t},r.prototype.render=function(t,e){return this.view.render(t,e)},r.prototype.viewInvalidated=function(){return this.adapter.pageInvalidated()},r.prototype.viewWillRender=function(t){return this.notifyApplicationBeforeRender(t)},r.prototype.viewRendered=function(){return this.lastRenderedLocation=this.currentVisit.location,this.notifyApplicationAfterRender()},r.prototype.pageLoaded=function(){return this.lastRenderedLocation=this.location,this.notifyApplicationAfterPageLoad()},r.prototype.clickCaptured=function(){return removeEventListener(\"click\",this.clickBubbled,!1),addEventListener(\"click\",this.clickBubbled,!1)},r.prototype.clickBubbled=function(t){var e,r,n;return this.enabled&&this.clickEventIsSignificant(t)&&(r=this.getVisitableLinkForNode(t.target))&&(n=this.getVisitableLocationForLink(r))&&this.applicationAllowsFollowingLinkToLocation(r,n)?(t.preventDefault(),e=this.getActionForLink(r),this.visit(n,{action:e})):void 0},r.prototype.applicationAllowsFollowingLinkToLocation=function(t,e){var r;return r=this.notifyApplicationAfterClickingLinkToLocation(t,e),!r.defaultPrevented},r.prototype.applicationAllowsVisitingLocation=function(t){var e;return e=this.notifyApplicationBeforeVisitingLocation(t),!e.defaultPrevented},r.prototype.notifyApplicationAfterClickingLinkToLocation=function(t,r){return e.dispatch(\"turbolinks:click\",{target:t,data:{url:r.absoluteURL},cancelable:!0})},r.prototype.notifyApplicationBeforeVisitingLocation=function(t){return e.dispatch(\"turbolinks:before-visit\",{data:{url:t.absoluteURL},cancelable:!0})},r.prototype.notifyApplicationAfterVisitingLocation=function(t){return e.dispatch(\"turbolinks:visit\",{data:{url:t.absoluteURL}})},r.prototype.notifyApplicationBeforeCachingSnapshot=function(){return e.dispatch(\"turbolinks:before-cache\")},r.prototype.notifyApplicationBeforeRender=function(t){return e.dispatch(\"turbolinks:before-render\",{data:{newBody:t}})},r.prototype.notifyApplicationAfterRender=function(){return e.dispatch(\"turbolinks:render\")},r.prototype.notifyApplicationAfterPageLoad=function(t){return null==t&&(t={}),e.dispatch(\"turbolinks:load\",{data:{url:this.location.absoluteURL,timing:t}})},r.prototype.startVisit=function(t,e,r){var n;return null!=(n=this.currentVisit)&&n.cancel(),this.currentVisit=this.createVisit(t,e,r),this.currentVisit.start(),this.notifyApplicationAfterVisitingLocation(t)},r.prototype.createVisit=function(t,r,n){var o,i,s,a,u;return i=null!=n?n:{},a=i.restorationIdentifier,s=i.restorationData,o=i.historyChanged,u=new e.Visit(this,t,r),u.restorationIdentifier=null!=a?a:e.uuid(),u.restorationData=e.copyObject(s),u.historyChanged=o,u.referrer=this.location,u},r.prototype.visitCompleted=function(t){return this.notifyApplicationAfterPageLoad(t.getTimingMetrics())},r.prototype.clickEventIsSignificant=function(t){return!(t.defaultPrevented||t.target.isContentEditable||t.which>1||t.altKey||t.ctrlKey||t.metaKey||t.shiftKey)},r.prototype.getVisitableLinkForNode=function(t){return this.nodeIsVisitable(t)?e.closest(t,\"a[href]:not([target]):not([download])\"):void 0},r.prototype.getVisitableLocationForLink=function(t){var r;return r=new e.Location(t.getAttribute(\"href\")),this.locationIsVisitable(r)?r:void 0},r.prototype.getActionForLink=function(t){var e;return null!=(e=t.getAttribute(\"data-turbolinks-action\"))?e:\"advance\"},r.prototype.nodeIsVisitable=function(t){var r;return(r=e.closest(t,\"[data-turbolinks]\"))?\"false\"!==r.getAttribute(\"data-turbolinks\"):!0},r.prototype.locationIsVisitable=function(t){return t.isPrefixedBy(this.view.getRootLocation())&&t.isHTML()},r.prototype.getCurrentRestorationData=function(){return this.getRestorationDataForIdentifier(this.restorationIdentifier)},r.prototype.getRestorationDataForIdentifier=function(t){var e;return null!=(e=this.restorationData)[t]?e[t]:e[t]={}},r}()}.call(this),function(){!function(){var t,e;if((t=e=document.currentScript)&&!e.hasAttribute(\"data-turbolinks-suppress-warning\"))for(;t=t.parentNode;)if(t===document.body)return console.warn(\"You are loading Turbolinks from a <script> element inside the <body> element. This is probably not what you meant to do!\\n\\nLoad your application\\u2019s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\\n\\nFor more information, see: https://github.com/turbolinks/turbolinks#working-with-script-elements\\n\\n\\u2014\\u2014\\nSuppress this warning by adding a `data-turbolinks-suppress-warning` attribute to: %s\",e.outerHTML)}()}.call(this),function(){var t,r,n;e.start=function(){return r()?(null==e.controller&&(e.controller=t()),e.controller.start()):void 0},r=function(){return null==window.Turbolinks&&(window.Turbolinks=e),n()},t=function(){var t;return t=new e.Controller,t.adapter=new e.BrowserAdapter(t),t},n=function(){return window.Turbolinks===e},n()&&e.start()}.call(this)}).call(this),\"object\"==typeof module&&module.exports?module.exports=e:\"function\"==typeof define&&define.amd&&define(e)}).call(this);", "import $ from \"jquery\";\nimport \"foundation-sites\";\n\nimport jqueryUjsInit from \"jquery-ujs\";\njqueryUjsInit($);\n\nimport Turbolinks from \"turbolinks\";\nTurbolinks.start();\n\nconst afterLoadHooks = new Map();\n\nfunction registerAfterLoadHook(id, callback) {\n  afterLoadHooks.set(id, callback);\n}\n\nwindow.registerAfterLoadHook = registerAfterLoadHook;\n\ndocument.addEventListener(\"turbolinks:load\", () => {\n  window.scrollTo(0, 0);\n\n  afterLoadHooks.forEach((callback) => {\n    try {\n      callback();\n    } catch (e) {\n      console.error(e);\n    }\n  });\n\n  $(document).foundation();\n});\n\nimport \"../modernizr\";\nimport \"./platform_detection\";\nimport \"./topbar\";\nimport \"./splide\";\nimport \"./modals\";\n\nimport { Application } from \"@hotwired/stimulus\";\nimport ChangeAccountDetailsController from \"./controllers/change_account_details_controller\";\nimport GenerateParentLettersController from \"./controllers/generate_parent_letters_controller\";\nimport ClassCodeController from \"./controllers/class_code_controller\";\nimport EmptyController from \"./controllers/empty_controller\";\nimport ValidController from \"./controllers/valid_controller\";\nimport GeneratePdfController from \"./controllers/generate_pdf_controller\";\n\nwindow.Stimulus = Application.start();\nStimulus.register(\"change-account-details\", ChangeAccountDetailsController);\nStimulus.register(\"generate-parent-letters\", GenerateParentLettersController);\nStimulus.register(\"class-code\", ClassCodeController);\nStimulus.register(\"empty\", EmptyController);\nStimulus.register(\"valid\", ValidController);\nStimulus.register(\"generate-pdf\", GeneratePdfController);\n", "import $ from 'jquery';\n\n// Core Foundation Utilities, utilized in a number of places.\n\n  /**\n   * Returns a boolean for RTL support\n   */\nfunction rtl() {\n  return $('html').attr('dir') === 'rtl';\n}\n\n/**\n * returns a random base-36 uid with namespacing\n * @function\n * @param {Number} length - number of random base-36 digits desired. Increase for more random strings.\n * @param {String} namespace - name of plugin to be incorporated in uid, optional.\n * @default {String} '' - if no plugin name is provided, nothing is appended to the uid.\n * @returns {String} - unique id\n */\nfunction GetYoDigits(length = 6, namespace){\n  let str = '';\n  const chars = '0123456789abcdefghijklmnopqrstuvwxyz';\n  const charsLength = chars.length;\n  for (let i = 0; i < length; i++) {\n    str += chars[Math.floor(Math.random() * charsLength)];\n  }\n  return namespace ? `${str}-${namespace}` : str;\n}\n\n/**\n * Escape a string so it can be used as a regexp pattern\n * @function\n * @see https://stackoverflow.com/a/9310752/4317384\n *\n * @param {String} str - string to escape.\n * @returns {String} - escaped string\n */\nfunction RegExpEscape(str){\n  return str.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\nfunction transitionend($elem){\n  var transitions = {\n    'transition': 'transitionend',\n    'WebkitTransition': 'webkitTransitionEnd',\n    'MozTransition': 'transitionend',\n    'OTransition': 'otransitionend'\n  };\n  var elem = document.createElement('div'),\n      end;\n\n  for (let transition in transitions){\n    if (typeof elem.style[transition] !== 'undefined'){\n      end = transitions[transition];\n    }\n  }\n  if (end) {\n    return end;\n  } else {\n    setTimeout(function(){\n      $elem.triggerHandler('transitionend', [$elem]);\n    }, 1);\n    return 'transitionend';\n  }\n}\n\n/**\n * Return an event type to listen for window load.\n *\n * If `$elem` is passed, an event will be triggered on `$elem`. If window is already loaded, the event will still be triggered.\n * If `handler` is passed, attach it to the event on `$elem`.\n * Calling `onLoad` without handler allows you to get the event type that will be triggered before attaching the handler by yourself.\n * @function\n *\n * @param {Object} [] $elem - jQuery element on which the event will be triggered if passed.\n * @param {Function} [] handler - function to attach to the event.\n * @returns {String} - event type that should or will be triggered.\n */\nfunction onLoad($elem, handler) {\n  const didLoad = document.readyState === 'complete';\n  const eventType = (didLoad ? '_didLoad' : 'load') + '.zf.util.onLoad';\n  const cb = () => $elem.triggerHandler(eventType);\n\n  if ($elem) {\n    if (handler) $elem.one(eventType, handler);\n\n    if (didLoad)\n      setTimeout(cb);\n    else\n      $(window).one('load', cb);\n  }\n\n  return eventType;\n}\n\n/**\n * Retuns an handler for the `mouseleave` that ignore disappeared mouses.\n *\n * If the mouse \"disappeared\" from the document (like when going on a browser UI element, See https://git.io/zf-11410),\n * the event is ignored.\n * - If the `ignoreLeaveWindow` is `true`, the event is ignored when the user actually left the window\n *   (like by switching to an other window with [Alt]+[Tab]).\n * - If the `ignoreReappear` is `true`, the event will be ignored when the mouse will reappear later on the document\n *   outside of the element it left.\n *\n * @function\n *\n * @param {Function} [] handler - handler for the filtered `mouseleave` event to watch.\n * @param {Object} [] options - object of options:\n * - {Boolean} [false] ignoreLeaveWindow - also ignore when the user switched windows.\n * - {Boolean} [false] ignoreReappear - also ignore when the mouse reappeared outside of the element it left.\n * @returns {Function} - filtered handler to use to listen on the `mouseleave` event.\n */\nfunction ignoreMousedisappear(handler, { ignoreLeaveWindow = false, ignoreReappear = false } = {}) {\n  return function leaveEventHandler(eLeave, ...rest) {\n    const callback = handler.bind(this, eLeave, ...rest);\n\n    // The mouse left: call the given callback if the mouse entered elsewhere\n    if (eLeave.relatedTarget !== null) {\n      return callback();\n    }\n\n    // Otherwise, check if the mouse actually left the window.\n    // In firefox if the user switched between windows, the window sill have the focus by the time\n    // the event is triggered. We have to debounce the event to test this case.\n    setTimeout(function leaveEventDebouncer() {\n      if (!ignoreLeaveWindow && document.hasFocus && !document.hasFocus()) {\n        return callback();\n      }\n\n      // Otherwise, wait for the mouse to reeapear outside of the element,\n      if (!ignoreReappear) {\n        $(document).one('mouseenter', function reenterEventHandler(eReenter) {\n          if (!$(eLeave.currentTarget).has(eReenter.target).length) {\n            // Fill where the mouse finally entered.\n            eLeave.relatedTarget = eReenter.target;\n            callback();\n          }\n        });\n      }\n\n    }, 0);\n  };\n}\n\n\nexport { rtl, GetYoDigits, RegExpEscape, transitionend, onLoad, ignoreMousedisappear };\n", "import $ from 'jquery';\n\n// Default set of media queries\n// const defaultQueries = {\n//   'default' : 'only screen',\n//   landscape : 'only screen and (orientation: landscape)',\n//   portrait : 'only screen and (orientation: portrait)',\n//   retina : 'only screen and (-webkit-min-device-pixel-ratio: 2),' +\n//     'only screen and (min--moz-device-pixel-ratio: 2),' +\n//     'only screen and (-o-min-device-pixel-ratio: 2/1),' +\n//     'only screen and (min-device-pixel-ratio: 2),' +\n//     'only screen and (min-resolution: 192dpi),' +\n//     'only screen and (min-resolution: 2dppx)'\n//   };\n\n\n// matchMedia() polyfill - Test a CSS media type/query in JS.\n// Authors & copyright © 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. MIT license\n/* eslint-disable */\nwindow.matchMedia || (window.matchMedia = (function () {\n  \"use strict\";\n\n  // For browsers that support matchMedium api such as IE 9 and webkit\n  var styleMedia = (window.styleMedia || window.media);\n\n  // For those that don't support matchMedium\n  if (!styleMedia) {\n    var style   = document.createElement('style'),\n    script      = document.getElementsByTagName('script')[0],\n    info        = null;\n\n    style.type  = 'text/css';\n    style.id    = 'matchmediajs-test';\n\n    if (!script) {\n      document.head.appendChild(style);\n    } else {\n      script.parentNode.insertBefore(style, script);\n    }\n\n    // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers\n    info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle;\n\n    styleMedia = {\n      matchMedium: function (media) {\n        var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';\n\n        // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers\n        if (style.styleSheet) {\n          style.styleSheet.cssText = text;\n        } else {\n          style.textContent = text;\n        }\n\n        // Test if media query is true or false\n        return info.width === '1px';\n      }\n    };\n  }\n\n  return function(media) {\n    return {\n      matches: styleMedia.matchMedium(media || 'all'),\n      media: media || 'all'\n    };\n  };\n})());\n/* eslint-enable */\n\nvar MediaQuery = {\n  queries: [],\n\n  current: '',\n\n  /**\n   * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher.\n   * @function\n   * @private\n   */\n  _init() {\n\n    // make sure the initialization is only done once when calling _init() several times\n    if (this.isInitialized === true) {\n      return this;\n    } else {\n      this.isInitialized = true;\n    }\n\n    var self = this;\n    var $meta = $('meta.foundation-mq');\n    if(!$meta.length){\n      $('<meta class=\"foundation-mq\" name=\"foundation-mq\" content>').appendTo(document.head);\n    }\n\n    var extractedStyles = $('.foundation-mq').css('font-family');\n    var namedQueries;\n\n    namedQueries = parseStyleToObject(extractedStyles);\n\n    self.queries = []; // reset\n\n    for (var key in namedQueries) {\n      if(namedQueries.hasOwnProperty(key)) {\n        self.queries.push({\n          name: key,\n          value: `only screen and (min-width: ${namedQueries[key]})`\n        });\n      }\n    }\n\n    this.current = this._getCurrentSize();\n\n    this._watcher();\n  },\n\n  /**\n   * Reinitializes the media query helper.\n   * Useful if your CSS breakpoint configuration has just been loaded or has changed since the initialization.\n   * @function\n   * @private\n   */\n  _reInit() {\n    this.isInitialized = false;\n    this._init();\n  },\n\n  /**\n   * Checks if the screen is at least as wide as a breakpoint.\n   * @function\n   * @param {String} size - Name of the breakpoint to check.\n   * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller.\n   */\n  atLeast(size) {\n    var query = this.get(size);\n\n    if (query) {\n      return window.matchMedia(query).matches;\n    }\n\n    return false;\n  },\n\n  /**\n   * Checks if the screen is within the given breakpoint.\n   * If smaller than the breakpoint of larger than its upper limit it returns false.\n   * @function\n   * @param {String} size - Name of the breakpoint to check.\n   * @returns {Boolean} `true` if the breakpoint matches, `false` otherwise.\n   */\n  only(size) {\n    return size === this._getCurrentSize();\n  },\n\n  /**\n   * Checks if the screen is within a breakpoint or smaller.\n   * @function\n   * @param {String} size - Name of the breakpoint to check.\n   * @returns {Boolean} `true` if the breakpoint matches, `false` if it's larger.\n   */\n  upTo(size) {\n    const nextSize = this.next(size);\n\n    // If the next breakpoint does not match, the screen is smaller than\n    // the upper limit of this breakpoint.\n    if (nextSize) {\n      return !this.atLeast(nextSize);\n    }\n\n    // If there is no next breakpoint, the \"size\" breakpoint does not have\n    // an upper limit and the screen will always be within it or smaller.\n    return true;\n  },\n\n  /**\n   * Checks if the screen matches to a breakpoint.\n   * @function\n   * @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method.\n   * @returns {Boolean} `true` if the breakpoint matches, `false` if it does not.\n   */\n  is(size) {\n    const parts = size.trim().split(' ').filter(p => !!p.length);\n    const [bpSize, bpModifier = ''] = parts;\n\n    // Only the breakpont\n    if (bpModifier === 'only') {\n      return this.only(bpSize);\n    }\n    // At least the breakpoint (included)\n    if (!bpModifier || bpModifier === 'up') {\n      return this.atLeast(bpSize);\n    }\n    // Up to the breakpoint (included)\n    if (bpModifier === 'down') {\n      return this.upTo(bpSize);\n    }\n\n    throw new Error(`\n      Invalid breakpoint passed to MediaQuery.is().\n      Expected a breakpoint name formatted like \"<size> <modifier>\", got \"${size}\".\n    `);\n  },\n\n  /**\n   * Gets the media query of a breakpoint.\n   * @function\n   * @param {String} size - Name of the breakpoint to get.\n   * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist.\n   */\n  get(size) {\n    for (var i in this.queries) {\n      if(this.queries.hasOwnProperty(i)) {\n        var query = this.queries[i];\n        if (size === query.name) return query.value;\n      }\n    }\n\n    return null;\n  },\n\n  /**\n   * Get the breakpoint following the given breakpoint.\n   * @function\n   * @param {String} size - Name of the breakpoint.\n   * @returns {String|null} - The name of the following breakpoint, or `null` if the passed breakpoint was the last one.\n   */\n  next(size) {\n    const queryIndex = this.queries.findIndex((q) => this._getQueryName(q) === size);\n    if (queryIndex === -1) {\n      throw new Error(`\n        Unknown breakpoint \"${size}\" passed to MediaQuery.next().\n        Ensure it is present in your Sass \"$breakpoints\" setting.\n      `);\n    }\n\n    const nextQuery = this.queries[queryIndex + 1];\n    return nextQuery ? nextQuery.name : null;\n  },\n\n  /**\n   * Returns the name of the breakpoint related to the given value.\n   * @function\n   * @private\n   * @param {String|Object} value - Breakpoint name or query object.\n   * @returns {String} Name of the breakpoint.\n   */\n  _getQueryName(value) {\n    if (typeof value === 'string')\n      return value;\n    if (typeof value === 'object')\n      return value.name;\n    throw new TypeError(`\n      Invalid value passed to MediaQuery._getQueryName().\n      Expected a breakpoint name (String) or a breakpoint query (Object), got \"${value}\" (${typeof value})\n    `);\n  },\n\n  /**\n   * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one).\n   * @function\n   * @private\n   * @returns {String} Name of the current breakpoint.\n   */\n  _getCurrentSize() {\n    var matched;\n\n    for (var i = 0; i < this.queries.length; i++) {\n      var query = this.queries[i];\n\n      if (window.matchMedia(query.value).matches) {\n        matched = query;\n      }\n    }\n\n    return matched && this._getQueryName(matched);\n  },\n\n  /**\n   * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes.\n   * @function\n   * @private\n   */\n  _watcher() {\n    $(window).on('resize.zf.trigger', () => {\n      var newSize = this._getCurrentSize(), currentSize = this.current;\n\n      if (newSize !== currentSize) {\n        // Change the current media query\n        this.current = newSize;\n\n        // Broadcast the media query change on the window\n        $(window).trigger('changed.zf.mediaquery', [newSize, currentSize]);\n      }\n    });\n  }\n};\n\n\n\n// Thank you: https://github.com/sindresorhus/query-string\nfunction parseStyleToObject(str) {\n  var styleObject = {};\n\n  if (typeof str !== 'string') {\n    return styleObject;\n  }\n\n  str = str.trim().slice(1, -1); // browsers re-quote string style values\n\n  if (!str) {\n    return styleObject;\n  }\n\n  styleObject = str.split('&').reduce(function(ret, param) {\n    var parts = param.replace(/\\+/g, ' ').split('=');\n    var key = parts[0];\n    var val = parts[1];\n    key = decodeURIComponent(key);\n\n    // missing `=` should be `null`:\n    // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n    val = typeof val === 'undefined' ? null : decodeURIComponent(val);\n\n    if (!ret.hasOwnProperty(key)) {\n      ret[key] = val;\n    } else if (Array.isArray(ret[key])) {\n      ret[key].push(val);\n    } else {\n      ret[key] = [ret[key], val];\n    }\n    return ret;\n  }, {});\n\n  return styleObject;\n}\n\nexport {MediaQuery};\n", "import $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\n\nvar FOUNDATION_VERSION = '6.7.5';\n\n// Global Foundation object\n// This is attached to the window, or used as a module for AMD/Browserify\nvar Foundation = {\n  version: FOUNDATION_VERSION,\n\n  /**\n   * Stores initialized plugins.\n   */\n  _plugins: {},\n\n  /**\n   * Stores generated unique ids for plugin instances\n   */\n  _uuids: [],\n\n  /**\n   * Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing.\n   * @param {Object} plugin - The constructor of the plugin.\n   */\n  plugin: function(plugin, name) {\n    // Object key to use when adding to global Foundation object\n    // Examples: Foundation.Reveal, Foundation.OffCanvas\n    var className = (name || functionName(plugin));\n    // Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin\n    // Examples: data-reveal, data-off-canvas\n    var attrName  = hyphenate(className);\n\n    // Add to the Foundation object and the plugins list (for reflowing)\n    this._plugins[attrName] = this[className] = plugin;\n  },\n  /**\n   * @function\n   * Populates the _uuids array with pointers to each individual plugin instance.\n   * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls.\n   * Also fires the initialization event for each plugin, consolidating repetitive code.\n   * @param {Object} plugin - an instance of a plugin, usually `this` in context.\n   * @param {String} name - the name of the plugin, passed as a camelCased string.\n   * @fires Plugin#init\n   */\n  registerPlugin: function(plugin, name){\n    var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase();\n    plugin.uuid = GetYoDigits(6, pluginName);\n\n    if(!plugin.$element.attr(`data-${pluginName}`)){ plugin.$element.attr(`data-${pluginName}`, plugin.uuid); }\n    if(!plugin.$element.data('zfPlugin')){ plugin.$element.data('zfPlugin', plugin); }\n          /**\n           * Fires when the plugin has initialized.\n           * @event Plugin#init\n           */\n    plugin.$element.trigger(`init.zf.${pluginName}`);\n\n    this._uuids.push(plugin.uuid);\n\n    return;\n  },\n  /**\n   * @function\n   * Removes the plugins uuid from the _uuids array.\n   * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute.\n   * Also fires the destroyed event for the plugin, consolidating repetitive code.\n   * @param {Object} plugin - an instance of a plugin, usually `this` in context.\n   * @fires Plugin#destroyed\n   */\n  unregisterPlugin: function(plugin){\n    var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor));\n\n    this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1);\n    plugin.$element.removeAttr(`data-${pluginName}`).removeData('zfPlugin')\n          /**\n           * Fires when the plugin has been destroyed.\n           * @event Plugin#destroyed\n           */\n          .trigger(`destroyed.zf.${pluginName}`);\n    for(var prop in plugin){\n      if(typeof plugin[prop] === 'function'){\n        plugin[prop] = null; //clean up script to prep for garbage collection.\n      }\n    }\n    return;\n  },\n\n  /**\n   * @function\n   * Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc.\n   * @param {String} plugins - optional string of an individual plugin key, attained by calling `$(element).data('pluginName')`, or string of a plugin class i.e. `'dropdown'`\n   * @default If no argument is passed, reflow all currently active plugins.\n   */\n   reInit: function(plugins){\n     var isJQ = plugins instanceof $;\n     try{\n       if(isJQ){\n         plugins.each(function(){\n           $(this).data('zfPlugin')._init();\n         });\n       }else{\n         var type = typeof plugins,\n         _this = this,\n         fns = {\n           'object': function(plgs){\n             plgs.forEach(function(p){\n               p = hyphenate(p);\n               $('[data-'+ p +']').foundation('_init');\n             });\n           },\n           'string': function(){\n             plugins = hyphenate(plugins);\n             $('[data-'+ plugins +']').foundation('_init');\n           },\n           'undefined': function(){\n             this.object(Object.keys(_this._plugins));\n           }\n         };\n         fns[type](plugins);\n       }\n     }catch(err){\n       console.error(err);\n     }finally{\n       return plugins;\n     }\n   },\n\n  /**\n   * Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized.\n   * @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object.\n   * @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything.\n   */\n  reflow: function(elem, plugins) {\n\n    // If plugins is undefined, just grab everything\n    if (typeof plugins === 'undefined') {\n      plugins = Object.keys(this._plugins);\n    }\n    // If plugins is a string, convert it to an array with one item\n    else if (typeof plugins === 'string') {\n      plugins = [plugins];\n    }\n\n    var _this = this;\n\n    // Iterate through each plugin\n    $.each(plugins, function(i, name) {\n      // Get the current plugin\n      var plugin = _this._plugins[name];\n\n      // Localize the search to all elements inside elem, as well as elem itself, unless elem === document\n      var $elem = $(elem).find('[data-'+name+']').addBack('[data-'+name+']').filter(function () {\n        return typeof $(this).data(\"zfPlugin\") === 'undefined';\n      });\n\n      // For each plugin found, initialize it\n      $elem.each(function() {\n        var $el = $(this),\n            opts = { reflow: true };\n\n        if($el.attr('data-options')){\n          $el.attr('data-options').split(';').forEach(function(option){\n            var opt = option.split(':').map(function(el){ return el.trim(); });\n            if(opt[0]) opts[opt[0]] = parseValue(opt[1]);\n          });\n        }\n        try{\n          $el.data('zfPlugin', new plugin($(this), opts));\n        }catch(er){\n          console.error(er);\n        }finally{\n          return;\n        }\n      });\n    });\n  },\n  getFnName: functionName,\n\n  addToJquery: function() {\n    // TODO: consider not making this a jQuery function\n    // TODO: need way to reflow vs. re-initialize\n    /**\n     * The Foundation jQuery method.\n     * @param {String|Array} method - An action to perform on the current jQuery object.\n     */\n    var foundation = function(method) {\n      var type = typeof method,\n          $noJS = $('.no-js');\n\n      if($noJS.length){\n        $noJS.removeClass('no-js');\n      }\n\n      if(type === 'undefined'){//needs to initialize the Foundation object, or an individual plugin.\n        MediaQuery._init();\n        Foundation.reflow(this);\n      }else if(type === 'string'){//an individual method to invoke on a plugin or group of plugins\n        var args = Array.prototype.slice.call(arguments, 1);//collect all the arguments, if necessary\n        var plugClass = this.data('zfPlugin');//determine the class of plugin\n\n        if(typeof plugClass !== 'undefined' && typeof plugClass[method] !== 'undefined'){//make sure both the class and method exist\n          if(this.length === 1){//if there's only one, call it directly.\n              plugClass[method].apply(plugClass, args);\n          }else{\n            this.each(function(i, el){//otherwise loop through the jQuery collection and invoke the method on each\n              plugClass[method].apply($(el).data('zfPlugin'), args);\n            });\n          }\n        }else{//error for no class or no method\n          throw new ReferenceError(\"We're sorry, '\" + method + \"' is not an available method for \" + (plugClass ? functionName(plugClass) : 'this element') + '.');\n        }\n      }else{//error for invalid argument type\n        throw new TypeError(`We're sorry, ${type} is not a valid parameter. You must use a string representing the method you wish to invoke.`);\n      }\n      return this;\n    };\n    $.fn.foundation = foundation;\n    return $;\n  }\n};\n\nFoundation.util = {\n  /**\n   * Function for applying a debounce effect to a function call.\n   * @function\n   * @param {Function} func - Function to be called at end of timeout.\n   * @param {Number} delay - Time in ms to delay the call of `func`.\n   * @returns function\n   */\n  throttle: function (func, delay) {\n    var timer = null;\n\n    return function () {\n      var context = this, args = arguments;\n\n      if (timer === null) {\n        timer = setTimeout(function () {\n          func.apply(context, args);\n          timer = null;\n        }, delay);\n      }\n    };\n  }\n};\n\nwindow.Foundation = Foundation;\n\n// Polyfill for requestAnimationFrame\n(function() {\n  if (!Date.now || !window.Date.now)\n    window.Date.now = Date.now = function() { return new Date().getTime(); };\n\n  var vendors = ['webkit', 'moz'];\n  for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {\n      var vp = vendors[i];\n      window.requestAnimationFrame = window[vp+'RequestAnimationFrame'];\n      window.cancelAnimationFrame = (window[vp+'CancelAnimationFrame']\n                                 || window[vp+'CancelRequestAnimationFrame']);\n  }\n  if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent)\n    || !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n    var lastTime = 0;\n    window.requestAnimationFrame = function(callback) {\n        var now = Date.now();\n        var nextTime = Math.max(lastTime + 16, now);\n        return setTimeout(function() { callback(lastTime = nextTime); },\n                          nextTime - now);\n    };\n    window.cancelAnimationFrame = clearTimeout;\n  }\n  /**\n   * Polyfill for performance.now, required by rAF\n   */\n  if(!window.performance || !window.performance.now){\n    window.performance = {\n      start: Date.now(),\n      now: function(){ return Date.now() - this.start; }\n    };\n  }\n})();\nif (!Function.prototype.bind) {\n  /* eslint-disable no-extend-native */\n  Function.prototype.bind = function(oThis) {\n    if (typeof this !== 'function') {\n      // closest thing possible to the ECMAScript 5\n      // internal IsCallable function\n      throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n    }\n\n    var aArgs   = Array.prototype.slice.call(arguments, 1),\n        fToBind = this,\n        fNOP    = function() {},\n        fBound  = function() {\n          return fToBind.apply(this instanceof fNOP\n                 ? this\n                 : oThis,\n                 aArgs.concat(Array.prototype.slice.call(arguments)));\n        };\n\n    if (this.prototype) {\n      // native functions don't have a prototype\n      fNOP.prototype = this.prototype;\n    }\n    fBound.prototype = new fNOP();\n\n    return fBound;\n  };\n}\n// Polyfill to get the name of a function in IE9\nfunction functionName(fn) {\n  if (typeof Function.prototype.name === 'undefined') {\n    var funcNameRegex = /function\\s([^(]{1,})\\(/;\n    var results = (funcNameRegex).exec((fn).toString());\n    return (results && results.length > 1) ? results[1].trim() : \"\";\n  }\n  else if (typeof fn.prototype === 'undefined') {\n    return fn.constructor.name;\n  }\n  else {\n    return fn.prototype.constructor.name;\n  }\n}\nfunction parseValue(str){\n  if ('true' === str) return true;\n  else if ('false' === str) return false;\n  else if (!isNaN(str * 1)) return parseFloat(str);\n  return str;\n}\n// Convert PascalCase to kebab-case\n// Thank you: http://stackoverflow.com/a/8955580\nfunction hyphenate(str) {\n  return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nexport {Foundation};\n", "var Box = {\n  ImNotTouchingYou: ImNotTouchingYou,\n  OverlapArea: OverlapArea,\n  GetDimensions: GetDimensions,\n  GetExplicitOffsets: GetExplicitOffsets\n}\n\n/**\n * Compares the dimensions of an element to a container and determines collision events with container.\n * @function\n * @param {jQuery} element - jQuery object to test for collisions.\n * @param {jQuery} parent - jQuery object to use as bounding container.\n * @param {Boolean} lrOnly - set to true to check left and right values only.\n * @param {Boolean} tbOnly - set to true to check top and bottom values only.\n * @default if no parent object passed, detects collisions with `window`.\n * @returns {Boolean} - true if collision free, false if a collision in any direction.\n */\nfunction ImNotTouchingYou(element, parent, lrOnly, tbOnly, ignoreBottom) {\n  return OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) === 0;\n}\n\nfunction OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) {\n  var eleDims = GetDimensions(element),\n  topOver, bottomOver, leftOver, rightOver;\n  if (parent) {\n    var parDims = GetDimensions(parent);\n\n    bottomOver = (parDims.height + parDims.offset.top) - (eleDims.offset.top + eleDims.height);\n    topOver    = eleDims.offset.top - parDims.offset.top;\n    leftOver   = eleDims.offset.left - parDims.offset.left;\n    rightOver  = (parDims.width + parDims.offset.left) - (eleDims.offset.left + eleDims.width);\n  }\n  else {\n    bottomOver = (eleDims.windowDims.height + eleDims.windowDims.offset.top) - (eleDims.offset.top + eleDims.height);\n    topOver    = eleDims.offset.top - eleDims.windowDims.offset.top;\n    leftOver   = eleDims.offset.left - eleDims.windowDims.offset.left;\n    rightOver  = eleDims.windowDims.width - (eleDims.offset.left + eleDims.width);\n  }\n\n  bottomOver = ignoreBottom ? 0 : Math.min(bottomOver, 0);\n  topOver    = Math.min(topOver, 0);\n  leftOver   = Math.min(leftOver, 0);\n  rightOver  = Math.min(rightOver, 0);\n\n  if (lrOnly) {\n    return leftOver + rightOver;\n  }\n  if (tbOnly) {\n    return topOver + bottomOver;\n  }\n\n  // use sum of squares b/c we care about overlap area.\n  return Math.sqrt((topOver * topOver) + (bottomOver * bottomOver) + (leftOver * leftOver) + (rightOver * rightOver));\n}\n\n/**\n * Uses native methods to return an object of dimension values.\n * @function\n * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window.\n * @returns {Object} - nested object of integer pixel values\n * TODO - if element is window, return only those values.\n */\nfunction GetDimensions(elem){\n  elem = elem.length ? elem[0] : elem;\n\n  if (elem === window || elem === document) {\n    throw new Error(\"I'm sorry, Dave. I'm afraid I can't do that.\");\n  }\n\n  var rect = elem.getBoundingClientRect(),\n      parRect = elem.parentNode.getBoundingClientRect(),\n      winRect = document.body.getBoundingClientRect(),\n      winY = window.pageYOffset,\n      winX = window.pageXOffset;\n\n  return {\n    width: rect.width,\n    height: rect.height,\n    offset: {\n      top: rect.top + winY,\n      left: rect.left + winX\n    },\n    parentDims: {\n      width: parRect.width,\n      height: parRect.height,\n      offset: {\n        top: parRect.top + winY,\n        left: parRect.left + winX\n      }\n    },\n    windowDims: {\n      width: winRect.width,\n      height: winRect.height,\n      offset: {\n        top: winY,\n        left: winX\n      }\n    }\n  }\n}\n\n/**\n * Returns an object of top and left integer pixel values for dynamically rendered elements,\n * such as: Tooltip, Reveal, and Dropdown. Maintained for backwards compatibility, and where\n * you don't know alignment, but generally from\n * 6.4 forward you should use GetExplicitOffsets, as GetOffsets conflates position and alignment.\n * @function\n * @param {jQuery} element - jQuery object for the element being positioned.\n * @param {jQuery} anchor - jQuery object for the element's anchor point.\n * @param {String} position - a string relating to the desired position of the element, relative to it's anchor\n * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element.\n * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element.\n * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset.\n * TODO alter/rewrite to work with `em` values as well/instead of pixels\n */\nfunction GetExplicitOffsets(element, anchor, position, alignment, vOffset, hOffset, isOverflow) {\n  var $eleDims = GetDimensions(element),\n      $anchorDims = anchor ? GetDimensions(anchor) : null;\n\n      var topVal, leftVal;\n\n  if ($anchorDims !== null) {\n  // set position related attribute\n  switch (position) {\n    case 'top':\n      topVal = $anchorDims.offset.top - ($eleDims.height + vOffset);\n      break;\n    case 'bottom':\n      topVal = $anchorDims.offset.top + $anchorDims.height + vOffset;\n      break;\n    case 'left':\n      leftVal = $anchorDims.offset.left - ($eleDims.width + hOffset);\n      break;\n    case 'right':\n      leftVal = $anchorDims.offset.left + $anchorDims.width + hOffset;\n      break;\n  }\n\n  // set alignment related attribute\n  switch (position) {\n    case 'top':\n    case 'bottom':\n      switch (alignment) {\n        case 'left':\n          leftVal = $anchorDims.offset.left + hOffset;\n          break;\n        case 'right':\n          leftVal = $anchorDims.offset.left - $eleDims.width + $anchorDims.width - hOffset;\n          break;\n        case 'center':\n          leftVal = isOverflow ? hOffset : (($anchorDims.offset.left + ($anchorDims.width / 2)) - ($eleDims.width / 2)) + hOffset;\n          break;\n      }\n      break;\n    case 'right':\n    case 'left':\n      switch (alignment) {\n        case 'bottom':\n          topVal = $anchorDims.offset.top - vOffset + $anchorDims.height - $eleDims.height;\n          break;\n        case 'top':\n          topVal = $anchorDims.offset.top + vOffset\n          break;\n        case 'center':\n          topVal = ($anchorDims.offset.top + vOffset + ($anchorDims.height / 2)) - ($eleDims.height / 2)\n          break;\n      }\n      break;\n  }\n  }\n\n  return {top: topVal, left: leftVal};\n}\n\nexport {Box};\n", "import $ from 'jquery';\n\n/**\n * Runs a callback function when images are fully loaded.\n * @param {Object} images - Image(s) to check if loaded.\n * @param {Func} callback - Function to execute when image is fully loaded.\n */\nfunction onImagesLoaded(images, callback){\n  var unloaded = images.length;\n\n  if (unloaded === 0) {\n    callback();\n  }\n\n  images.each(function(){\n    // Check if image is loaded\n    if (this.complete && typeof this.naturalWidth !== 'undefined') {\n      singleImageLoaded();\n    }\n    else {\n      // If the above check failed, simulate loading on detached element.\n      var image = new Image();\n      // Still count image as loaded if it finalizes with an error.\n      var events = \"load.zf.images error.zf.images\";\n      $(image).one(events, function me(){\n        // Unbind the event listeners. We're using 'one' but only one of the two events will have fired.\n        $(this).off(events, me);\n        singleImageLoaded();\n      });\n      image.src = $(this).attr('src');\n    }\n  });\n\n  function singleImageLoaded() {\n    unloaded--;\n    if (unloaded === 0) {\n      callback();\n    }\n  }\n}\n\nexport { onImagesLoaded };\n", "/*******************************************\n *                                         *\n * This util was created by Marius Olbertz *\n * Please thank Marius on GitHub /owlbertz *\n * or the web http://www.mariusolbertz.de/ *\n *                                         *\n ******************************************/\n\nimport $ from 'jquery';\nimport { rtl as Rtl } from './foundation.core.utils';\n\nconst keyCodes = {\n  9: 'TAB',\n  13: 'ENTER',\n  27: 'ESCAPE',\n  32: 'SPACE',\n  35: 'END',\n  36: 'HOME',\n  37: 'ARROW_LEFT',\n  38: 'ARROW_UP',\n  39: 'ARROW_RIGHT',\n  40: 'ARROW_DOWN'\n}\n\nvar commands = {}\n\n// Functions pulled out to be referenceable from internals\nfunction findFocusable($element) {\n  if(!$element) {return false; }\n  return $element.find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]').filter(function() {\n    if (!$(this).is(':visible') || $(this).attr('tabindex') < 0) { return false; } //only have visible elements and those that have a tabindex greater or equal 0\n    return true;\n  })\n  .sort( function( a, b ) {\n    if ($(a).attr('tabindex') === $(b).attr('tabindex')) {\n      return 0;\n    }\n    let aTabIndex = parseInt($(a).attr('tabindex'), 10),\n      bTabIndex = parseInt($(b).attr('tabindex'), 10);\n    // Undefined is treated the same as 0\n    if (typeof $(a).attr('tabindex') === 'undefined' && bTabIndex > 0) {\n      return 1;\n    }\n    if (typeof $(b).attr('tabindex') === 'undefined' && aTabIndex > 0) {\n      return -1;\n    }\n    if (aTabIndex === 0 && bTabIndex > 0) {\n      return 1;\n    }\n    if (bTabIndex === 0 && aTabIndex > 0) {\n      return -1;\n    }\n    if (aTabIndex < bTabIndex) {\n      return -1;\n    }\n    if (aTabIndex > bTabIndex) {\n      return 1;\n    }\n  });\n}\n\nfunction parseKey(event) {\n  var key = keyCodes[event.which || event.keyCode] || String.fromCharCode(event.which).toUpperCase();\n\n  // Remove un-printable characters, e.g. for `fromCharCode` calls for CTRL only events\n  key = key.replace(/\\W+/, '');\n\n  if (event.shiftKey) key = `SHIFT_${key}`;\n  if (event.ctrlKey) key = `CTRL_${key}`;\n  if (event.altKey) key = `ALT_${key}`;\n\n  // Remove trailing underscore, in case only modifiers were used (e.g. only `CTRL_ALT`)\n  key = key.replace(/_$/, '');\n\n  return key;\n}\n\nvar Keyboard = {\n  keys: getKeyCodes(keyCodes),\n\n  /**\n   * Parses the (keyboard) event and returns a String that represents its key\n   * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n   * @param {Event} event - the event generated by the event handler\n   * @return String key - String that represents the key pressed\n   */\n  parseKey: parseKey,\n\n  /**\n   * Handles the given (keyboard) event\n   * @param {Event} event - the event generated by the event handler\n   * @param {String} component - Foundation component's name, e.g. Slider or Reveal\n   * @param {Objects} functions - collection of functions that are to be executed\n   */\n  handleKey(event, component, functions) {\n    var commandList = commands[component],\n      keyCode = this.parseKey(event),\n      cmds,\n      command,\n      fn;\n\n    if (!commandList) return console.warn('Component not defined!');\n\n    // Ignore the event if it was already handled\n    if (event.zfIsKeyHandled === true) return;\n\n    // This component does not differentiate between ltr and rtl\n    if (typeof commandList.ltr === 'undefined') {\n        cmds = commandList; // use plain list\n    } else { // merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa\n        if (Rtl()) cmds = $.extend({}, commandList.ltr, commandList.rtl);\n\n        else cmds = $.extend({}, commandList.rtl, commandList.ltr);\n    }\n    command = cmds[keyCode];\n\n    fn = functions[command];\n     // Execute the handler if found\n    if (fn && typeof fn === 'function') {\n      var returnValue = fn.apply();\n\n      // Mark the event as \"handled\" to prevent future handlings\n      event.zfIsKeyHandled = true;\n\n      // Execute function when event was handled\n      if (functions.handled || typeof functions.handled === 'function') {\n          functions.handled(returnValue);\n      }\n    } else {\n       // Execute function when event was not handled\n      if (functions.unhandled || typeof functions.unhandled === 'function') {\n          functions.unhandled();\n      }\n    }\n  },\n\n  /**\n   * Finds all focusable elements within the given `$element`\n   * @param {jQuery} $element - jQuery object to search within\n   * @return {jQuery} $focusable - all focusable elements within `$element`\n   */\n\n  findFocusable: findFocusable,\n\n  /**\n   * Returns the component name name\n   * @param {Object} component - Foundation component, e.g. Slider or Reveal\n   * @return String componentName\n   */\n\n  register(componentName, cmds) {\n    commands[componentName] = cmds;\n  },\n\n\n  // TODO9438: These references to Keyboard need to not require global. Will 'this' work in this context?\n  //\n  /**\n   * Traps the focus in the given element.\n   * @param  {jQuery} $element  jQuery object to trap the foucs into.\n   */\n  trapFocus($element) {\n    var $focusable = findFocusable($element),\n        $firstFocusable = $focusable.eq(0),\n        $lastFocusable = $focusable.eq(-1);\n\n    $element.on('keydown.zf.trapfocus', function(event) {\n      if (event.target === $lastFocusable[0] && parseKey(event) === 'TAB') {\n        event.preventDefault();\n        $firstFocusable.focus();\n      }\n      else if (event.target === $firstFocusable[0] && parseKey(event) === 'SHIFT_TAB') {\n        event.preventDefault();\n        $lastFocusable.focus();\n      }\n    });\n  },\n  /**\n   * Releases the trapped focus from the given element.\n   * @param  {jQuery} $element  jQuery object to release the focus for.\n   */\n  releaseFocus($element) {\n    $element.off('keydown.zf.trapfocus');\n  }\n}\n\n/*\n * Constants for easier comparing.\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n */\nfunction getKeyCodes(kcs) {\n  var k = {};\n  for (var kc in kcs) {\n    if (kcs.hasOwnProperty(kc)) k[kcs[kc]] = kcs[kc];\n  }\n  return k;\n}\n\nexport {Keyboard};\n", "import $ from 'jquery';\nimport { transitionend } from './foundation.core.utils';\n\n/**\n * Motion module.\n * @module foundation.motion\n */\n\nconst initClasses   = ['mui-enter', 'mui-leave'];\nconst activeClasses = ['mui-enter-active', 'mui-leave-active'];\n\nconst Motion = {\n  animateIn: function(element, animation, cb) {\n    animate(true, element, animation, cb);\n  },\n\n  animateOut: function(element, animation, cb) {\n    animate(false, element, animation, cb);\n  }\n}\n\nfunction Move(duration, elem, fn){\n  var anim, prog, start = null;\n\n  if (duration === 0) {\n    fn.apply(elem);\n    elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);\n    return;\n  }\n\n  function move(ts){\n    if(!start) start = ts;\n    prog = ts - start;\n    fn.apply(elem);\n\n    if(prog < duration){ anim = window.requestAnimationFrame(move, elem); }\n    else{\n      window.cancelAnimationFrame(anim);\n      elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);\n    }\n  }\n  anim = window.requestAnimationFrame(move);\n}\n\n/**\n * Animates an element in or out using a CSS transition class.\n * @function\n * @private\n * @param {Boolean} isIn - Defines if the animation is in or out.\n * @param {Object} element - jQuery or HTML object to animate.\n * @param {String} animation - CSS class to use.\n * @param {Function} cb - Callback to run when animation is finished.\n */\nfunction animate(isIn, element, animation, cb) {\n  element = $(element).eq(0);\n\n  if (!element.length) return;\n\n  var initClass = isIn ? initClasses[0] : initClasses[1];\n  var activeClass = isIn ? activeClasses[0] : activeClasses[1];\n\n  // Set up the animation\n  reset();\n\n  element\n    .addClass(animation)\n    .css('transition', 'none');\n\n  requestAnimationFrame(() => {\n    element.addClass(initClass);\n    if (isIn) element.show();\n  });\n\n  // Start the animation\n  requestAnimationFrame(() => {\n    // will trigger the browser to synchronously calculate the style and layout\n    // also called reflow or layout thrashing\n    // see https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n    element[0].offsetWidth;\n    element\n      .css('transition', '')\n      .addClass(activeClass);\n  });\n\n  // Clean up the animation when it finishes\n  element.one(transitionend(element), finish);\n\n  // Hides the element (for out animations), resets the element, and runs a callback\n  function finish() {\n    if (!isIn) element.hide();\n    reset();\n    if (cb) cb.apply(element);\n  }\n\n  // Resets transitions and removes motion-specific classes\n  function reset() {\n    element[0].style.transitionDuration = 0;\n    element.removeClass(`${initClass} ${activeClass} ${animation}`);\n  }\n}\n\nexport { Move, Motion };\n\n", "import $ from 'jquery';\n\nconst Nest = {\n  Feather(menu, type = 'zf') {\n    menu.attr('role', 'menubar');\n    menu.find('a').attr({'role': 'menuitem'});\n\n    var items = menu.find('li').attr({'role': 'none'}),\n        subMenuClass = `is-${type}-submenu`,\n        subItemClass = `${subMenuClass}-item`,\n        hasSubClass = `is-${type}-submenu-parent`,\n        applyAria = (type !== 'accordion'); // Accordions handle their own ARIA attriutes.\n\n    items.each(function() {\n      var $item = $(this),\n          $sub = $item.children('ul');\n\n      if ($sub.length) {\n        $item.addClass(hasSubClass);\n        if(applyAria) {\n          const firstItem = $item.children('a:first');\n          firstItem.attr({\n            'aria-haspopup': true,\n            'aria-label': firstItem.attr('aria-label') || firstItem.text()\n          });\n          // Note:  Drilldowns behave differently in how they hide, and so need\n          // additional attributes.  We should look if this possibly over-generalized\n          // utility (Nest) is appropriate when we rework menus in 6.4\n          if(type === 'drilldown') {\n            $item.attr({'aria-expanded': false});\n          }\n        }\n        $sub\n          .addClass(`submenu ${subMenuClass}`)\n          .attr({\n            'data-submenu': '',\n            'role': 'menubar'\n          });\n        if(type === 'drilldown') {\n          $sub.attr({'aria-hidden': true});\n        }\n      }\n\n      if ($item.parent('[data-submenu]').length) {\n        $item.addClass(`is-submenu-item ${subItemClass}`);\n      }\n    });\n\n    return;\n  },\n\n  Burn(menu, type) {\n    var //items = menu.find('li'),\n        subMenuClass = `is-${type}-submenu`,\n        subItemClass = `${subMenuClass}-item`,\n        hasSubClass = `is-${type}-submenu-parent`;\n\n    menu\n      .find('>li, > li > ul, .menu, .menu > li, [data-submenu] > li')\n      .removeClass(`${subMenuClass} ${subItemClass} ${hasSubClass} is-submenu-item submenu is-active`)\n      .removeAttr('data-submenu').css('display', '');\n\n  }\n}\n\nexport {Nest};\n", "function Timer(elem, options, cb) {\n  var _this = this,\n      duration = options.duration,//options is an object for easily adding features later.\n      nameSpace = Object.keys(elem.data())[0] || 'timer',\n      remain = -1,\n      start,\n      timer;\n\n  this.isPaused = false;\n\n  this.restart = function() {\n    remain = -1;\n    clearTimeout(timer);\n    this.start();\n  }\n\n  this.start = function() {\n    this.isPaused = false;\n    // if(!elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.\n    clearTimeout(timer);\n    remain = remain <= 0 ? duration : remain;\n    elem.data('paused', false);\n    start = Date.now();\n    timer = setTimeout(function(){\n      if(options.infinite){\n        _this.restart();//rerun the timer.\n      }\n      if (cb && typeof cb === 'function') { cb(); }\n    }, remain);\n    elem.trigger(`timerstart.zf.${nameSpace}`);\n  }\n\n  this.pause = function() {\n    this.isPaused = true;\n    //if(elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.\n    clearTimeout(timer);\n    elem.data('paused', true);\n    var end = Date.now();\n    remain = remain - (end - start);\n    elem.trigger(`timerpaused.zf.${nameSpace}`);\n  }\n}\n\nexport {Timer};\n", "//**************************************************\n//**Work inspired by multiple jquery swipe plugins**\n//**Done by Yohai Ararat ***************************\n//**************************************************\n\nimport $ from 'jquery';\n\nvar Touch = {};\n\nvar startPosX,\n    startTime,\n    elapsedTime,\n    startEvent,\n    isMoving = false,\n    didMoved = false;\n\nfunction onTouchEnd(e) {\n  this.removeEventListener('touchmove', onTouchMove);\n  this.removeEventListener('touchend', onTouchEnd);\n\n  // If the touch did not move, consider it as a \"tap\"\n  if (!didMoved) {\n    var tapEvent = $.Event('tap', startEvent || e);\n    $(this).trigger(tapEvent);\n  }\n\n  startEvent = null;\n  isMoving = false;\n  didMoved = false;\n}\n\nfunction onTouchMove(e) {\n  if (true === $.spotSwipe.preventDefault) { e.preventDefault(); }\n\n  if(isMoving) {\n    var x = e.touches[0].pageX;\n    // var y = e.touches[0].pageY;\n    var dx = startPosX - x;\n    // var dy = startPosY - y;\n    var dir;\n    didMoved = true;\n    elapsedTime = new Date().getTime() - startTime;\n    if(Math.abs(dx) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n      dir = dx > 0 ? 'left' : 'right';\n    }\n    // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n    //   dir = dy > 0 ? 'down' : 'up';\n    // }\n    if(dir) {\n      e.preventDefault();\n      onTouchEnd.apply(this, arguments);\n      $(this)\n        .trigger($.Event('swipe', Object.assign({}, e)), dir)\n        .trigger($.Event(`swipe${dir}`, Object.assign({}, e)));\n    }\n  }\n\n}\n\nfunction onTouchStart(e) {\n\n  if (e.touches.length === 1) {\n    startPosX = e.touches[0].pageX;\n    startEvent = e;\n    isMoving = true;\n    didMoved = false;\n    startTime = new Date().getTime();\n    this.addEventListener('touchmove', onTouchMove, { passive : true === $.spotSwipe.preventDefault });\n    this.addEventListener('touchend', onTouchEnd, false);\n  }\n}\n\nfunction init() {\n  this.addEventListener && this.addEventListener('touchstart', onTouchStart, { passive : true });\n}\n\n// function teardown() {\n//   this.removeEventListener('touchstart', onTouchStart);\n// }\n\nclass SpotSwipe {\n  constructor() {\n    this.version = '1.0.0';\n    this.enabled = 'ontouchstart' in document.documentElement;\n    this.preventDefault = false;\n    this.moveThreshold = 75;\n    this.timeThreshold = 200;\n    this._init();\n  }\n\n  _init() {\n    $.event.special.swipe = { setup: init };\n    $.event.special.tap = { setup: init };\n\n    $.each(['left', 'up', 'down', 'right'], function () {\n      $.event.special[`swipe${this}`] = { setup: function(){\n        $(this).on('swipe', $.noop);\n      } };\n    });\n  }\n}\n\n/****************************************************\n * As far as I can tell, both setupSpotSwipe and    *\n * setupTouchHandler should be idempotent,          *\n * because they directly replace functions &        *\n * values, and do not add event handlers directly.  *\n ****************************************************/\n\nTouch.setupSpotSwipe = function() {\n  $.spotSwipe = new SpotSwipe($);\n};\n\n/****************************************************\n * Method for adding pseudo drag events to elements *\n ***************************************************/\nTouch.setupTouchHandler = function() {\n  $.fn.addTouch = function(){\n    this.each(function(i, el){\n      $(el).bind('touchstart touchmove touchend touchcancel', function(event)  {\n        //we pass the original event object because the jQuery event\n        //object is normalized to w3c specs and does not provide the TouchList\n        handleTouch(event);\n      });\n    });\n\n    var handleTouch = function(event) {\n      var touches = event.changedTouches,\n          first = touches[0],\n          eventTypes = {\n            touchstart: 'mousedown',\n            touchmove: 'mousemove',\n            touchend: 'mouseup'\n          },\n          type = eventTypes[event.type],\n          simulatedEvent\n        ;\n\n      if('MouseEvent' in window && typeof window.MouseEvent === 'function') {\n        simulatedEvent = new window.MouseEvent(type, {\n          'bubbles': true,\n          'cancelable': true,\n          'screenX': first.screenX,\n          'screenY': first.screenY,\n          'clientX': first.clientX,\n          'clientY': first.clientY\n        });\n      } else {\n        simulatedEvent = document.createEvent('MouseEvent');\n        simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0/*left*/, null);\n      }\n      first.target.dispatchEvent(simulatedEvent);\n    };\n  };\n};\n\nTouch.init = function () {\n  if(typeof($.spotSwipe) === 'undefined') {\n    Touch.setupSpotSwipe($);\n    Touch.setupTouchHandler($);\n  }\n};\n\nexport {Touch};\n", "import $ from 'jquery';\nimport { onLoad } from './foundation.core.utils';\nimport { Motion } from './foundation.util.motion';\n\nconst MutationObserver = (function () {\n  var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];\n  for (var i=0; i < prefixes.length; i++) {\n    if (`${prefixes[i]}MutationObserver` in window) {\n      return window[`${prefixes[i]}MutationObserver`];\n    }\n  }\n  return false;\n})();\n\nconst triggers = (el, type) => {\n  el.data(type).split(' ').forEach(id => {\n    $(`#${id}`)[ type === 'close' ? 'trigger' : 'triggerHandler'](`${type}.zf.trigger`, [el]);\n  });\n};\n\nvar Triggers = {\n  Listeners: {\n    Basic: {},\n    Global: {}\n  },\n  Initializers: {}\n}\n\nTriggers.Listeners.Basic  = {\n  openListener: function() {\n    triggers($(this), 'open');\n  },\n  closeListener: function() {\n    let id = $(this).data('close');\n    if (id) {\n      triggers($(this), 'close');\n    }\n    else {\n      $(this).trigger('close.zf.trigger');\n    }\n  },\n  toggleListener: function() {\n    let id = $(this).data('toggle');\n    if (id) {\n      triggers($(this), 'toggle');\n    } else {\n      $(this).trigger('toggle.zf.trigger');\n    }\n  },\n  closeableListener: function(e) {\n    let animation = $(this).data('closable');\n\n    // Only close the first closable element. See https://git.io/zf-7833\n    e.stopPropagation();\n\n    if(animation !== ''){\n      Motion.animateOut($(this), animation, function() {\n        $(this).trigger('closed.zf');\n      });\n    }else{\n      $(this).fadeOut().trigger('closed.zf');\n    }\n  },\n  toggleFocusListener: function() {\n    let id = $(this).data('toggle-focus');\n    $(`#${id}`).triggerHandler('toggle.zf.trigger', [$(this)]);\n  }\n};\n\n// Elements with [data-open] will reveal a plugin that supports it when clicked.\nTriggers.Initializers.addOpenListener = ($elem) => {\n  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener);\n  $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener);\n}\n\n// Elements with [data-close] will close a plugin that supports it when clicked.\n// If used without a value on [data-close], the event will bubble, allowing it to close a parent component.\nTriggers.Initializers.addCloseListener = ($elem) => {\n  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener);\n  $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener);\n}\n\n// Elements with [data-toggle] will toggle a plugin that supports it when clicked.\nTriggers.Initializers.addToggleListener = ($elem) => {\n  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener);\n  $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener);\n}\n\n// Elements with [data-closable] will respond to close.zf.trigger events.\nTriggers.Initializers.addCloseableListener = ($elem) => {\n  $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener);\n  $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener);\n}\n\n// Elements with [data-toggle-focus] will respond to coming in and out of focus\nTriggers.Initializers.addToggleFocusListener = ($elem) => {\n  $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener);\n  $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);\n}\n\n\n\n// More Global/complex listeners and triggers\nTriggers.Listeners.Global  = {\n  resizeListener: function($nodes) {\n    if(!MutationObserver){//fallback for IE 9\n      $nodes.each(function(){\n        $(this).triggerHandler('resizeme.zf.trigger');\n      });\n    }\n    //trigger all listening elements and signal a resize event\n    $nodes.attr('data-events', \"resize\");\n  },\n  scrollListener: function($nodes) {\n    if(!MutationObserver){//fallback for IE 9\n      $nodes.each(function(){\n        $(this).triggerHandler('scrollme.zf.trigger');\n      });\n    }\n    //trigger all listening elements and signal a scroll event\n    $nodes.attr('data-events', \"scroll\");\n  },\n  closeMeListener: function(e, pluginId){\n    let plugin = e.namespace.split('.')[0];\n    let plugins = $(`[data-${plugin}]`).not(`[data-yeti-box=\"${pluginId}\"]`);\n\n    plugins.each(function(){\n      let _this = $(this);\n      _this.triggerHandler('close.zf.trigger', [_this]);\n    });\n  }\n}\n\n// Global, parses whole document.\nTriggers.Initializers.addClosemeListener = function(pluginName) {\n  var yetiBoxes = $('[data-yeti-box]'),\n      plugNames = ['dropdown', 'tooltip', 'reveal'];\n\n  if(pluginName){\n    if(typeof pluginName === 'string'){\n      plugNames.push(pluginName);\n    }else if(typeof pluginName === 'object' && typeof pluginName[0] === 'string'){\n      plugNames = plugNames.concat(pluginName);\n    }else{\n      console.error('Plugin names must be strings');\n    }\n  }\n  if(yetiBoxes.length){\n    let listeners = plugNames.map((name) => {\n      return `closeme.zf.${name}`;\n    }).join(' ');\n\n    $(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);\n  }\n}\n\nfunction debounceGlobalListener(debounce, trigger, listener) {\n  let timer, args = Array.prototype.slice.call(arguments, 3);\n  $(window).on(trigger, function() {\n    if (timer) { clearTimeout(timer); }\n    timer = setTimeout(function(){\n      listener.apply(null, args);\n    }, debounce || 10); //default time to emit scroll event\n  });\n}\n\nTriggers.Initializers.addResizeListener = function(debounce){\n  let $nodes = $('[data-resize]');\n  if($nodes.length){\n    debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);\n  }\n}\n\nTriggers.Initializers.addScrollListener = function(debounce){\n  let $nodes = $('[data-scroll]');\n  if($nodes.length){\n    debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);\n  }\n}\n\nTriggers.Initializers.addMutationEventsListener = function($elem) {\n  if(!MutationObserver){ return false; }\n  let $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]');\n\n  //element callback\n  var listeningElementsMutation = function (mutationRecordsList) {\n    var $target = $(mutationRecordsList[0].target);\n\n    //trigger the event handler for the element depending on type\n    switch (mutationRecordsList[0].type) {\n      case \"attributes\":\n        if ($target.attr(\"data-events\") === \"scroll\" && mutationRecordsList[0].attributeName === \"data-events\") {\n          $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);\n        }\n        if ($target.attr(\"data-events\") === \"resize\" && mutationRecordsList[0].attributeName === \"data-events\") {\n          $target.triggerHandler('resizeme.zf.trigger', [$target]);\n         }\n        if (mutationRecordsList[0].attributeName === \"style\") {\n          $target.closest(\"[data-mutate]\").attr(\"data-events\",\"mutate\");\n          $target.closest(\"[data-mutate]\").triggerHandler('mutateme.zf.trigger', [$target.closest(\"[data-mutate]\")]);\n        }\n        break;\n\n      case \"childList\":\n        $target.closest(\"[data-mutate]\").attr(\"data-events\",\"mutate\");\n        $target.closest(\"[data-mutate]\").triggerHandler('mutateme.zf.trigger', [$target.closest(\"[data-mutate]\")]);\n        break;\n\n      default:\n        return false;\n      //nothing\n    }\n  };\n\n  if ($nodes.length) {\n    //for each element that needs to listen for resizing, scrolling, or mutation add a single observer\n    for (var i = 0; i <= $nodes.length - 1; i++) {\n      var elementObserver = new MutationObserver(listeningElementsMutation);\n      elementObserver.observe($nodes[i], { attributes: true, childList: true, characterData: false, subtree: true, attributeFilter: [\"data-events\", \"style\"] });\n    }\n  }\n}\n\nTriggers.Initializers.addSimpleListeners = function() {\n  let $document = $(document);\n\n  Triggers.Initializers.addOpenListener($document);\n  Triggers.Initializers.addCloseListener($document);\n  Triggers.Initializers.addToggleListener($document);\n  Triggers.Initializers.addCloseableListener($document);\n  Triggers.Initializers.addToggleFocusListener($document);\n\n}\n\nTriggers.Initializers.addGlobalListeners = function() {\n  let $document = $(document);\n  Triggers.Initializers.addMutationEventsListener($document);\n  Triggers.Initializers.addResizeListener(250);\n  Triggers.Initializers.addScrollListener();\n  Triggers.Initializers.addClosemeListener();\n}\n\n\nTriggers.init = function (__, Foundation) {\n  onLoad($(window), function () {\n    if ($.triggersInitialized !== true) {\n      Triggers.Initializers.addSimpleListeners();\n      Triggers.Initializers.addGlobalListeners();\n      $.triggersInitialized = true;\n    }\n  });\n\n  if(Foundation) {\n    Foundation.Triggers = Triggers;\n    // Legacy included to be backwards compatible for now.\n    Foundation.IHearYou = Triggers.Initializers.addGlobalListeners\n  }\n}\n\nexport {Triggers};\n", "import { GetYoDigits } from './foundation.core.utils';\n\n// Abstract class for providing lifecycle hooks. Expect plugins to define AT LEAST\n// {function} _setup (replaces previous constructor),\n// {function} _destroy (replaces previous destroy)\nclass Plugin {\n\n  constructor(element, options) {\n    this._setup(element, options);\n    var pluginName = getPluginName(this);\n    this.uuid = GetYoDigits(6, pluginName);\n\n    if(!this.$element.attr(`data-${pluginName}`)){ this.$element.attr(`data-${pluginName}`, this.uuid); }\n    if(!this.$element.data('zfPlugin')){ this.$element.data('zfPlugin', this); }\n    /**\n     * Fires when the plugin has initialized.\n     * @event Plugin#init\n     */\n    this.$element.trigger(`init.zf.${pluginName}`);\n  }\n\n  destroy() {\n    this._destroy();\n    var pluginName = getPluginName(this);\n    this.$element.removeAttr(`data-${pluginName}`).removeData('zfPlugin')\n        /**\n         * Fires when the plugin has been destroyed.\n         * @event Plugin#destroyed\n         */\n        .trigger(`destroyed.zf.${pluginName}`);\n    for(var prop in this){\n      if (this.hasOwnProperty(prop)) {\n        this[prop] = null; //clean up script to prep for garbage collection.\n      }\n    }\n  }\n}\n\n// Convert PascalCase to kebab-case\n// Thank you: http://stackoverflow.com/a/8955580\nfunction hyphenate(str) {\n  return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nfunction getPluginName(obj) {\n  return hyphenate(obj.className);\n}\n\nexport {Plugin};\n", "import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { GetYoDigits } from './foundation.core.utils';\n\n/**\n * Abide module.\n * @module foundation.abide\n */\n\nclass Abide extends Plugin {\n  /**\n   * Creates a new instance of Abide.\n   * @class\n   * @name Abide\n   * @fires Abide#init\n   * @param {Object} element - jQuery object to add the trigger to.\n   * @param {Object} options - Overrides to the default plugin settings.\n   */\n  _setup(element, options = {}) {\n    this.$element = element;\n    this.options  = $.extend(true, {}, Abide.defaults, this.$element.data(), options);\n    this.isEnabled = true;\n    this.formnovalidate = null;\n\n    this.className = 'Abide'; // ie9 back compat\n    this._init();\n  }\n\n  /**\n   * Initializes the Abide plugin and calls functions to get Abide functioning on load.\n   * @private\n   */\n  _init() {\n    this.$inputs = $.merge(                               // Consider as input to validate:\n      this.$element.find('input').not('[type=\"submit\"]'), // * all input fields expect submit\n      this.$element.find('textarea, select')              // * all textareas and select fields\n    );\n    this.$submits = this.$element.find('[type=\"submit\"]');\n    const $globalErrors = this.$element.find('[data-abide-error]');\n\n    // Add a11y attributes to all fields\n    if (this.options.a11yAttributes) {\n      this.$inputs.each((i, input) => this.addA11yAttributes($(input)));\n      $globalErrors.each((i, error) => this.addGlobalErrorA11yAttributes($(error)));\n    }\n\n    this._events();\n  }\n\n  /**\n   * Initializes events for Abide.\n   * @private\n   */\n  _events() {\n    this.$element.off('.abide')\n      .on('reset.zf.abide', () => {\n        this.resetForm();\n      })\n      .on('submit.zf.abide', () => {\n        return this.validateForm();\n      });\n\n    this.$submits\n      .off('click.zf.abide keydown.zf.abide')\n      .on('click.zf.abide keydown.zf.abide', (e) => {\n        if (!e.key || (e.key === ' ' || e.key === 'Enter')) {\n          e.preventDefault();\n          this.formnovalidate = e.target.getAttribute('formnovalidate') !== null;\n          this.$element.submit();\n        }\n      });\n\n    if (this.options.validateOn === 'fieldChange') {\n      this.$inputs\n        .off('change.zf.abide')\n        .on('change.zf.abide', (e) => {\n          this.validateInput($(e.target));\n        });\n    }\n\n    if (this.options.liveValidate) {\n      this.$inputs\n        .off('input.zf.abide')\n        .on('input.zf.abide', (e) => {\n          this.validateInput($(e.target));\n        });\n    }\n\n    if (this.options.validateOnBlur) {\n      this.$inputs\n        .off('blur.zf.abide')\n        .on('blur.zf.abide', (e) => {\n          this.validateInput($(e.target));\n        });\n    }\n  }\n\n  /**\n   * Calls necessary functions to update Abide upon DOM change\n   * @private\n   */\n  _reflow() {\n    this._init();\n  }\n\n  /**\n   * Checks whether the submitted form should be validated or not, consodering formnovalidate and isEnabled\n   * @returns {Boolean}\n   * @private\n   */\n  _validationIsDisabled() {\n    if (this.isEnabled === false) { // whole validation disabled\n      return true;\n    } else if (typeof this.formnovalidate === 'boolean') { // triggered by $submit\n      return this.formnovalidate;\n    }\n    // triggered by Enter in non-submit input\n    return this.$submits.length ? this.$submits[0].getAttribute('formnovalidate') !== null : false;\n  }\n\n  /**\n   * Enables the whole validation\n   */\n  enableValidation() {\n    this.isEnabled = true;\n  }\n\n  /**\n   * Disables the whole validation\n   */\n  disableValidation() {\n    this.isEnabled = false;\n  }\n\n  /**\n   * Checks whether or not a form element has the required attribute and if it's checked or not\n   * @param {Object} element - jQuery object to check for required attribute\n   * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty\n   */\n  requiredCheck($el) {\n    if (!$el.attr('required')) return true;\n\n    var isGood = true;\n\n    switch ($el[0].type) {\n      case 'checkbox':\n        isGood = $el[0].checked;\n        break;\n\n      case 'select':\n      case 'select-one':\n      case 'select-multiple':\n        var opt = $el.find('option:selected');\n        if (!opt.length || !opt.val()) isGood = false;\n        break;\n\n      default:\n        if (!$el.val() || !$el.val().length) isGood = false;\n    }\n\n    return isGood;\n  }\n\n  /**\n   * Get:\n   * - Based on $el, the first element(s) corresponding to `formErrorSelector` in this order:\n   *   1. The element's direct sibling('s).\n   *   2. The element's parent's children.\n   * - Element(s) with the attribute `[data-form-error-for]` set with the element's id.\n   *\n   * This allows for multiple form errors per input, though if none are found, no form errors will be shown.\n   *\n   * @param {Object} $el - jQuery object to use as reference to find the form error selector.\n   * @param {String[]} [failedValidators] - List of failed validators.\n   * @returns {Object} jQuery object with the selector.\n   */\n  findFormError($el, failedValidators) {\n    var id = $el.length ? $el[0].id : '';\n    var $error = $el.siblings(this.options.formErrorSelector);\n\n    if (!$error.length) {\n      $error = $el.parent().find(this.options.formErrorSelector);\n    }\n\n    if (id) {\n      $error = $error.add(this.$element.find(`[data-form-error-for=\"${id}\"]`));\n    }\n\n    if (!!failedValidators) {\n      $error = $error.not('[data-form-error-on]')\n\n      failedValidators.forEach((v) => {\n        $error = $error.add($el.siblings(`[data-form-error-on=\"${v}\"]`));\n        $error = $error.add(this.$element.find(`[data-form-error-for=\"${id}\"][data-form-error-on=\"${v}\"]`));\n      });\n    }\n\n    return $error;\n  }\n\n  /**\n   * Get the first element in this order:\n   * 2. The <label> with the attribute `[for=\"someInputId\"]`\n   * 3. The `.closest()` <label>\n   *\n   * @param {Object} $el - jQuery object to check for required attribute\n   * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty\n   */\n  findLabel($el) {\n    var id = $el[0].id;\n    var $label = this.$element.find(`label[for=\"${id}\"]`);\n\n    if (!$label.length) {\n      return $el.closest('label');\n    }\n\n    return $label;\n  }\n\n  /**\n   * Get the set of labels associated with a set of radio els in this order\n   * 2. The <label> with the attribute `[for=\"someInputId\"]`\n   * 3. The `.closest()` <label>\n   *\n   * @param {Object} $el - jQuery object to check for required attribute\n   * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty\n   */\n  findRadioLabels($els) {\n    var labels = $els.map((i, el) => {\n      var id = el.id;\n      var $label = this.$element.find(`label[for=\"${id}\"]`);\n\n      if (!$label.length) {\n        $label = $(el).closest('label');\n      }\n      return $label[0];\n    });\n\n    return $(labels);\n  }\n\n  /**\n   * Get the set of labels associated with a set of checkbox els in this order\n   * 2. The <label> with the attribute `[for=\"someInputId\"]`\n   * 3. The `.closest()` <label>\n   *\n   * @param {Object} $el - jQuery object to check for required attribute\n   * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty\n   */\n  findCheckboxLabels($els) {\n    var labels = $els.map((i, el) => {\n      var id = el.id;\n      var $label = this.$element.find(`label[for=\"${id}\"]`);\n\n      if (!$label.length) {\n        $label = $(el).closest('label');\n      }\n      return $label[0];\n    });\n\n    return $(labels);\n  }\n\n  /**\n   * Adds the CSS error class as specified by the Abide settings to the label, input, and the form\n   * @param {Object} $el - jQuery object to add the class to\n   * @param {String[]} [failedValidators] - List of failed validators.\n   */\n  addErrorClasses($el, failedValidators) {\n    var $label = this.findLabel($el);\n    var $formError = this.findFormError($el, failedValidators);\n\n    if ($label.length) {\n      $label.addClass(this.options.labelErrorClass);\n    }\n\n    if ($formError.length) {\n      $formError.addClass(this.options.formErrorClass);\n    }\n\n    $el.addClass(this.options.inputErrorClass).attr({\n      'data-invalid': '',\n      'aria-invalid': true\n    });\n\n    if ($formError.filter(':visible').length) {\n      this.addA11yErrorDescribe($el, $formError);\n    }\n  }\n\n  /**\n   * Adds [for] and [role=alert] attributes to all form error targetting $el,\n   * and [aria-describedby] attribute to $el toward the first form error.\n   * @param {Object} $el - jQuery object\n   */\n  addA11yAttributes($el) {\n    let $errors = this.findFormError($el);\n    let $labels = $errors.filter('label');\n    if (!$errors.length) return;\n\n    let $error = $errors.filter(':visible').first();\n    if ($error.length) {\n      this.addA11yErrorDescribe($el, $error);\n    }\n\n    if ($labels.filter('[for]').length < $labels.length) {\n      // Get the input ID or create one\n      let elemId = $el.attr('id');\n      if (typeof elemId === 'undefined') {\n        elemId = GetYoDigits(6, 'abide-input');\n        $el.attr('id', elemId);\n      }\n\n      // For each label targeting $el, set [for] if it is not set.\n      $labels.each((i, label) => {\n        const $label = $(label);\n        if (typeof $label.attr('for') === 'undefined')\n          $label.attr('for', elemId);\n      });\n    }\n\n    // For each error targeting $el, set [role=alert] if it is not set.\n    $errors.each((i, label) => {\n      const $label = $(label);\n      if (typeof $label.attr('role') === 'undefined')\n        $label.attr('role', 'alert');\n    }).end();\n  }\n\n  addA11yErrorDescribe($el, $error) {\n    if (typeof $el.attr('aria-describedby') !== 'undefined') return;\n\n    // Set [aria-describedby] on the input toward the first form error if it is not set\n    // Get the first error ID or create one\n    let errorId = $error.attr('id');\n    if (typeof errorId === 'undefined') {\n      errorId = GetYoDigits(6, 'abide-error');\n      $error.attr('id', errorId);\n    }\n\n    $el.attr('aria-describedby', errorId).data('abide-describedby', true);\n  }\n\n  /**\n   * Adds [aria-live] attribute to the given global form error $el.\n   * @param {Object} $el - jQuery object to add the attribute to\n   */\n  addGlobalErrorA11yAttributes($el) {\n    if (typeof $el.attr('aria-live') === 'undefined')\n      $el.attr('aria-live', this.options.a11yErrorLevel);\n  }\n\n  /**\n   * Remove CSS error classes etc from an entire radio button group\n   * @param {String} groupName - A string that specifies the name of a radio button group\n   *\n   */\n  removeRadioErrorClasses(groupName) {\n    var $els = this.$element.find(`:radio[name=\"${groupName}\"]`);\n    var $labels = this.findRadioLabels($els);\n    var $formErrors = this.findFormError($els);\n\n    if ($labels.length) {\n      $labels.removeClass(this.options.labelErrorClass);\n    }\n\n    if ($formErrors.length) {\n      $formErrors.removeClass(this.options.formErrorClass);\n    }\n\n    $els.removeClass(this.options.inputErrorClass).attr({\n      'data-invalid': null,\n      'aria-invalid': null\n    });\n\n  }\n\n  /**\n   * Remove CSS error classes etc from an entire checkbox group\n   * @param {String} groupName - A string that specifies the name of a checkbox group\n   *\n   */\n  removeCheckboxErrorClasses(groupName) {\n    var $els = this.$element.find(`:checkbox[name=\"${groupName}\"]`);\n    var $labels = this.findCheckboxLabels($els);\n    var $formErrors = this.findFormError($els);\n\n    if ($labels.length) {\n      $labels.removeClass(this.options.labelErrorClass);\n    }\n\n    if ($formErrors.length) {\n      $formErrors.removeClass(this.options.formErrorClass);\n    }\n\n    $els.removeClass(this.options.inputErrorClass).attr({\n      'data-invalid': null,\n      'aria-invalid': null\n    });\n\n  }\n\n  /**\n   * Removes CSS error class as specified by the Abide settings from the label, input, and the form\n   * @param {Object} $el - jQuery object to remove the class from\n   */\n  removeErrorClasses($el) {\n    // radios need to clear all of the els\n    if ($el[0].type === 'radio') {\n      return this.removeRadioErrorClasses($el.attr('name'));\n    }\n    // checkboxes need to clear all of the els\n    else if ($el[0].type === 'checkbox') {\n      return this.removeCheckboxErrorClasses($el.attr('name'));\n    }\n\n    var $label = this.findLabel($el);\n    var $formError = this.findFormError($el);\n\n    if ($label.length) {\n      $label.removeClass(this.options.labelErrorClass);\n    }\n\n    if ($formError.length) {\n      $formError.removeClass(this.options.formErrorClass);\n    }\n\n    $el.removeClass(this.options.inputErrorClass).attr({\n      'data-invalid': null,\n      'aria-invalid': null\n    });\n\n    if ($el.data('abide-describedby')) {\n      $el.removeAttr('aria-describedby').removeData('abide-describedby');\n    }\n  }\n\n  /**\n   * Goes through a form to find inputs and proceeds to validate them in ways specific to their type.\n   * Ignores inputs with data-abide-ignore, type=\"hidden\" or disabled attributes set\n   * @fires Abide#invalid\n   * @fires Abide#valid\n   * @param {Object} element - jQuery object to validate, should be an HTML input\n   * @returns {Boolean} goodToGo - If the input is valid or not.\n   */\n  validateInput($el) {\n    var clearRequire = this.requiredCheck($el),\n        validator = $el.attr('data-validator'),\n        failedValidators = [],\n        manageErrorClasses = true;\n\n    // skip validation if disabled\n    if (this._validationIsDisabled()) {\n      return true;\n    }\n\n    // don't validate ignored inputs or hidden inputs or disabled inputs\n    if ($el.is('[data-abide-ignore]') || $el.is('[type=\"hidden\"]') || $el.is('[disabled]')) {\n      return true;\n    }\n\n    switch ($el[0].type) {\n      case 'radio':\n        this.validateRadio($el.attr('name')) || failedValidators.push('required');\n        break;\n\n      case 'checkbox':\n        this.validateCheckbox($el.attr('name')) || failedValidators.push('required');\n        // validateCheckbox() adds/removes error classes\n        manageErrorClasses = false;\n        break;\n\n      case 'select':\n      case 'select-one':\n      case 'select-multiple':\n        clearRequire || failedValidators.push('required');\n        break;\n\n      default:\n        clearRequire || failedValidators.push('required');\n        this.validateText($el) || failedValidators.push('pattern');\n    }\n\n    if (validator) {\n      const required = $el.attr('required') ? true : false;\n\n      validator.split(' ').forEach((v) => {\n        this.options.validators[v]($el, required, $el.parent()) || failedValidators.push(v);\n      });\n    }\n\n    if ($el.attr('data-equalto')) {\n      this.options.validators.equalTo($el) || failedValidators.push('equalTo');\n    }\n\n    var goodToGo = failedValidators.length === 0;\n    var message = (goodToGo ? 'valid' : 'invalid') + '.zf.abide';\n\n    if (goodToGo) {\n      // Re-validate inputs that depend on this one with equalto\n      const dependentElements = this.$element.find(`[data-equalto=\"${$el.attr('id')}\"]`);\n      if (dependentElements.length) {\n        let _this = this;\n        dependentElements.each(function() {\n          if ($(this).val()) {\n            _this.validateInput($(this));\n          }\n        });\n      }\n    }\n\n    if (manageErrorClasses) {\n      if (!goodToGo) {\n        this.addErrorClasses($el, failedValidators);\n      } else {\n        this.removeErrorClasses($el);\n      }\n    }\n\n    /**\n     * Fires when the input is done checking for validation. Event trigger is either `valid.zf.abide` or `invalid.zf.abide`\n     * Trigger includes the DOM element of the input.\n     * @event Abide#valid\n     * @event Abide#invalid\n     */\n    $el.trigger(message, [$el]);\n\n    return goodToGo;\n  }\n\n  /**\n   * Goes through a form and if there are any invalid inputs, it will display the form error element\n   * @returns {Boolean} noError - true if no errors were detected...\n   * @fires Abide#formvalid\n   * @fires Abide#forminvalid\n   */\n  validateForm() {\n    var acc = [];\n    var _this = this;\n    var checkboxGroupName;\n\n    // Remember first form submission to prevent specific checkbox validation (more than one required) until form got initially submitted\n    if (!this.initialized) {\n      this.initialized = true;\n    }\n\n    // skip validation if disabled\n    if (this._validationIsDisabled()) {\n      this.formnovalidate = null;\n      return true;\n    }\n\n    this.$inputs.each(function() {\n\n      // Only use one checkbox per group since validateCheckbox() iterates over all associated checkboxes\n      if ($(this)[0].type === 'checkbox') {\n        if ($(this).attr('name') === checkboxGroupName) return true;\n        checkboxGroupName = $(this).attr('name');\n      }\n\n      acc.push(_this.validateInput($(this)));\n    });\n\n    var noError = acc.indexOf(false) === -1;\n\n    this.$element.find('[data-abide-error]').each((i, elem) => {\n      const $elem = $(elem);\n      // Ensure a11y attributes are set\n      if (this.options.a11yAttributes) this.addGlobalErrorA11yAttributes($elem);\n      // Show or hide the error\n      $elem.css('display', (noError ? 'none' : 'block'));\n    });\n\n    /**\n     * Fires when the form is finished validating. Event trigger is either `formvalid.zf.abide` or `forminvalid.zf.abide`.\n     * Trigger includes the element of the form.\n     * @event Abide#formvalid\n     * @event Abide#forminvalid\n     */\n    this.$element.trigger((noError ? 'formvalid' : 'forminvalid') + '.zf.abide', [this.$element]);\n\n    return noError;\n  }\n\n  /**\n   * Determines whether or a not a text input is valid based on the pattern specified in the attribute. If no matching pattern is found, returns true.\n   * @param {Object} $el - jQuery object to validate, should be a text input HTML element\n   * @param {String} pattern - string value of one of the RegEx patterns in Abide.options.patterns\n   * @returns {Boolean} Boolean value depends on whether or not the input value matches the pattern specified\n   */\n  validateText($el, pattern) {\n    // A pattern can be passed to this function, or it will be infered from the input's \"pattern\" attribute, or it's \"type\" attribute\n    pattern = (pattern || $el.attr('data-pattern') || $el.attr('pattern') || $el.attr('type'));\n    var inputText = $el.val();\n    var valid = true;\n\n    if (inputText.length) {\n      // If the pattern attribute on the element is in Abide's list of patterns, then test that regexp\n      if (this.options.patterns.hasOwnProperty(pattern)) {\n        valid = this.options.patterns[pattern].test(inputText);\n      }\n      // If the pattern name isn't also the type attribute of the field, then test it as a regexp\n      else if (pattern !== $el.attr('type')) {\n        valid = new RegExp(pattern).test(inputText);\n      }\n    }\n\n    return valid;\n   }\n\n  /**\n   * Determines whether or a not a radio input is valid based on whether or not it is required and selected. Although the function targets a single `<input>`, it validates by checking the `required` and `checked` properties of all radio buttons in its group.\n   * @param {String} groupName - A string that specifies the name of a radio button group\n   * @returns {Boolean} Boolean value depends on whether or not at least one radio input has been selected (if it's required)\n   */\n  validateRadio(groupName) {\n    // If at least one radio in the group has the `required` attribute, the group is considered required\n    // Per W3C spec, all radio buttons in a group should have `required`, but we're being nice\n    var $group = this.$element.find(`:radio[name=\"${groupName}\"]`);\n    var valid = false, required = false;\n\n    // For the group to be required, at least one radio needs to be required\n    $group.each((i, e) => {\n      if ($(e).attr('required')) {\n        required = true;\n      }\n    });\n    if (!required) valid=true;\n\n    if (!valid) {\n      // For the group to be valid, at least one radio needs to be checked\n      $group.each((i, e) => {\n        if ($(e).prop('checked')) {\n          valid = true;\n        }\n      });\n    }\n\n    return valid;\n  }\n\n  /**\n   * Determines whether or a not a checkbox input is valid based on whether or not it is required and checked. Although the function targets a single `<input>`, it validates by checking the `required` and `checked` properties of all checkboxes in its group.\n   * @param {String} groupName - A string that specifies the name of a checkbox group\n   * @returns {Boolean} Boolean value depends on whether or not at least one checkbox input has been checked (if it's required)\n   */\n  validateCheckbox(groupName) {\n    // If at least one checkbox in the group has the `required` attribute, the group is considered required\n    // Per W3C spec, all checkboxes in a group should have `required`, but we're being nice\n    var $group = this.$element.find(`:checkbox[name=\"${groupName}\"]`);\n    var valid = false, required = false, minRequired = 1, checked = 0;\n\n    // For the group to be required, at least one checkbox needs to be required\n    $group.each((i, e) => {\n      if ($(e).attr('required')) {\n        required = true;\n      }\n    });\n    if (!required) valid=true;\n\n    if (!valid) {\n      // Count checked checkboxes within the group\n      // Use data-min-required if available (default: 1)\n      $group.each((i, e) => {\n        if ($(e).prop('checked')) {\n          checked++;\n        }\n        if (typeof $(e).attr('data-min-required') !== 'undefined') {\n          minRequired = parseInt($(e).attr('data-min-required'), 10);\n        }\n      });\n\n      // For the group to be valid, the minRequired amount of checkboxes have to be checked\n      if (checked >= minRequired) {\n        valid = true;\n      }\n    }\n\n    // Skip validation if more than 1 checkbox have to be checked AND if the form hasn't got submitted yet (otherwise it will already show an error during the first fill in)\n    if (this.initialized !== true && minRequired > 1) {\n      return true;\n    }\n\n    // Refresh error class for all input\n    $group.each((i, e) => {\n      if (!valid) {\n        this.addErrorClasses($(e), ['required']);\n      } else {\n        this.removeErrorClasses($(e));\n      }\n    });\n\n    return valid;\n  }\n\n  /**\n   * Determines if a selected input passes a custom validation function. Multiple validations can be used, if passed to the element with `data-validator=\"foo bar baz\"` in a space separated listed.\n   * @param {Object} $el - jQuery input element.\n   * @param {String} validators - a string of function names matching functions in the Abide.options.validators object.\n   * @param {Boolean} required - self explanatory?\n   * @returns {Boolean} - true if validations passed.\n   */\n  matchValidation($el, validators, required) {\n    required = required ? true : false;\n\n    var clear = validators.split(' ').map((v) => {\n      return this.options.validators[v]($el, required, $el.parent());\n    });\n    return clear.indexOf(false) === -1;\n  }\n\n  /**\n   * Resets form inputs and styles\n   * @fires Abide#formreset\n   */\n  resetForm() {\n    var $form = this.$element,\n        opts = this.options;\n\n    $(`.${opts.labelErrorClass}`, $form).not('small').removeClass(opts.labelErrorClass);\n    $(`.${opts.inputErrorClass}`, $form).not('small').removeClass(opts.inputErrorClass);\n    $(`${opts.formErrorSelector}.${opts.formErrorClass}`).removeClass(opts.formErrorClass);\n    $form.find('[data-abide-error]').css('display', 'none');\n    $(':input', $form).not(':button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]').val('').attr({\n      'data-invalid': null,\n      'aria-invalid': null\n    });\n    $(':input:radio', $form).not('[data-abide-ignore]').prop('checked',false).attr({\n      'data-invalid': null,\n      'aria-invalid': null\n    });\n    $(':input:checkbox', $form).not('[data-abide-ignore]').prop('checked',false).attr({\n      'data-invalid': null,\n      'aria-invalid': null\n    });\n    /**\n     * Fires when the form has been reset.\n     * @event Abide#formreset\n     */\n    $form.trigger('formreset.zf.abide', [$form]);\n  }\n\n  /**\n   * Destroys an instance of Abide.\n   * Removes error styles and classes from elements, without resetting their values.\n   */\n  _destroy() {\n    var _this = this;\n    this.$element\n      .off('.abide')\n      .find('[data-abide-error]')\n        .css('display', 'none');\n\n    this.$inputs\n      .off('.abide')\n      .each(function() {\n        _this.removeErrorClasses($(this));\n      });\n\n    this.$submits\n      .off('.abide');\n  }\n}\n\n/**\n * Default settings for plugin\n */\nAbide.defaults = {\n  /**\n   * The default event to validate inputs. Checkboxes and radios validate immediately.\n   * Remove or change this value for manual validation.\n   * @option\n   * @type {?string}\n   * @default 'fieldChange'\n   */\n  validateOn: 'fieldChange',\n\n  /**\n   * Class to be applied to input labels on failed validation.\n   * @option\n   * @type {string}\n   * @default 'is-invalid-label'\n   */\n  labelErrorClass: 'is-invalid-label',\n\n  /**\n   * Class to be applied to inputs on failed validation.\n   * @option\n   * @type {string}\n   * @default 'is-invalid-input'\n   */\n  inputErrorClass: 'is-invalid-input',\n\n  /**\n   * Class selector to use to target Form Errors for show/hide.\n   * @option\n   * @type {string}\n   * @default '.form-error'\n   */\n  formErrorSelector: '.form-error',\n\n  /**\n   * Class added to Form Errors on failed validation.\n   * @option\n   * @type {string}\n   * @default 'is-visible'\n   */\n  formErrorClass: 'is-visible',\n\n  /**\n   * If true, automatically insert when possible:\n   * - `[aria-describedby]` on fields\n   * - `[role=alert]` on form errors and `[for]` on form error labels\n   * - `[aria-live]` on global errors `[data-abide-error]` (see option `a11yErrorLevel`).\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  a11yAttributes: true,\n\n  /**\n   * [aria-live] attribute value to be applied on global errors `[data-abide-error]`.\n   * Options are: 'assertive', 'polite' and 'off'/null\n   * @option\n   * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions\n   * @type {string}\n   * @default 'assertive'\n   */\n  a11yErrorLevel: 'assertive',\n\n  /**\n   * Set to true to validate text inputs on any value change.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  liveValidate: false,\n\n  /**\n   * Set to true to validate inputs on blur.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  validateOnBlur: false,\n\n  patterns: {\n    alpha : /^[a-zA-Z]+$/,\n    // eslint-disable-next-line camelcase\n    alpha_numeric : /^[a-zA-Z0-9]+$/,\n    integer : /^[-+]?\\d+$/,\n    number : /^[-+]?\\d*(?:[\\.\\,]\\d+)?$/,\n\n    // amex, visa, diners\n    card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(?:222[1-9]|2[3-6][0-9]{2}|27[0-1][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$/,\n    cvv : /^([0-9]){3,4}$/,\n\n    // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address\n    email : /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,\n\n    // From CommonRegexJS (@talyssonoc)\n    // https://github.com/talyssonoc/CommonRegexJS/blob/e2901b9f57222bc14069dc8f0598d5f412555411/lib/commonregex.js#L76\n    // For more restrictive URL Regexs, see https://mathiasbynens.be/demo/url-regex.\n    url: /^((?:(https?|ftps?|file|ssh|sftp):\\/\\/|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}\\/)(?:[^\\s()<>]+|\\((?:[^\\s()<>]+|(?:\\([^\\s()<>]+\\)))*\\))+(?:\\((?:[^\\s()<>]+|(?:\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\\'\".,<>?\\xab\\xbb\\u201c\\u201d\\u2018\\u2019]))$/,\n\n    // abc.de\n    domain : /^([a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,8}$/,\n\n    datetime : /^([0-2][0-9]{3})\\-([0-1][0-9])\\-([0-3][0-9])T([0-5][0-9])\\:([0-5][0-9])\\:([0-5][0-9])(Z|([\\-\\+]([0-1][0-9])\\:00))$/,\n    // YYYY-MM-DD\n    date : /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,\n    // HH:MM:SS\n    time : /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,\n    dateISO : /^\\d{4}[\\/\\-]\\d{1,2}[\\/\\-]\\d{1,2}$/,\n    // MM/DD/YYYY\n    // eslint-disable-next-line camelcase\n    month_day_year : /^(0[1-9]|1[012])[- \\/.](0[1-9]|[12][0-9]|3[01])[- \\/.]\\d{4}$/,\n    // DD/MM/YYYY\n    // eslint-disable-next-line camelcase\n    day_month_year : /^(0[1-9]|[12][0-9]|3[01])[- \\/.](0[1-9]|1[012])[- \\/.]\\d{4}$/,\n\n    // #FFF or #FFFFFF\n    color : /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/,\n\n    // Domain || URL\n    website: {\n      test: (text) => {\n        return Abide.defaults.patterns.domain.test(text) || Abide.defaults.patterns.url.test(text);\n      }\n    }\n  },\n\n  /**\n   * Optional validation functions to be used. `equalTo` being the only default included function.\n   * Functions should return only a boolean if the input is valid or not. Functions are given the following arguments:\n   * el : The jQuery element to validate.\n   * @option\n   */\n  validators: {\n    equalTo: function (el) {\n      return $(`#${el.attr('data-equalto')}`).val() === el.val();\n    }\n  }\n}\n\nexport { Abide };\n", "import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\n\n/**\n * Accordion module.\n * @module foundation.accordion\n * @requires foundation.util.keyboard\n */\n\nclass Accordion extends Plugin {\n  /**\n   * Creates a new instance of an accordion.\n   * @class\n   * @name Accordion\n   * @fires Accordion#init\n   * @param {jQuery} element - jQuery object to make into an accordion.\n   * @param {Object} options - a plain object with settings to override the default options.\n   */\n  _setup(element, options) {\n    this.$element = element;\n    this.options = $.extend({}, Accordion.defaults, this.$element.data(), options);\n\n    this.className = 'Accordion'; // ie9 back compat\n    this._init();\n\n    Keyboard.register('Accordion', {\n      'ENTER': 'toggle',\n      'SPACE': 'toggle',\n      'ARROW_DOWN': 'next',\n      'ARROW_UP': 'previous',\n      'HOME': 'first',\n      'END': 'last',\n    });\n  }\n\n  /**\n   * Initializes the accordion by animating the preset active pane(s).\n   * @private\n   */\n  _init() {\n    this._isInitializing = true;\n\n    this.$tabs = this.$element.children('[data-accordion-item]');\n\n\n    this.$tabs.each(function(idx, el) {\n      var $el = $(el),\n          $content = $el.children('[data-tab-content]'),\n          id = $content[0].id || GetYoDigits(6, 'accordion'),\n          linkId = (el.id) ? `${el.id}-label` : `${id}-label`;\n\n      $el.find('a:first').attr({\n        'aria-controls': id,\n        'id': linkId,\n        'aria-expanded': false\n      });\n\n      $content.attr({'role': 'region', 'aria-labelledby': linkId, 'aria-hidden': true, 'id': id});\n    });\n\n    var $initActive = this.$element.find('.is-active').children('[data-tab-content]');\n    if ($initActive.length) {\n      // Save up the initial hash to return to it later when going back in history\n      this._initialAnchor = $initActive.prev('a').attr('href');\n      this._openSingleTab($initActive);\n    }\n\n    this._checkDeepLink = () => {\n      var anchor = window.location.hash;\n\n      if (!anchor.length) {\n        // If we are still initializing and there is no anchor, then there is nothing to do\n        if (this._isInitializing) return;\n        // Otherwise, move to the initial anchor\n        if (this._initialAnchor) anchor = this._initialAnchor;\n      }\n\n      var $anchor = anchor && $(anchor);\n      var $link = anchor && this.$element.find(`[href$=\"${anchor}\"]`);\n      // Whether the anchor element that has been found is part of this element\n      var isOwnAnchor = !!($anchor.length && $link.length);\n\n      if (isOwnAnchor) {\n        // If there is an anchor for the hash, open it (if not already active)\n        if ($anchor && $link && $link.length) {\n          if (!$link.parent('[data-accordion-item]').hasClass('is-active')) {\n            this._openSingleTab($anchor);\n          }\n        }\n        // Otherwise, close everything\n        else {\n          this._closeAllTabs();\n        }\n\n        // Roll up a little to show the titles\n        if (this.options.deepLinkSmudge) {\n          onLoad($(window), () => {\n            var offset = this.$element.offset();\n            $('html, body').animate({ scrollTop: offset.top - this.options.deepLinkSmudgeOffset }, this.options.deepLinkSmudgeDelay);\n          });\n        }\n\n        /**\n         * Fires when the plugin has deeplinked at pageload\n         * @event Accordion#deeplink\n         */\n        this.$element.trigger('deeplink.zf.accordion', [$link, $anchor]);\n      }\n    }\n\n    //use browser to open a tab, if it exists in this tabset\n    if (this.options.deepLink) {\n      this._checkDeepLink();\n    }\n\n    this._events();\n\n    this._isInitializing = false;\n  }\n\n  /**\n   * Adds event handlers for items within the accordion.\n   * @private\n   */\n  _events() {\n    var _this = this;\n\n    this.$tabs.each(function() {\n      var $elem = $(this);\n      var $tabContent = $elem.children('[data-tab-content]');\n      if ($tabContent.length) {\n        $elem.children('a').off('click.zf.accordion keydown.zf.accordion')\n               .on('click.zf.accordion', function(e) {\n          e.preventDefault();\n          _this.toggle($tabContent);\n        }).on('keydown.zf.accordion', function(e) {\n          Keyboard.handleKey(e, 'Accordion', {\n            toggle: function() {\n              _this.toggle($tabContent);\n            },\n            next: function() {\n              var $a = $elem.next().find('a').focus();\n              if (!_this.options.multiExpand) {\n                $a.trigger('click.zf.accordion')\n              }\n            },\n            previous: function() {\n              var $a = $elem.prev().find('a').focus();\n              if (!_this.options.multiExpand) {\n                $a.trigger('click.zf.accordion')\n              }\n            },\n            first: function() {\n              var $a = _this.$tabs.first().find('.accordion-title').focus();\n              if (!_this.options.multiExpand) {\n                 $a.trigger('click.zf.accordion');\n              }\n            },\n            last: function() {\n              var $a = _this.$tabs.last().find('.accordion-title').focus();\n              if (!_this.options.multiExpand) {\n                 $a.trigger('click.zf.accordion');\n              }\n            },\n            handled: function() {\n              e.preventDefault();\n            }\n          });\n        });\n      }\n    });\n    if (this.options.deepLink) {\n      $(window).on('hashchange', this._checkDeepLink);\n    }\n  }\n\n  /**\n   * Toggles the selected content pane's open/close state.\n   * @param {jQuery} $target - jQuery object of the pane to toggle (`.accordion-content`).\n   * @function\n   */\n  toggle($target) {\n    if ($target.closest('[data-accordion]').is('[disabled]')) {\n      console.info('Cannot toggle an accordion that is disabled.');\n      return;\n    }\n    if ($target.parent().hasClass('is-active')) {\n      this.up($target);\n    } else {\n      this.down($target);\n    }\n    //either replace or update browser history\n    if (this.options.deepLink) {\n      var anchor = $target.prev('a').attr('href');\n\n      if (this.options.updateHistory) {\n        history.pushState({}, '', anchor);\n      } else {\n        history.replaceState({}, '', anchor);\n      }\n    }\n  }\n\n  /**\n   * Opens the accordion tab defined by `$target`.\n   * @param {jQuery} $target - Accordion pane to open (`.accordion-content`).\n   * @fires Accordion#down\n   * @function\n   */\n  down($target) {\n    if ($target.closest('[data-accordion]').is('[disabled]'))  {\n      console.info('Cannot call down on an accordion that is disabled.');\n      return;\n    }\n\n    if (this.options.multiExpand)\n      this._openTab($target);\n    else\n      this._openSingleTab($target);\n  }\n\n  /**\n   * Closes the tab defined by `$target`.\n   * It may be ignored if the Accordion options don't allow it.\n   *\n   * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).\n   * @fires Accordion#up\n   * @function\n   */\n  up($target) {\n    if (this.$element.is('[disabled]')) {\n      console.info('Cannot call up on an accordion that is disabled.');\n      return;\n    }\n\n    // Don't close the item if it is already closed\n    const $targetItem = $target.parent();\n    if (!$targetItem.hasClass('is-active')) return;\n\n    // Don't close the item if there is no other active item (unless with `allowAllClosed`)\n    const $othersItems = $targetItem.siblings();\n    if (!this.options.allowAllClosed && !$othersItems.hasClass('is-active')) return;\n\n    this._closeTab($target);\n  }\n\n  /**\n   * Make the tab defined by `$target` the only opened tab, closing all others tabs.\n   * @param {jQuery} $target - Accordion tab to open (`.accordion-content`).\n   * @function\n   * @private\n   */\n  _openSingleTab($target) {\n    // Close all the others active tabs.\n    const $activeContents = this.$element.children('.is-active').children('[data-tab-content]');\n    if ($activeContents.length) {\n      this._closeTab($activeContents.not($target));\n    }\n\n    // Then open the target.\n    this._openTab($target);\n  }\n\n  /**\n   * Opens the tab defined by `$target`.\n   * @param {jQuery} $target - Accordion tab to open (`.accordion-content`).\n   * @fires Accordion#down\n   * @function\n   * @private\n   */\n  _openTab($target) {\n    const $targetItem = $target.parent();\n    const targetContentId = $target.attr('aria-labelledby');\n\n    $target.attr('aria-hidden', false);\n    $targetItem.addClass('is-active');\n\n    $(`#${targetContentId}`).attr({\n      'aria-expanded': true\n    });\n\n    $target.finish().slideDown(this.options.slideSpeed, () => {\n      /**\n       * Fires when the tab is done opening.\n       * @event Accordion#down\n       */\n      this.$element.trigger('down.zf.accordion', [$target]);\n    });\n  }\n\n  /**\n   * Closes the tab defined by `$target`.\n   * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).\n   * @fires Accordion#up\n   * @function\n   * @private\n   */\n  _closeTab($target) {\n    const $targetItem = $target.parent();\n    const targetContentId = $target.attr('aria-labelledby');\n\n    $target.attr('aria-hidden', true)\n    $targetItem.removeClass('is-active');\n\n    $(`#${targetContentId}`).attr({\n     'aria-expanded': false\n    });\n\n    $target.finish().slideUp(this.options.slideSpeed, () => {\n      /**\n       * Fires when the tab is done collapsing up.\n       * @event Accordion#up\n       */\n      this.$element.trigger('up.zf.accordion', [$target]);\n    });\n  }\n\n  /**\n   * Closes all active tabs\n   * @fires Accordion#up\n   * @function\n   * @private\n   */\n  _closeAllTabs() {\n    var $activeTabs = this.$element.children('.is-active').children('[data-tab-content]');\n    if ($activeTabs.length) {\n      this._closeTab($activeTabs);\n    }\n  }\n\n  /**\n   * Destroys an instance of an accordion.\n   * @fires Accordion#destroyed\n   * @function\n   */\n  _destroy() {\n    this.$element.find('[data-tab-content]').stop(true).slideUp(0).css('display', '');\n    this.$element.find('a').off('.zf.accordion');\n    if (this.options.deepLink) {\n      $(window).off('hashchange', this._checkDeepLink);\n    }\n\n  }\n}\n\nAccordion.defaults = {\n  /**\n   * Amount of time to animate the opening of an accordion pane.\n   * @option\n   * @type {number}\n   * @default 250\n   */\n  slideSpeed: 250,\n  /**\n   * Allow the accordion to have multiple open panes.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  multiExpand: false,\n  /**\n   * Allow the accordion to close all panes.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  allowAllClosed: false,\n  /**\n   * Link the location hash to the open pane.\n   * Set the location hash when the opened pane changes, and open and scroll to the corresponding pane when the location changes.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  deepLink: false,\n  /**\n   * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the accordion panel is visible\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  deepLinkSmudge: false,\n  /**\n   * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment\n   * @option\n   * @type {number}\n   * @default 300\n   */\n  deepLinkSmudgeDelay: 300,\n  /**\n   * If `deepLinkSmudge` is enabled, the offset for scrollToTtop to prevent overlap by a sticky element at the top of the page\n   * @option\n   * @type {number}\n   * @default 0\n   */\n  deepLinkSmudgeOffset: 0,\n  /**\n   * If `deepLink` is enabled, update the browser history with the open accordion\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  updateHistory: false\n};\n\nexport { Accordion };\n", "import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * AccordionMenu module.\n * @module foundation.accordionMenu\n * @requires foundation.util.keyboard\n * @requires foundation.util.nest\n */\n\nclass AccordionMenu extends Plugin {\n  /**\n   * Creates a new instance of an accordion menu.\n   * @class\n   * @name AccordionMenu\n   * @fires AccordionMenu#init\n   * @param {jQuery} element - jQuery object to make into an accordion menu.\n   * @param {Object} options - Overrides to the default plugin settings.\n   */\n  _setup(element, options) {\n    this.$element = element;\n    this.options = $.extend({}, AccordionMenu.defaults, this.$element.data(), options);\n    this.className = 'AccordionMenu'; // ie9 back compat\n\n    this._init();\n\n    Keyboard.register('AccordionMenu', {\n      'ENTER': 'toggle',\n      'SPACE': 'toggle',\n      'ARROW_RIGHT': 'open',\n      'ARROW_UP': 'up',\n      'ARROW_DOWN': 'down',\n      'ARROW_LEFT': 'close',\n      'ESCAPE': 'closeAll'\n    });\n  }\n\n\n\n  /**\n   * Initializes the accordion menu by hiding all nested menus.\n   * @private\n   */\n  _init() {\n    Nest.Feather(this.$element, 'accordion');\n\n    var _this = this;\n\n    this.$element.find('[data-submenu]').not('.is-active').slideUp(0);//.find('a').css('padding-left', '1rem');\n    this.$element.attr({\n      'aria-multiselectable': this.options.multiOpen\n    });\n\n    this.$menuLinks = this.$element.find('.is-accordion-submenu-parent');\n    this.$menuLinks.each(function() {\n      var linkId = this.id || GetYoDigits(6, 'acc-menu-link'),\n          $elem = $(this),\n          $sub = $elem.children('[data-submenu]'),\n          subId = $sub[0].id || GetYoDigits(6, 'acc-menu'),\n          isActive = $sub.hasClass('is-active');\n\n      if (_this.options.parentLink) {\n        let $anchor = $elem.children('a');\n        $anchor.clone().prependTo($sub).wrap('<li data-is-parent-link class=\"is-submenu-parent-item is-submenu-item is-accordion-submenu-item\"></li>');\n      }\n\n      if (_this.options.submenuToggle) {\n        $elem.addClass('has-submenu-toggle');\n        $elem.children('a').after('<button id=\"' + linkId + '\" class=\"submenu-toggle\" aria-controls=\"' + subId + '\" aria-expanded=\"' + isActive + '\" title=\"' + _this.options.submenuToggleText + '\"><span class=\"submenu-toggle-text\">' + _this.options.submenuToggleText + '</span></button>');\n      } else {\n        $elem.attr({\n          'aria-controls': subId,\n          'aria-expanded': isActive,\n          'id': linkId\n        });\n      }\n      $sub.attr({\n        'aria-labelledby': linkId,\n        'aria-hidden': !isActive,\n        'role': 'group',\n        'id': subId\n      });\n    });\n    var initPanes = this.$element.find('.is-active');\n    if (initPanes.length) {\n      initPanes.each(function() {\n        _this.down($(this));\n      });\n    }\n    this._events();\n  }\n\n  /**\n   * Adds event handlers for items within the menu.\n   * @private\n   */\n  _events() {\n    var _this = this;\n\n    this.$element.find('li').each(function() {\n      var $submenu = $(this).children('[data-submenu]');\n\n      if ($submenu.length) {\n        if (_this.options.submenuToggle) {\n          $(this).children('.submenu-toggle').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function() {\n            _this.toggle($submenu);\n          });\n        } else {\n            $(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function(e) {\n              e.preventDefault();\n              _this.toggle($submenu);\n            });\n        }\n      }\n    }).on('keydown.zf.accordionMenu', function(e) {\n      var $element = $(this),\n          $elements = $element.parent('ul').children('li'),\n          $prevElement,\n          $nextElement,\n          $target = $element.children('[data-submenu]');\n\n      $elements.each(function(i) {\n        if ($(this).is($element)) {\n          $prevElement = $elements.eq(Math.max(0, i-1)).find('a').first();\n          $nextElement = $elements.eq(Math.min(i+1, $elements.length-1)).find('a').first();\n\n          if ($(this).children('[data-submenu]:visible').length) { // has open sub menu\n            $nextElement = $element.find('li:first-child').find('a').first();\n          }\n          if ($(this).is(':first-child')) { // is first element of sub menu\n            $prevElement = $element.parents('li').first().find('a').first();\n          } else if ($prevElement.parents('li').first().children('[data-submenu]:visible').length) { // if previous element has open sub menu\n            $prevElement = $prevElement.parents('li').find('li:last-child').find('a').first();\n          }\n          if ($(this).is(':last-child')) { // is last element of sub menu\n            $nextElement = $element.parents('li').first().next('li').find('a').first();\n          }\n\n          return;\n        }\n      });\n\n      Keyboard.handleKey(e, 'AccordionMenu', {\n        open: function() {\n          if ($target.is(':hidden')) {\n            _this.down($target);\n            $target.find('li').first().find('a').first().focus();\n          }\n        },\n        close: function() {\n          if ($target.length && !$target.is(':hidden')) { // close active sub of this item\n            _this.up($target);\n          } else if ($element.parent('[data-submenu]').length) { // close currently open sub\n            _this.up($element.parent('[data-submenu]'));\n            $element.parents('li').first().find('a').first().focus();\n          }\n        },\n        up: function() {\n          $prevElement.focus();\n          return true;\n        },\n        down: function() {\n          $nextElement.focus();\n          return true;\n        },\n        toggle: function() {\n          if (_this.options.submenuToggle) {\n            return false;\n          }\n          if ($element.children('[data-submenu]').length) {\n            _this.toggle($element.children('[data-submenu]'));\n            return true;\n          }\n        },\n        closeAll: function() {\n          _this.hideAll();\n        },\n        handled: function(preventDefault) {\n          if (preventDefault) {\n            e.preventDefault();\n          }\n        }\n      });\n    });//.attr('tabindex', 0);\n  }\n\n  /**\n   * Closes all panes of the menu.\n   * @function\n   */\n  hideAll() {\n    this.up(this.$element.find('[data-submenu]'));\n  }\n\n  /**\n   * Opens all panes of the menu.\n   * @function\n   */\n  showAll() {\n    this.down(this.$element.find('[data-submenu]'));\n  }\n\n  /**\n   * Toggles the open/close state of a submenu.\n   * @function\n   * @param {jQuery} $target - the submenu to toggle\n   */\n  toggle($target) {\n    if (!$target.is(':animated')) {\n      if (!$target.is(':hidden')) {\n        this.up($target);\n      }\n      else {\n        this.down($target);\n      }\n    }\n  }\n\n  /**\n   * Opens the sub-menu defined by `$target`.\n   * @param {jQuery} $target - Sub-menu to open.\n   * @fires AccordionMenu#down\n   */\n  down($target) {\n    // If having multiple submenus active is disabled, close all the submenus\n    // that are not parents or children of the targeted submenu.\n    if (!this.options.multiOpen) {\n      // The \"branch\" of the targetted submenu, from the component root to\n      // the active submenus nested in it.\n      const $targetBranch = $target.parentsUntil(this.$element)\n        .add($target)\n        .add($target.find('.is-active'));\n      // All the active submenus that are not in the branch.\n      const $othersActiveSubmenus = this.$element.find('.is-active').not($targetBranch);\n\n      this.up($othersActiveSubmenus);\n    }\n\n    $target\n      .addClass('is-active')\n      .attr({ 'aria-hidden': false });\n\n    if (this.options.submenuToggle) {\n      $target.prev('.submenu-toggle').attr({'aria-expanded': true});\n    }\n    else {\n      $target.parent('.is-accordion-submenu-parent').attr({'aria-expanded': true});\n    }\n\n    $target.slideDown(this.options.slideSpeed, () => {\n      /**\n       * Fires when the menu is done opening.\n       * @event AccordionMenu#down\n       */\n      this.$element.trigger('down.zf.accordionMenu', [$target]);\n    });\n  }\n\n  /**\n   * Closes the sub-menu defined by `$target`. All sub-menus inside the target will be closed as well.\n   * @param {jQuery} $target - Sub-menu to close.\n   * @fires AccordionMenu#up\n   */\n  up($target) {\n    const $submenus = $target.find('[data-submenu]');\n    const $allmenus = $target.add($submenus);\n\n    $submenus.slideUp(0);\n    $allmenus\n      .removeClass('is-active')\n      .attr('aria-hidden', true);\n\n    if (this.options.submenuToggle) {\n      $allmenus.prev('.submenu-toggle').attr('aria-expanded', false);\n    }\n    else {\n      $allmenus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false);\n    }\n\n    $target.slideUp(this.options.slideSpeed, () => {\n      /**\n       * Fires when the menu is done collapsing up.\n       * @event AccordionMenu#up\n       */\n      this.$element.trigger('up.zf.accordionMenu', [$target]);\n    });\n  }\n\n  /**\n   * Destroys an instance of accordion menu.\n   * @fires AccordionMenu#destroyed\n   */\n  _destroy() {\n    this.$element.find('[data-submenu]').slideDown(0).css('display', '');\n    this.$element.find('a').off('click.zf.accordionMenu');\n    this.$element.find('[data-is-parent-link]').detach();\n\n    if (this.options.submenuToggle) {\n      this.$element.find('.has-submenu-toggle').removeClass('has-submenu-toggle');\n      this.$element.find('.submenu-toggle').remove();\n    }\n\n    Nest.Burn(this.$element, 'accordion');\n  }\n}\n\nAccordionMenu.defaults = {\n  /**\n   * Adds the parent link to the submenu.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  parentLink: false,\n  /**\n   * Amount of time to animate the opening of a submenu in ms.\n   * @option\n   * @type {number}\n   * @default 250\n   */\n  slideSpeed: 250,\n  /**\n   * Adds a separate submenu toggle button. This allows the parent item to have a link.\n   * @option\n   * @example true\n   */\n  submenuToggle: false,\n  /**\n   * The text used for the submenu toggle if enabled. This is used for screen readers only.\n   * @option\n   * @example true\n   */\n  submenuToggleText: 'Toggle menu',\n  /**\n   * Allow the menu to have multiple open panes.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  multiOpen: true\n};\n\nexport { AccordionMenu };\n", "import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { GetYoDigits, transitionend } from './foundation.core.utils';\nimport { Box } from './foundation.util.box';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * Drilldown module.\n * @module foundation.drilldown\n * @requires foundation.util.keyboard\n * @requires foundation.util.nest\n * @requires foundation.util.box\n */\n\nclass Drilldown extends Plugin {\n  /**\n   * Creates a new instance of a drilldown menu.\n   * @class\n   * @name Drilldown\n   * @param {jQuery} element - jQuery object to make into an accordion menu.\n   * @param {Object} options - Overrides to the default plugin settings.\n   */\n  _setup(element, options) {\n    this.$element = element;\n    this.options = $.extend({}, Drilldown.defaults, this.$element.data(), options);\n    this.className = 'Drilldown'; // ie9 back compat\n\n    this._init();\n\n    Keyboard.register('Drilldown', {\n      'ENTER': 'open',\n      'SPACE': 'open',\n      'ARROW_RIGHT': 'next',\n      'ARROW_UP': 'up',\n      'ARROW_DOWN': 'down',\n      'ARROW_LEFT': 'previous',\n      'ESCAPE': 'close',\n    });\n  }\n\n  /**\n   * Initializes the drilldown by creating jQuery collections of elements\n   * @private\n   */\n  _init() {\n    Nest.Feather(this.$element, 'drilldown');\n\n    if(this.options.autoApplyClass) {\n      this.$element.addClass('drilldown');\n    }\n\n    this.$element.attr({\n      'aria-multiselectable': false\n    });\n    this.$submenuAnchors = this.$element.find('li.is-drilldown-submenu-parent').children('a');\n    this.$submenus = this.$submenuAnchors.parent('li').children('[data-submenu]').attr('role', 'group');\n    this.$menuItems = this.$element.find('li').not('.js-drilldown-back').find('a');\n\n    // Set the main menu as current by default (unless a submenu is selected)\n    // Used to set the wrapper height when the drilldown is closed/reopened from any (sub)menu\n    this.$currentMenu = this.$element;\n\n    this.$element.attr('data-mutate', (this.$element.attr('data-drilldown') || GetYoDigits(6, 'drilldown')));\n\n    this._prepareMenu();\n    this._registerEvents();\n\n    this._keyboardEvents();\n  }\n\n  /**\n   * prepares drilldown menu by setting attributes to links and elements\n   * sets a min height to prevent content jumping\n   * wraps the element if not already wrapped\n   * @private\n   * @function\n   */\n  _prepareMenu() {\n    var _this = this;\n    // if(!this.options.holdOpen){\n    //   this._menuLinkEvents();\n    // }\n    this.$submenuAnchors.each(function(){\n      var $link = $(this);\n      var $sub = $link.parent();\n      if(_this.options.parentLink){\n        $link.clone().prependTo($sub.children('[data-submenu]')).wrap('<li data-is-parent-link class=\"is-submenu-parent-item is-submenu-item is-drilldown-submenu-item\" role=\"none\"></li>');\n      }\n      $link.data('savedHref', $link.attr('href')).removeAttr('href').attr('tabindex', 0);\n      $link.children('[data-submenu]')\n          .attr({\n            'aria-hidden': true,\n            'tabindex': 0,\n            'role': 'group'\n          });\n      _this._events($link);\n    });\n    this.$submenus.each(function(){\n      var $menu = $(this),\n          $back = $menu.find('.js-drilldown-back');\n      if(!$back.length) {\n        switch (_this.options.backButtonPosition) {\n          case \"bottom\":\n            $menu.append(_this.options.backButton);\n            break;\n          case \"top\":\n            $menu.prepend(_this.options.backButton);\n            break;\n          default:\n            console.error(\"Unsupported backButtonPosition value '\" + _this.options.backButtonPosition + \"'\");\n        }\n      }\n      _this._back($menu);\n    });\n\n    this.$submenus.addClass('invisible');\n    if(!this.options.autoHeight) {\n      this.$submenus.addClass('drilldown-submenu-cover-previous');\n    }\n\n    // create a wrapper on element if it doesn't exist.\n    if(!this.$element.parent().hasClass('is-drilldown')){\n      this.$wrapper = $(this.options.wrapper).addClass('is-drilldown');\n      if(this.options.animateHeight) this.$wrapper.addClass('animate-height');\n      this.$element.wrap(this.$wrapper);\n    }\n    // set wrapper\n    this.$wrapper = this.$element.parent();\n    this.$wrapper.css(this._getMaxDims());\n  }\n\n  _resize() {\n    this.$wrapper.css({'max-width': 'none', 'min-height': 'none'});\n    // _getMaxDims has side effects (boo) but calling it should update all other necessary heights & widths\n    this.$wrapper.css(this._getMaxDims());\n  }\n\n  /**\n   * Adds event handlers to elements in the menu.\n   * @function\n   * @private\n   * @param {jQuery} $elem - the current menu item to add handlers to.\n   */\n  _events($elem) {\n    var _this = this;\n\n    $elem.off('click.zf.drilldown')\n    .on('click.zf.drilldown', function(e) {\n      if($(e.target).parentsUntil('ul', 'li').hasClass('is-drilldown-submenu-parent')){\n        e.preventDefault();\n      }\n\n      // if(e.target !== e.currentTarget.firstElementChild){\n      //   return false;\n      // }\n      _this._show($elem.parent('li'));\n\n      if(_this.options.closeOnClick){\n        var $body = $('body');\n        $body.off('.zf.drilldown').on('click.zf.drilldown', function(ev) {\n          if (ev.target === _this.$element[0] || $.contains(_this.$element[0], ev.target)) { return; }\n          ev.preventDefault();\n          _this._hideAll();\n          $body.off('.zf.drilldown');\n        });\n      }\n    });\n  }\n\n  /**\n   * Adds event handlers to the menu element.\n   * @function\n   * @private\n   */\n  _registerEvents() {\n    if(this.options.scrollTop){\n      this._bindHandler = this._scrollTop.bind(this);\n      this.$element.on('open.zf.drilldown hide.zf.drilldown close.zf.drilldown closed.zf.drilldown',this._bindHandler);\n    }\n    this.$element.on('mutateme.zf.trigger', this._resize.bind(this));\n  }\n\n  /**\n   * Scroll to Top of Element or data-scroll-top-element\n   * @function\n   * @fires Drilldown#scrollme\n   */\n  _scrollTop() {\n    var _this = this;\n    var $scrollTopElement = _this.options.scrollTopElement !== ''?$(_this.options.scrollTopElement):_this.$element,\n        scrollPos = parseInt($scrollTopElement.offset().top+_this.options.scrollTopOffset, 10);\n    $('html, body').stop(true).animate({ scrollTop: scrollPos }, _this.options.animationDuration, _this.options.animationEasing,function(){\n      /**\n        * Fires after the menu has scrolled\n        * @event Drilldown#scrollme\n        */\n      if(this===$('html')[0])_this.$element.trigger('scrollme.zf.drilldown');\n    });\n  }\n\n  /**\n   * Adds keydown event listener to `li`'s in the menu.\n   * @private\n   */\n  _keyboardEvents() {\n    var _this = this;\n\n    this.$menuItems.add(this.$element.find('.js-drilldown-back > a, .is-submenu-parent-item > a')).on('keydown.zf.drilldown', function(e){\n      var $element = $(this),\n          $elements = $element.parent('li').parent('ul').children('li').children('a'),\n          $prevElement,\n          $nextElement;\n\n      $elements.each(function(i) {\n        if ($(this).is($element)) {\n          $prevElement = $elements.eq(Math.max(0, i-1));\n          $nextElement = $elements.eq(Math.min(i+1, $elements.length-1));\n          return;\n        }\n      });\n\n      Keyboard.handleKey(e, 'Drilldown', {\n        next: function() {\n          if ($element.is(_this.$submenuAnchors)) {\n            _this._show($element.parent('li'));\n            $element.parent('li').one(transitionend($element), function(){\n              $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();\n            });\n            return true;\n          }\n        },\n        previous: function() {\n          _this._hide($element.parent('li').parent('ul'));\n          $element.parent('li').parent('ul').one(transitionend($element), function(){\n            setTimeout(function() {\n              $element.parent('li').parent('ul').parent('li').children('a').first().focus();\n            }, 1);\n          });\n          return true;\n        },\n        up: function() {\n          $prevElement.focus();\n          // Don't tap focus on first element in root ul\n          return !$element.is(_this.$element.find('> li:first-child > a'));\n        },\n        down: function() {\n          $nextElement.focus();\n          // Don't tap focus on last element in root ul\n          return !$element.is(_this.$element.find('> li:last-child > a'));\n        },\n        close: function() {\n          // Don't close on element in root ul\n          if (!$element.is(_this.$element.find('> li > a'))) {\n            _this._hide($element.parent().parent());\n            $element.parent().parent().siblings('a').focus();\n          }\n        },\n        open: function() {\n          if (_this.options.parentLink && $element.attr('href')) { // Link with href\n            return false;\n          } else if (!$element.is(_this.$menuItems)) { // not menu item means back button\n            _this._hide($element.parent('li').parent('ul'));\n            $element.parent('li').parent('ul').one(transitionend($element), function(){\n              setTimeout(function() {\n                $element.parent('li').parent('ul').parent('li').children('a').first().focus();\n              }, 1);\n            });\n            return true;\n          } else if ($element.is(_this.$submenuAnchors)) { // Sub menu item\n            _this._show($element.parent('li'));\n            $element.parent('li').one(transitionend($element), function(){\n              $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();\n            });\n            return true;\n          }\n        },\n        handled: function(preventDefault) {\n          if (preventDefault) {\n            e.preventDefault();\n          }\n        }\n      });\n    }); // end keyboardAccess\n  }\n\n  /**\n   * Closes all open elements, and returns to root menu.\n   * @function\n   * @fires Drilldown#close\n   * @fires Drilldown#closed\n   */\n  _hideAll() {\n    var $elem = this.$element.find('.is-drilldown-submenu.is-active')\n    $elem.addClass('is-closing');\n    $elem.parent().closest('ul').removeClass('invisible');\n\n    if (this.options.autoHeight) {\n      const calcHeight = $elem.parent().closest('ul').data('calcHeight');\n      this.$wrapper.css({ height: calcHeight });\n    }\n\n    /**\n     * Fires when the menu is closing.\n     * @event Drilldown#close\n     */\n    this.$element.trigger('close.zf.drilldown');\n\n    $elem.one(transitionend($elem), () => {\n      $elem.removeClass('is-active is-closing');\n\n      /**\n       * Fires when the menu is fully closed.\n       * @event Drilldown#closed\n       */\n      this.$element.trigger('closed.zf.drilldown');\n    });\n  }\n\n  /**\n   * Adds event listener for each `back` button, and closes open menus.\n   * @function\n   * @fires Drilldown#back\n   * @param {jQuery} $elem - the current sub-menu to add `back` event.\n   */\n  _back($elem) {\n    var _this = this;\n    $elem.off('click.zf.drilldown');\n    $elem.children('.js-drilldown-back')\n      .on('click.zf.drilldown', function() {\n        _this._hide($elem);\n\n        // If there is a parent submenu, call show\n        let parentSubMenu = $elem.parent('li').parent('ul').parent('li');\n        if (parentSubMenu.length) {\n          _this._show(parentSubMenu);\n        }\n        else {\n          _this.$currentMenu = _this.$element;\n        }\n      });\n  }\n\n  /**\n   * Adds event listener to menu items w/o submenus to close open menus on click.\n   * @function\n   * @private\n   */\n  _menuLinkEvents() {\n    var _this = this;\n    this.$menuItems.not('.is-drilldown-submenu-parent')\n        .off('click.zf.drilldown')\n        .on('click.zf.drilldown', function() {\n          setTimeout(function() {\n            _this._hideAll();\n          }, 0);\n      });\n  }\n\n  /**\n   * Sets the CSS classes for submenu to show it.\n   * @function\n   * @private\n   * @param {jQuery} $elem - the target submenu (`ul` tag)\n   * @param {boolean} trigger - trigger drilldown event\n   */\n  _setShowSubMenuClasses($elem, trigger) {\n    $elem.addClass('is-active').removeClass('invisible').attr('aria-hidden', false);\n    $elem.parent('li').attr('aria-expanded', true);\n    if (trigger === true) {\n      this.$element.trigger('open.zf.drilldown', [$elem]);\n    }\n  }\n\n  /**\n   * Sets the CSS classes for submenu to hide it.\n   * @function\n   * @private\n   * @param {jQuery} $elem - the target submenu (`ul` tag)\n   * @param {boolean} trigger - trigger drilldown event\n   */\n  _setHideSubMenuClasses($elem, trigger) {\n    $elem.removeClass('is-active').addClass('invisible').attr('aria-hidden', true);\n    $elem.parent('li').attr('aria-expanded', false);\n    if (trigger === true) {\n      $elem.trigger('hide.zf.drilldown', [$elem]);\n    }\n  }\n\n  /**\n   * Opens a specific drilldown (sub)menu no matter which (sub)menu in it is currently visible.\n   * Compared to _show() this lets you jump into any submenu without clicking through every submenu on the way to it.\n   * @function\n   * @fires Drilldown#open\n   * @param {jQuery} $elem - the target (sub)menu (`ul` tag)\n   * @param {boolean} autoFocus - if true the first link in the target (sub)menu gets auto focused\n   */\n  _showMenu($elem, autoFocus) {\n\n    var _this = this;\n\n    // Reset drilldown\n    var $expandedSubmenus = this.$element.find('li[aria-expanded=\"true\"] > ul[data-submenu]');\n    $expandedSubmenus.each(function() {\n      _this._setHideSubMenuClasses($(this));\n    });\n\n    // Save the menu as the currently displayed one.\n    this.$currentMenu = $elem;\n\n    // If target menu is root, focus first link & exit\n    if ($elem.is('[data-drilldown]')) {\n      if (autoFocus === true) $elem.find('li > a').first().focus();\n      if (this.options.autoHeight) this.$wrapper.css('height', $elem.data('calcHeight'));\n      return;\n    }\n\n    // Find all submenus on way to root incl. the element itself\n    var $submenus = $elem.children().first().parentsUntil('[data-drilldown]', '[data-submenu]');\n\n    // Open target menu and all submenus on its way to root\n    $submenus.each(function(index) {\n\n      // Update height of first child (target menu) if autoHeight option true\n      if (index === 0 && _this.options.autoHeight) {\n        _this.$wrapper.css('height', $(this).data('calcHeight'));\n      }\n\n      var isLastChild = index === $submenus.length - 1;\n\n      // Add transitionsend listener to last child (root due to reverse order) to open target menu's first link\n      // Last child makes sure the event gets always triggered even if going through several menus\n      if (isLastChild === true) {\n        $(this).one(transitionend($(this)), () => {\n          if (autoFocus === true) {\n            $elem.find('li > a').first().focus();\n          }\n        });\n      }\n\n      _this._setShowSubMenuClasses($(this), isLastChild);\n    });\n  }\n\n  /**\n   * Opens a submenu.\n   * @function\n   * @fires Drilldown#open\n   * @param {jQuery} $elem - the current element with a submenu to open, i.e. the `li` tag.\n   */\n  _show($elem) {\n    const $submenu = $elem.children('[data-submenu]');\n\n    $elem.attr('aria-expanded', true);\n\n    this.$currentMenu = $submenu;\n\n    //hide drilldown parent menu when submenu is open\n    // this removes it from the dom so that the tab key will take the user to the next visible element\n    $elem.parent().closest('ul').addClass('invisible');\n\n    // add visible class to submenu to override invisible class above\n    $submenu.addClass('is-active visible').removeClass('invisible').attr('aria-hidden', false);\n\n    if (this.options.autoHeight) {\n      this.$wrapper.css({ height: $submenu.data('calcHeight') });\n    }\n\n    /**\n     * Fires when the submenu has opened.\n     * @event Drilldown#open\n     */\n    this.$element.trigger('open.zf.drilldown', [$elem]);\n  }\n\n  /**\n   * Hides a submenu\n   * @function\n   * @fires Drilldown#hide\n   * @param {jQuery} $elem - the current sub-menu to hide, i.e. the `ul` tag.\n   */\n  _hide($elem) {\n    if(this.options.autoHeight) this.$wrapper.css({height:$elem.parent().closest('ul').data('calcHeight')});\n    $elem.parent().closest('ul').removeClass('invisible');\n    $elem.parent('li').attr('aria-expanded', false);\n    $elem.attr('aria-hidden', true);\n    $elem.addClass('is-closing')\n         .one(transitionend($elem), function(){\n           $elem.removeClass('is-active is-closing visible');\n           $elem.blur().addClass('invisible');\n         });\n    /**\n     * Fires when the submenu has closed.\n     * @event Drilldown#hide\n     */\n    $elem.trigger('hide.zf.drilldown', [$elem]);\n  }\n\n  /**\n   * Iterates through the nested menus to calculate the min-height, and max-width for the menu.\n   * Prevents content jumping.\n   * @function\n   * @private\n   */\n  _getMaxDims() {\n    var maxHeight = 0, result = {}, _this = this;\n\n    // Recalculate menu heights and total max height\n    this.$submenus.add(this.$element).each(function(){\n      var height = Box.GetDimensions(this).height;\n\n      maxHeight = height > maxHeight ? height : maxHeight;\n\n      if(_this.options.autoHeight) {\n        $(this).data('calcHeight',height);\n      }\n    });\n\n    if (this.options.autoHeight)\n      result.height = this.$currentMenu.data('calcHeight');\n    else\n      result['min-height'] = `${maxHeight}px`;\n\n    result['max-width'] = `${this.$element[0].getBoundingClientRect().width}px`;\n\n    return result;\n  }\n\n  /**\n   * Destroys the Drilldown Menu\n   * @function\n   */\n  _destroy() {\n    $('body').off('.zf.drilldown');\n    if(this.options.scrollTop) this.$element.off('.zf.drilldown',this._bindHandler);\n    this._hideAll();\n\t  this.$element.off('mutateme.zf.trigger');\n    Nest.Burn(this.$element, 'drilldown');\n    this.$element.unwrap()\n                 .find('.js-drilldown-back, .is-submenu-parent-item').remove()\n                 .end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu').off('transitionend otransitionend webkitTransitionEnd')\n                 .end().find('[data-submenu]').removeAttr('aria-hidden tabindex role');\n    this.$submenuAnchors.each(function() {\n      $(this).off('.zf.drilldown');\n    });\n\n    this.$element.find('[data-is-parent-link]').detach();\n    this.$submenus.removeClass('drilldown-submenu-cover-previous invisible');\n\n    this.$element.find('a').each(function(){\n      var $link = $(this);\n      $link.removeAttr('tabindex');\n      if($link.data('savedHref')){\n        $link.attr('href', $link.data('savedHref')).removeData('savedHref');\n      }else{ return; }\n    });\n  };\n}\n\nDrilldown.defaults = {\n  /**\n   * Drilldowns depend on styles in order to function properly; in the default build of Foundation these are\n   * on the `drilldown` class. This option auto-applies this class to the drilldown upon initialization.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  autoApplyClass: true,\n  /**\n   * Markup used for JS generated back button. Prepended  or appended (see backButtonPosition) to submenu lists and deleted on `destroy` method, 'js-drilldown-back' class required. Remove the backslash (`\\`) if copy and pasting.\n   * @option\n   * @type {string}\n   * @default '<li class=\"js-drilldown-back\"><a tabindex=\"0\">Back</a></li>'\n   */\n  backButton: '<li class=\"js-drilldown-back\"><a tabindex=\"0\">Back</a></li>',\n  /**\n   * Position the back button either at the top or bottom of drilldown submenus. Can be `'left'` or `'bottom'`.\n   * @option\n   * @type {string}\n   * @default top\n   */\n  backButtonPosition: 'top',\n  /**\n   * Markup used to wrap drilldown menu. Use a class name for independent styling; the JS applied class: `is-drilldown` is required. Remove the backslash (`\\`) if copy and pasting.\n   * @option\n   * @type {string}\n   * @default '<div></div>'\n   */\n  wrapper: '<div></div>',\n  /**\n   * Adds the parent link to the submenu.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  parentLink: false,\n  /**\n   * Allow the menu to return to root list on body click.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  closeOnClick: false,\n  /**\n   * Allow the menu to auto adjust height.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  autoHeight: false,\n  /**\n   * Animate the auto adjust height.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  animateHeight: false,\n  /**\n   * Scroll to the top of the menu after opening a submenu or navigating back using the menu back button\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  scrollTop: false,\n  /**\n   * String jquery selector (for example 'body') of element to take offset().top from, if empty string the drilldown menu offset().top is taken\n   * @option\n   * @type {string}\n   * @default ''\n   */\n  scrollTopElement: '',\n  /**\n   * ScrollTop offset\n   * @option\n   * @type {number}\n   * @default 0\n   */\n  scrollTopOffset: 0,\n  /**\n   * Scroll animation duration\n   * @option\n   * @type {number}\n   * @default 500\n   */\n  animationDuration: 500,\n  /**\n   * Scroll animation easing. Can be `'swing'` or `'linear'`.\n   * @option\n   * @type {string}\n   * @see {@link https://api.jquery.com/animate|JQuery animate}\n   * @default 'swing'\n   */\n  animationEasing: 'swing'\n  // holdOpen: false\n};\n\nexport {Drilldown};\n", "import { Box } from './foundation.util.box';\nimport { Plugin } from './foundation.core.plugin';\nimport { rtl as Rtl } from './foundation.core.utils';\n\nconst POSITIONS = ['left', 'right', 'top', 'bottom'];\nconst VERTICAL_ALIGNMENTS = ['top', 'bottom', 'center'];\nconst HORIZONTAL_ALIGNMENTS = ['left', 'right', 'center'];\n\nconst ALIGNMENTS = {\n  'left': VERTICAL_ALIGNMENTS,\n  'right': VERTICAL_ALIGNMENTS,\n  'top': HORIZONTAL_ALIGNMENTS,\n  'bottom': HORIZONTAL_ALIGNMENTS\n}\n\nfunction nextItem(item, array) {\n  var currentIdx = array.indexOf(item);\n  if(currentIdx === array.length - 1) {\n    return array[0];\n  } else {\n    return array[currentIdx + 1];\n  }\n}\n\n\nclass Positionable extends Plugin {\n  /**\n   * Abstract class encapsulating the tether-like explicit positioning logic\n   * including repositioning based on overlap.\n   * Expects classes to define defaults for vOffset, hOffset, position,\n   * alignment, allowOverlap, and allowBottomOverlap. They can do this by\n   * extending the defaults, or (for now recommended due to the way docs are\n   * generated) by explicitly declaring them.\n   *\n   **/\n\n  _init() {\n    this.triedPositions = {};\n    this.position  = this.options.position === 'auto' ? this._getDefaultPosition() : this.options.position;\n    this.alignment = this.options.alignment === 'auto' ? this._getDefaultAlignment() : this.options.alignment;\n    this.originalPosition = this.position;\n    this.originalAlignment = this.alignment;\n  }\n\n  _getDefaultPosition () {\n    return 'bottom';\n  }\n\n  _getDefaultAlignment() {\n    switch(this.position) {\n      case 'bottom':\n      case 'top':\n        return Rtl() ? 'right' : 'left';\n      case 'left':\n      case 'right':\n        return 'bottom';\n    }\n  }\n\n  /**\n   * Adjusts the positionable possible positions by iterating through alignments\n   * and positions.\n   * @function\n   * @private\n   */\n  _reposition() {\n    if(this._alignmentsExhausted(this.position)) {\n      this.position = nextItem(this.position, POSITIONS);\n      this.alignment = ALIGNMENTS[this.position][0];\n    } else {\n      this._realign();\n    }\n  }\n\n  /**\n   * Adjusts the dropdown pane possible positions by iterating through alignments\n   * on the current position.\n   * @function\n   * @private\n   */\n  _realign() {\n    this._addTriedPosition(this.position, this.alignment)\n    this.alignment = nextItem(this.alignment, ALIGNMENTS[this.position])\n  }\n\n  _addTriedPosition(position, alignment) {\n    this.triedPositions[position] = this.triedPositions[position] || []\n    this.triedPositions[position].push(alignment);\n  }\n\n  _positionsExhausted() {\n    var isExhausted = true;\n    for(var i = 0; i < POSITIONS.length; i++) {\n      isExhausted = isExhausted && this._alignmentsExhausted(POSITIONS[i]);\n    }\n    return isExhausted;\n  }\n\n  _alignmentsExhausted(position) {\n    return this.triedPositions[position] && this.triedPositions[position].length === ALIGNMENTS[position].length;\n  }\n\n\n  // When we're trying to center, we don't want to apply offset that's going to\n  // take us just off center, so wrap around to return 0 for the appropriate\n  // offset in those alignments.  TODO: Figure out if we want to make this\n  // configurable behavior... it feels more intuitive, especially for tooltips, but\n  // it's possible someone might actually want to start from center and then nudge\n  // slightly off.\n  _getVOffset() {\n    return this.options.vOffset;\n  }\n\n  _getHOffset() {\n    return this.options.hOffset;\n  }\n\n  _setPosition($anchor, $element, $parent) {\n    if($anchor.attr('aria-expanded') === 'false'){ return false; }\n\n    if (!this.options.allowOverlap) {\n      // restore original position & alignment before checking overlap\n      this.position = this.originalPosition;\n      this.alignment = this.originalAlignment;\n    }\n\n    $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n\n    if(!this.options.allowOverlap) {\n      var minOverlap = 100000000;\n      // default coordinates to how we start, in case we can't figure out better\n      var minCoordinates = {position: this.position, alignment: this.alignment};\n      while(!this._positionsExhausted()) {\n        let overlap = Box.OverlapArea($element, $parent, false, false, this.options.allowBottomOverlap);\n        if(overlap === 0) {\n          return;\n        }\n\n        if(overlap < minOverlap) {\n          minOverlap = overlap;\n          minCoordinates = {position: this.position, alignment: this.alignment};\n        }\n\n        this._reposition();\n\n        $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n      }\n      // If we get through the entire loop, there was no non-overlapping\n      // position available. Pick the version with least overlap.\n      this.position = minCoordinates.position;\n      this.alignment = minCoordinates.alignment;\n      $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n    }\n  }\n\n}\n\nPositionable.defaults = {\n  /**\n   * Position of positionable relative to anchor. Can be left, right, bottom, top, or auto.\n   * @option\n   * @type {string}\n   * @default 'auto'\n   */\n  position: 'auto',\n  /**\n   * Alignment of positionable relative to anchor. Can be left, right, bottom, top, center, or auto.\n   * @option\n   * @type {string}\n   * @default 'auto'\n   */\n  alignment: 'auto',\n  /**\n   * Allow overlap of container/window. If false, dropdown positionable first\n   * try to position as defined by data-position and data-alignment, but\n   * reposition if it would cause an overflow.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  allowOverlap: false,\n  /**\n   * Allow overlap of only the bottom of the container. This is the most common\n   * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n   * screen but not otherwise influence or break out of the container.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  allowBottomOverlap: true,\n  /**\n   * Number of pixels the positionable should be separated vertically from anchor\n   * @option\n   * @type {number}\n   * @default 0\n   */\n  vOffset: 0,\n  /**\n   * Number of pixels the positionable should be separated horizontally from anchor\n   * @option\n   * @type {number}\n   * @default 0\n   */\n  hOffset: 0,\n}\n\nexport {Positionable};\n", "import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { GetYoDigits, ignoreMousedisappear } from './foundation.core.utils';\nimport { Positionable } from './foundation.positionable';\n\nimport { Triggers } from './foundation.util.triggers';\nimport { Touch } from './foundation.util.touch'\n\n/**\n * Dropdown module.\n * @module foundation.dropdown\n * @requires foundation.util.keyboard\n * @requires foundation.util.box\n * @requires foundation.util.touch\n * @requires foundation.util.triggers\n */\nclass Dropdown extends Positionable {\n  /**\n   * Creates a new instance of a dropdown.\n   * @class\n   * @name Dropdown\n   * @param {jQuery} element - jQuery object to make into a dropdown.\n   *        Object should be of the dropdown panel, rather than its anchor.\n   * @param {Object} options - Overrides to the default plugin settings.\n   */\n  _setup(element, options) {\n    this.$element = element;\n    this.options = $.extend({}, Dropdown.defaults, this.$element.data(), options);\n    this.className = 'Dropdown'; // ie9 back compat\n\n    // Touch and Triggers init are idempotent, just need to make sure they are initialized\n    Touch.init($);\n    Triggers.init($);\n\n    this._init();\n\n    Keyboard.register('Dropdown', {\n      'ENTER': 'toggle',\n      'SPACE': 'toggle',\n      'ESCAPE': 'close'\n    });\n  }\n\n  /**\n   * Initializes the plugin by setting/checking options and attributes, adding helper variables, and saving the anchor.\n   * @function\n   * @private\n   */\n  _init() {\n    var $id = this.$element.attr('id');\n\n    this.$anchors = $(`[data-toggle=\"${$id}\"]`).length ? $(`[data-toggle=\"${$id}\"]`) : $(`[data-open=\"${$id}\"]`);\n    this.$anchors.attr({\n      'aria-controls': $id,\n      'data-is-focus': false,\n      'data-yeti-box': $id,\n      'aria-haspopup': true,\n      'aria-expanded': false\n    });\n\n    this._setCurrentAnchor(this.$anchors.first());\n\n    if(this.options.parentClass){\n      this.$parent = this.$element.parents('.' + this.options.parentClass);\n    }else{\n      this.$parent = null;\n    }\n\n    // Set [aria-labelledby] on the Dropdown if it is not set\n    if (typeof this.$element.attr('aria-labelledby') === 'undefined') {\n      // Get the anchor ID or create one\n      if (typeof this.$currentAnchor.attr('id') === 'undefined') {\n        this.$currentAnchor.attr('id', GetYoDigits(6, 'dd-anchor'));\n      }\n\n      this.$element.attr('aria-labelledby', this.$currentAnchor.attr('id'));\n    }\n\n    this.$element.attr({\n      'aria-hidden': 'true',\n      'data-yeti-box': $id,\n      'data-resize': $id,\n    });\n\n    super._init();\n    this._events();\n  }\n\n  _getDefaultPosition() {\n    // handle legacy classnames\n    var position = this.$element[0].className.match(/(top|left|right|bottom)/g);\n    if(position) {\n      return position[0];\n    } else {\n      return 'bottom'\n    }\n  }\n\n  _getDefaultAlignment() {\n    // handle legacy float approach\n    var horizontalPosition = /float-(\\S+)/.exec(this.$currentAnchor.attr('class'));\n    if(horizontalPosition) {\n      return horizontalPosition[1];\n    }\n\n    return super._getDefaultAlignment();\n  }\n\n\n\n  /**\n   * Sets the position and orientation of the dropdown pane, checks for collisions if allow-overlap is not true.\n   * Recursively calls itself if a collision is detected, with a new position class.\n   * @function\n   * @private\n   */\n  _setPosition() {\n    this.$element.removeClass(`has-position-${this.position} has-alignment-${this.alignment}`);\n    super._setPosition(this.$currentAnchor, this.$element, this.$parent);\n    this.$element.addClass(`has-position-${this.position} has-alignment-${this.alignment}`);\n  }\n\n  /**\n   * Make it a current anchor.\n   * Current anchor as the reference for the position of Dropdown panes.\n   * @param {HTML} el - DOM element of the anchor.\n   * @function\n   * @private\n   */\n  _setCurrentAnchor(el) {\n    this.$currentAnchor = $(el);\n  }\n\n  /**\n   * Adds event listeners to the element utilizing the triggers utility library.\n   * @function\n   * @private\n   */\n  _events() {\n    var _this = this,\n        hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined');\n\n    this.$element.on({\n      'open.zf.trigger': this.open.bind(this),\n      'close.zf.trigger': this.close.bind(this),\n      'toggle.zf.trigger': this.toggle.bind(this),\n      'resizeme.zf.trigger': this._setPosition.bind(this)\n    });\n\n    this.$anchors.off('click.zf.trigger')\n      .on('click.zf.trigger', function(e) {\n        _this._setCurrentAnchor(this);\n\n        if (\n          // if forceFollow false, always prevent default action\n          (_this.options.forceFollow === false) ||\n          // if forceFollow true and hover option true, only prevent default action on 1st click\n          // on 2nd click (dropown opened) the default action (e.g. follow a href) gets executed\n          (hasTouch && _this.options.hover && _this.$element.hasClass('is-open') === false)\n        ) {\n          e.preventDefault();\n        }\n    });\n\n    if(this.options.hover){\n      this.$anchors.off('mouseenter.zf.dropdown mouseleave.zf.dropdown')\n      .on('mouseenter.zf.dropdown', function(){\n        _this._setCurrentAnchor(this);\n\n        var bodyData = $('body').data();\n        if(typeof(bodyData.whatinput) === 'undefined' || bodyData.whatinput === 'mouse') {\n          clearTimeout(_this.timeout);\n          _this.timeout = setTimeout(function(){\n            _this.open();\n            _this.$anchors.data('hover', true);\n          }, _this.options.hoverDelay);\n        }\n      }).on('mouseleave.zf.dropdown', ignoreMousedisappear(function(){\n        clearTimeout(_this.timeout);\n        _this.timeout = setTimeout(function(){\n          _this.close();\n          _this.$anchors.data('hover', false);\n        }, _this.options.hoverDelay);\n      }));\n      if(this.options.hoverPane){\n        this.$element.off('mouseenter.zf.dropdown mouseleave.zf.dropdown')\n            .on('mouseenter.zf.dropdown', function(){\n              clearTimeout(_this.timeout);\n            }).on('mouseleave.zf.dropdown', ignoreMousedisappear(function(){\n              clearTimeout(_this.timeout);\n              _this.timeout = setTimeout(function(){\n                _this.close();\n                _this.$anchors.data('hover', false);\n              }, _this.options.hoverDelay);\n            }));\n      }\n    }\n    this.$anchors.add(this.$element).on('keydown.zf.dropdown', function(e) {\n\n      var $target = $(this);\n\n      Keyboard.handleKey(e, 'Dropdown', {\n        open: function() {\n          if ($target.is(_this.$anchors) && !$target.is('input, textarea')) {\n            _this.open();\n            _this.$element.attr('tabindex', -1).focus();\n            e.preventDefault();\n          }\n        },\n        close: function() {\n          _this.close();\n          _this.$anchors.focus();\n        }\n      });\n    });\n  }\n\n  /**\n   * Adds an event handler to the body to close any dropdowns on a click.\n   * @function\n   * @private\n   */\n  _addBodyHandler() {\n     var $body = $(document.body).not(this.$element),\n         _this = this;\n     $body.off('click.zf.dropdown tap.zf.dropdown')\n          .on('click.zf.dropdown tap.zf.dropdown', function (e) {\n            if(_this.$anchors.is(e.target) || _this.$anchors.find(e.target).length) {\n              return;\n            }\n            if(_this.$element.is(e.target) || _this.$element.find(e.target).length) {\n              return;\n            }\n            _this.close();\n            $body.off('click.zf.dropdown tap.zf.dropdown');\n          });\n  }\n\n  /**\n   * Opens the dropdown pane, and fires a bubbling event to close other dropdowns.\n   * @function\n   * @fires Dropdown#closeme\n   * @fires Dropdown#show\n   */\n  open() {\n    // var _this = this;\n    /**\n     * Fires to close other open dropdowns, typically when dropdown is opening\n     * @event Dropdown#closeme\n     */\n    this.$element.trigger('closeme.zf.dropdown', this.$element.attr('id'));\n    this.$anchors.addClass('hover')\n        .attr({'aria-expanded': true});\n    // this.$element/*.show()*/;\n\n    this.$element.addClass('is-opening');\n    this._setPosition();\n    this.$element.removeClass('is-opening').addClass('is-open')\n        .attr({'aria-hidden': false});\n\n    if(this.options.autoFocus){\n      var $focusable = Keyboard.findFocusable(this.$element);\n      if($focusable.length){\n        $focusable.eq(0).focus();\n      }\n    }\n\n    if(this.options.closeOnClick){ this._addBodyHandler(); }\n\n    if (this.options.trapFocus) {\n      Keyboard.trapFocus(this.$element);\n    }\n\n    /**\n     * Fires once the dropdown is visible.\n     * @event Dropdown#show\n     */\n    this.$element.trigger('show.zf.dropdown', [this.$element]);\n  }\n\n  /**\n   * Closes the open dropdown pane.\n   * @function\n   * @fires Dropdown#hide\n   */\n  close() {\n    if(!this.$element.hasClass('is-open')){\n      return false;\n    }\n    this.$element.removeClass('is-open')\n        .attr({'aria-hidden': true});\n\n    this.$anchors.removeClass('hover')\n        .attr('aria-expanded', false);\n\n    /**\n     * Fires once the dropdown is no longer visible.\n     * @event Dropdown#hide\n     */\n    this.$element.trigger('hide.zf.dropdown', [this.$element]);\n\n    if (this.options.trapFocus) {\n      Keyboard.releaseFocus(this.$element);\n    }\n  }\n\n  /**\n   * Toggles the dropdown pane's visibility.\n   * @function\n   */\n  toggle() {\n    if(this.$element.hasClass('is-open')){\n      if(this.$anchors.data('hover')) return;\n      this.close();\n    }else{\n      this.open();\n    }\n  }\n\n  /**\n   * Destroys the dropdown.\n   * @function\n   */\n  _destroy() {\n    this.$element.off('.zf.trigger').hide();\n    this.$anchors.off('.zf.dropdown');\n    $(document.body).off('click.zf.dropdown tap.zf.dropdown');\n\n  }\n}\n\nDropdown.defaults = {\n  /**\n   * Class that designates bounding container of Dropdown (default: window)\n   * @option\n   * @type {?string}\n   * @default null\n   */\n  parentClass: null,\n  /**\n   * Amount of time to delay opening a submenu on hover event.\n   * @option\n   * @type {number}\n   * @default 250\n   */\n  hoverDelay: 250,\n  /**\n   * Allow submenus to open on hover events\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  hover: false,\n  /**\n   * Don't close dropdown when hovering over dropdown pane\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  hoverPane: false,\n  /**\n   * Number of pixels between the dropdown pane and the triggering element on open.\n   * @option\n   * @type {number}\n   * @default 0\n   */\n  vOffset: 0,\n  /**\n   * Number of pixels between the dropdown pane and the triggering element on open.\n   * @option\n   * @type {number}\n   * @default 0\n   */\n  hOffset: 0,\n  /**\n   * Position of dropdown. Can be left, right, bottom, top, or auto.\n   * @option\n   * @type {string}\n   * @default 'auto'\n   */\n  position: 'auto',\n  /**\n   * Alignment of dropdown relative to anchor. Can be left, right, bottom, top, center, or auto.\n   * @option\n   * @type {string}\n   * @default 'auto'\n   */\n  alignment: 'auto',\n  /**\n   * Allow overlap of container/window. If false, dropdown will first try to position as defined by data-position and data-alignment, but reposition if it would cause an overflow.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  allowOverlap: false,\n  /**\n   * Allow overlap of only the bottom of the container. This is the most common\n   * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n   * screen but not otherwise influence or break out of the container.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  allowBottomOverlap: true,\n  /**\n   * Allow the plugin to trap focus to the dropdown pane if opened with keyboard commands.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  trapFocus: false,\n  /**\n   * Allow the plugin to set focus to the first focusable element within the pane, regardless of method of opening.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  autoFocus: false,\n  /**\n   * Allows a click on the body to close the dropdown.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  closeOnClick: false,\n  /**\n   * If true the default action of the toggle (e.g. follow a link with href) gets executed on click. If hover option is also true the default action gets prevented on first click for mobile / touch devices and executed on second click.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  forceFollow: true\n};\n\nexport {Dropdown};\n", "import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { rtl as Rtl, ignoreMousedisappear } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { Box } from './foundation.util.box';\nimport { Touch } from './foundation.util.touch'\n\n\n/**\n * DropdownMenu module.\n * @module foundation.dropdownMenu\n * @requires foundation.util.keyboard\n * @requires foundation.util.box\n * @requires foundation.util.nest\n * @requires foundation.util.touch\n */\n\nclass DropdownMenu extends Plugin {\n  /**\n   * Creates a new instance of DropdownMenu.\n   * @class\n   * @name DropdownMenu\n   * @fires DropdownMenu#init\n   * @param {jQuery} element - jQuery object to make into a dropdown menu.\n   * @param {Object} options - Overrides to the default plugin settings.\n   */\n  _setup(element, options) {\n    this.$element = element;\n    this.options = $.extend({}, DropdownMenu.defaults, this.$element.data(), options);\n    this.className = 'DropdownMenu'; // ie9 back compat\n\n    Touch.init($); // Touch init is idempotent, we just need to make sure it's initialied.\n\n    this._init();\n\n    Keyboard.register('DropdownMenu', {\n      'ENTER': 'open',\n      'SPACE': 'open',\n      'ARROW_RIGHT': 'next',\n      'ARROW_UP': 'up',\n      'ARROW_DOWN': 'down',\n      'ARROW_LEFT': 'previous',\n      'ESCAPE': 'close'\n    });\n  }\n\n  /**\n   * Initializes the plugin, and calls _prepareMenu\n   * @private\n   * @function\n   */\n  _init() {\n    Nest.Feather(this.$element, 'dropdown');\n\n    var subs = this.$element.find('li.is-dropdown-submenu-parent');\n    this.$element.children('.is-dropdown-submenu-parent').children('.is-dropdown-submenu').addClass('first-sub');\n\n    this.$menuItems = this.$element.find('li[role=\"none\"]');\n    this.$tabs = this.$element.children('li[role=\"none\"]');\n    this.$tabs.find('ul.is-dropdown-submenu').addClass(this.options.verticalClass);\n\n    if (this.options.alignment === 'auto') {\n        if (this.$element.hasClass(this.options.rightClass) || Rtl() || this.$element.parents('.top-bar-right').is('*')) {\n            this.options.alignment = 'right';\n            subs.addClass('opens-left');\n        } else {\n            this.options.alignment = 'left';\n            subs.addClass('opens-right');\n        }\n    } else {\n      if (this.options.alignment === 'right') {\n          subs.addClass('opens-left');\n      } else {\n          subs.addClass('opens-right');\n      }\n    }\n    this.changed = false;\n    this._events();\n  };\n\n  _isVertical() {\n    return this.$tabs.css('display') === 'block' || this.$element.css('flex-direction') === 'column';\n  }\n\n  _isRtl() {\n    return this.$element.hasClass('align-right') || (Rtl() && !this.$element.hasClass('align-left'));\n  }\n\n  /**\n   * Adds event listeners to elements within the menu\n   * @private\n   * @function\n   */\n  _events() {\n    var _this = this,\n        hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined'),\n        parClass = 'is-dropdown-submenu-parent';\n\n    // used for onClick and in the keyboard handlers\n    var handleClickFn = function(e) {\n      var $elem = $(e.target).parentsUntil('ul', `.${parClass}`),\n          hasSub = $elem.hasClass(parClass),\n          hasClicked = $elem.attr('data-is-click') === 'true',\n          $sub = $elem.children('.is-dropdown-submenu');\n\n      if (hasSub) {\n        if (hasClicked) {\n          if (!_this.options.closeOnClick\n            || (!_this.options.clickOpen && !hasTouch)\n            || (_this.options.forceFollow && hasTouch)) {\n            return;\n          }\n          e.stopImmediatePropagation();\n          e.preventDefault();\n          _this._hide($elem);\n        }\n        else {\n          e.stopImmediatePropagation();\n          e.preventDefault();\n          _this._show($sub);\n          $elem.add($elem.parentsUntil(_this.$element, `.${parClass}`)).attr('data-is-click', true);\n        }\n      }\n    };\n\n    if (this.options.clickOpen || hasTouch) {\n      this.$menuItems.on('click.zf.dropdownMenu touchstart.zf.dropdownMenu', handleClickFn);\n    }\n\n    // Handle Leaf element Clicks\n    if(_this.options.closeOnClickInside){\n      this.$menuItems.on('click.zf.dropdownMenu', function() {\n        var $elem = $(this),\n            hasSub = $elem.hasClass(parClass);\n        if(!hasSub){\n          _this._hide();\n        }\n      });\n    }\n\n    if (hasTouch && this.options.disableHoverOnTouch) this.options.disableHover = true;\n\n    if (!this.options.disableHover) {\n      this.$menuItems.on('mouseenter.zf.dropdownMenu', function () {\n        var $elem = $(this),\n          hasSub = $elem.hasClass(parClass);\n\n        if (hasSub) {\n          clearTimeout($elem.data('_delay'));\n          $elem.data('_delay', setTimeout(function () {\n            _this._show($elem.children('.is-dropdown-submenu'));\n          }, _this.options.hoverDelay));\n        }\n      }).on('mouseleave.zf.dropdownMenu', ignoreMousedisappear(function () {\n        var $elem = $(this),\n            hasSub = $elem.hasClass(parClass);\n        if (hasSub && _this.options.autoclose) {\n          if ($elem.attr('data-is-click') === 'true' && _this.options.clickOpen) { return false; }\n\n          clearTimeout($elem.data('_delay'));\n          $elem.data('_delay', setTimeout(function () {\n            _this._hide($elem);\n          }, _this.options.closingTime));\n        }\n      }));\n    }\n    this.$menuItems.on('keydown.zf.dropdownMenu', function(e) {\n      var $element = $(e.target).parentsUntil('ul', '[role=\"none\"]'),\n          isTab = _this.$tabs.index($element) > -1,\n          $elements = isTab ? _this.$tabs : $element.siblings('li').add($element),\n          $prevElement,\n          $nextElement;\n\n      $elements.each(function(i) {\n        if ($(this).is($element)) {\n          $prevElement = $elements.eq(i-1);\n          $nextElement = $elements.eq(i+1);\n          return;\n        }\n      });\n\n      var nextSibling = function() {\n        $nextElement.children('a:first').focus();\n        e.preventDefault();\n      }, prevSibling = function() {\n        $prevElement.children('a:first').focus();\n        e.preventDefault();\n      }, openSub = function() {\n        var $sub = $element.children('ul.is-dropdown-submenu');\n        if ($sub.length) {\n          _this._show($sub);\n          $element.find('li > a:first').focus();\n          e.preventDefault();\n        } else { return; }\n      }, closeSub = function() {\n        //if ($element.is(':first-child')) {\n        var close = $element.parent('ul').parent('li');\n        close.children('a:first').focus();\n        _this._hide(close);\n        e.preventDefault();\n        //}\n      };\n      var functions = {\n        open: openSub,\n        close: function() {\n          _this._hide(_this.$element);\n          _this.$menuItems.eq(0).children('a').focus(); // focus to first element\n          e.preventDefault();\n        }\n      };\n\n      if (isTab) {\n        if (_this._isVertical()) { // vertical menu\n          if (_this._isRtl()) { // right aligned\n            $.extend(functions, {\n              down: nextSibling,\n              up: prevSibling,\n              next: closeSub,\n              previous: openSub\n            });\n          } else { // left aligned\n            $.extend(functions, {\n              down: nextSibling,\n              up: prevSibling,\n              next: openSub,\n              previous: closeSub\n            });\n          }\n        } else { // horizontal menu\n          if (_this._isRtl()) { // right aligned\n            $.extend(functions, {\n              next: prevSibling,\n              previous: nextSibling,\n              down: openSub,\n              up: closeSub\n            });\n          } else { // left aligned\n            $.extend(functions, {\n              next: nextSibling,\n              previous: prevSibling,\n              down: openSub,\n              up: closeSub\n            });\n          }\n        }\n      } else { // not tabs -> one sub\n        if (_this._isRtl()) { // right aligned\n          $.extend(functions, {\n            next: closeSub,\n            previous: openSub,\n            down: nextSibling,\n            up: prevSibling\n          });\n        } else { // left aligned\n          $.extend(functions, {\n            next: openSub,\n            previous: closeSub,\n            down: nextSibling,\n            up: prevSibling\n          });\n        }\n      }\n      Keyboard.handleKey(e, 'DropdownMenu', functions);\n\n    });\n  }\n\n  /**\n   * Adds an event handler to the body to close any dropdowns on a click.\n   * @function\n   * @private\n   */\n  _addBodyHandler() {\n    const $body = $(document.body);\n    this._removeBodyHandler();\n    $body.on('click.zf.dropdownMenu tap.zf.dropdownMenu', (e) => {\n      var isItself = !!$(e.target).closest(this.$element).length;\n      if (isItself) return;\n\n      this._hide();\n      this._removeBodyHandler();\n    });\n  }\n\n  /**\n   * Remove the body event handler. See `_addBodyHandler`.\n   * @function\n   * @private\n   */\n  _removeBodyHandler() {\n    $(document.body).off('click.zf.dropdownMenu tap.zf.dropdownMenu');\n  }\n\n  /**\n   * Opens a dropdown pane, and checks for collisions first.\n   * @param {jQuery} $sub - ul element that is a submenu to show\n   * @function\n   * @private\n   * @fires DropdownMenu#show\n   */\n  _show($sub) {\n    var idx = this.$tabs.index(this.$tabs.filter(function(i, el) {\n      return $(el).find($sub).length > 0;\n    }));\n    var $sibs = $sub.parent('li.is-dropdown-submenu-parent').siblings('li.is-dropdown-submenu-parent');\n    this._hide($sibs, idx);\n    $sub.css('visibility', 'hidden').addClass('js-dropdown-active')\n        .parent('li.is-dropdown-submenu-parent').addClass('is-active');\n    var clear = Box.ImNotTouchingYou($sub, null, true);\n    if (!clear) {\n      var oldClass = this.options.alignment === 'left' ? '-right' : '-left',\n          $parentLi = $sub.parent('.is-dropdown-submenu-parent');\n      $parentLi.removeClass(`opens${oldClass}`).addClass(`opens-${this.options.alignment}`);\n      clear = Box.ImNotTouchingYou($sub, null, true);\n      if (!clear) {\n        $parentLi.removeClass(`opens-${this.options.alignment}`).addClass('opens-inner');\n      }\n      this.changed = true;\n    }\n    $sub.css('visibility', '');\n    if (this.options.closeOnClick) { this._addBodyHandler(); }\n    /**\n     * Fires when the new dropdown pane is visible.\n     * @event DropdownMenu#show\n     */\n    this.$element.trigger('show.zf.dropdownMenu', [$sub]);\n  }\n\n  /**\n   * Hides a single, currently open dropdown pane, if passed a parameter, otherwise, hides everything.\n   * @function\n   * @param {jQuery} $elem - element with a submenu to hide\n   * @param {Number} idx - index of the $tabs collection to hide\n   * @fires DropdownMenu#hide\n   * @private\n   */\n  _hide($elem, idx) {\n    var $toClose;\n    if ($elem && $elem.length) {\n      $toClose = $elem;\n    } else if (typeof idx !== 'undefined') {\n      $toClose = this.$tabs.not(function(i) {\n        return i === idx;\n      });\n    }\n    else {\n      $toClose = this.$element;\n    }\n    var somethingToClose = $toClose.hasClass('is-active') || $toClose.find('.is-active').length > 0;\n\n    if (somethingToClose) {\n      var $activeItem = $toClose.find('li.is-active');\n      $activeItem.add($toClose).attr({\n        'data-is-click': false\n      }).removeClass('is-active');\n\n      $toClose.find('ul.js-dropdown-active').removeClass('js-dropdown-active');\n\n      if (this.changed || $toClose.find('opens-inner').length) {\n        var oldClass = this.options.alignment === 'left' ? 'right' : 'left';\n        $toClose.find('li.is-dropdown-submenu-parent').add($toClose)\n                .removeClass(`opens-inner opens-${this.options.alignment}`)\n                .addClass(`opens-${oldClass}`);\n        this.changed = false;\n      }\n\n      clearTimeout($activeItem.data('_delay'));\n      this._removeBodyHandler();\n\n      /**\n       * Fires when the open menus are closed.\n       * @event DropdownMenu#hide\n       */\n      this.$element.trigger('hide.zf.dropdownMenu', [$toClose]);\n    }\n  }\n\n  /**\n   * Destroys the plugin.\n   * @function\n   */\n  _destroy() {\n    this.$menuItems.off('.zf.dropdownMenu').removeAttr('data-is-click')\n        .removeClass('is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner');\n    $(document.body).off('.zf.dropdownMenu');\n    Nest.Burn(this.$element, 'dropdown');\n  }\n}\n\n/**\n * Default settings for plugin\n */\nDropdownMenu.defaults = {\n  /**\n   * Disallows hover events from opening submenus\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  disableHover: false,\n  /**\n   * Disallows hover on touch devices\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  disableHoverOnTouch: true,\n  /**\n   * Allow a submenu to automatically close on a mouseleave event, if not clicked open.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  autoclose: true,\n  /**\n   * Amount of time to delay opening a submenu on hover event.\n   * @option\n   * @type {number}\n   * @default 50\n   */\n  hoverDelay: 50,\n  /**\n   * Allow a submenu to open/remain open on parent click event. Allows cursor to move away from menu.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  clickOpen: false,\n  /**\n   * Amount of time to delay closing a submenu on a mouseleave event.\n   * @option\n   * @type {number}\n   * @default 500\n   */\n\n  closingTime: 500,\n  /**\n   * Position of the menu relative to what direction the submenus should open. Handled by JS. Can be `'auto'`, `'left'` or `'right'`.\n   * @option\n   * @type {string}\n   * @default 'auto'\n   */\n  alignment: 'auto',\n  /**\n   * Allow clicks on the body to close any open submenus.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  closeOnClick: true,\n  /**\n   * Allow clicks on leaf anchor links to close any open submenus.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  closeOnClickInside: true,\n  /**\n   * Class applied to vertical oriented menus, Foundation default is `vertical`. Update this if using your own class.\n   * @option\n   * @type {string}\n   * @default 'vertical'\n   */\n  verticalClass: 'vertical',\n  /**\n   * Class applied to right-side oriented menus, Foundation default is `align-right`. Update this if using your own class.\n   * @option\n   * @type {string}\n   * @default 'align-right'\n   */\n  rightClass: 'align-right',\n  /**\n   * Boolean to force overide the clicking of links to perform default action, on second touch event for mobile.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  forceFollow: true\n};\n\nexport {DropdownMenu};\n", "import $ from 'jquery';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { onImagesLoaded } from './foundation.util.imageLoader';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * Equalizer module.\n * @module foundation.equalizer\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.imageLoader if equalizer contains images\n */\n\nclass Equalizer extends Plugin {\n  /**\n   * Creates a new instance of Equalizer.\n   * @class\n   * @name Equalizer\n   * @fires Equalizer#init\n   * @param {Object} element - jQuery object to add the trigger to.\n   * @param {Object} options - Overrides to the default plugin settings.\n   */\n  _setup(element, options){\n    this.$element = element;\n    this.options  = $.extend({}, Equalizer.defaults, this.$element.data(), options);\n    this.className = 'Equalizer'; // ie9 back compat\n\n    this._init();\n  }\n\n  /**\n   * Initializes the Equalizer plugin and calls functions to get equalizer functioning on load.\n   * @private\n   */\n  _init() {\n    var eqId = this.$element.attr('data-equalizer') || '';\n    var $watched = this.$element.find(`[data-equalizer-watch=\"${eqId}\"]`);\n\n    MediaQuery._init();\n\n    this.$watched = $watched.length ? $watched : this.$element.find('[data-equalizer-watch]');\n    this.$element.attr('data-resize', (eqId || GetYoDigits(6, 'eq')));\n    this.$element.attr('data-mutate', (eqId || GetYoDigits(6, 'eq')));\n\n    this.hasNested = this.$element.find('[data-equalizer]').length > 0;\n    this.isNested = this.$element.parentsUntil(document.body, '[data-equalizer]').length > 0;\n    this.isOn = false;\n    this._bindHandler = {\n      onResizeMeBound: this._onResizeMe.bind(this),\n      onPostEqualizedBound: this._onPostEqualized.bind(this)\n    };\n\n    var imgs = this.$element.find('img');\n    var tooSmall;\n    if(this.options.equalizeOn){\n      tooSmall = this._checkMQ();\n      $(window).on('changed.zf.mediaquery', this._checkMQ.bind(this));\n    }else{\n      this._events();\n    }\n    if((typeof tooSmall !== 'undefined' && tooSmall === false) || typeof tooSmall === 'undefined'){\n      if(imgs.length){\n        onImagesLoaded(imgs, this._reflow.bind(this));\n      }else{\n        this._reflow();\n      }\n    }\n  }\n\n  /**\n   * Removes event listeners if the breakpoint is too small.\n   * @private\n   */\n  _pauseEvents() {\n    this.isOn = false;\n    this.$element.off({\n      '.zf.equalizer': this._bindHandler.onPostEqualizedBound,\n      'resizeme.zf.trigger': this._bindHandler.onResizeMeBound,\n\t  'mutateme.zf.trigger': this._bindHandler.onResizeMeBound\n    });\n  }\n\n  /**\n   * function to handle $elements resizeme.zf.trigger, with bound this on _bindHandler.onResizeMeBound\n   * @private\n   */\n  _onResizeMe() {\n    this._reflow();\n  }\n\n  /**\n   * function to handle $elements postequalized.zf.equalizer, with bound this on _bindHandler.onPostEqualizedBound\n   * @private\n   */\n  _onPostEqualized(e) {\n    if(e.target !== this.$element[0]){ this._reflow(); }\n  }\n\n  /**\n   * Initializes events for Equalizer.\n   * @private\n   */\n  _events() {\n    this._pauseEvents();\n    if(this.hasNested){\n      this.$element.on('postequalized.zf.equalizer', this._bindHandler.onPostEqualizedBound);\n    }else{\n      this.$element.on('resizeme.zf.trigger', this._bindHandler.onResizeMeBound);\n\t  this.$element.on('mutateme.zf.trigger', this._bindHandler.onResizeMeBound);\n    }\n    this.isOn = true;\n  }\n\n  /**\n   * Checks the current breakpoint to the minimum required size.\n   * @private\n   */\n  _checkMQ() {\n    var tooSmall = !MediaQuery.is(this.options.equalizeOn);\n    if(tooSmall){\n      if(this.isOn){\n        this._pauseEvents();\n        this.$watched.css('height', 'auto');\n      }\n    }else{\n      if(!this.isOn){\n        this._events();\n      }\n    }\n    return tooSmall;\n  }\n\n  /**\n   * A noop version for the plugin\n   * @private\n   */\n  _killswitch() {\n    return;\n  }\n\n  /**\n   * Calls necessary functions to update Equalizer upon DOM change\n   * @private\n   */\n  _reflow() {\n    if(!this.options.equalizeOnStack){\n      if(this._isStacked()){\n        this.$watched.css('height', 'auto');\n        return false;\n      }\n    }\n    if (this.options.equalizeByRow) {\n      this.getHeightsByRow(this.applyHeightByRow.bind(this));\n    }else{\n      this.getHeights(this.applyHeight.bind(this));\n    }\n  }\n\n  /**\n   * Manually determines if the first 2 elements are *NOT* stacked.\n   * @private\n   */\n  _isStacked() {\n    if (!this.$watched[0] || !this.$watched[1]) {\n      return true;\n    }\n    return this.$watched[0].getBoundingClientRect().top !== this.$watched[1].getBoundingClientRect().top;\n  }\n\n  /**\n   * Finds the outer heights of children contained within an Equalizer parent and returns them in an array\n   * @param {Function} cb - A non-optional callback to return the heights array to.\n   * @returns {Array} heights - An array of heights of children within Equalizer container\n   */\n  getHeights(cb) {\n    var heights = [];\n    for(var i = 0, len = this.$watched.length; i < len; i++){\n      this.$watched[i].style.height = 'auto';\n      heights.push(this.$watched[i].offsetHeight);\n    }\n    cb(heights);\n  }\n\n  /**\n   * Finds the outer heights of children contained within an Equalizer parent and returns them in an array\n   * @param {Function} cb - A non-optional callback to return the heights array to.\n   * @returns {Array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child\n   */\n  getHeightsByRow(cb) {\n    var lastElTopOffset = (this.$watched.length ? this.$watched.first().offset().top : 0),\n        groups = [],\n        group = 0;\n    //group by Row\n    groups[group] = [];\n    for(var i = 0, len = this.$watched.length; i < len; i++){\n      this.$watched[i].style.height = 'auto';\n      //maybe could use this.$watched[i].offsetTop\n      var elOffsetTop = $(this.$watched[i]).offset().top;\n      if (elOffsetTop !== lastElTopOffset) {\n        group++;\n        groups[group] = [];\n        lastElTopOffset=elOffsetTop;\n      }\n      groups[group].push([this.$watched[i],this.$watched[i].offsetHeight]);\n    }\n\n    for (var j = 0, ln = groups.length; j < ln; j++) {\n      var heights = $(groups[j]).map(function(){ return this[1]; }).get();\n      var max         = Math.max.apply(null, heights);\n      groups[j].push(max);\n    }\n    cb(groups);\n  }\n\n  /**\n   * Changes the CSS height property of each child in an Equalizer parent to match the tallest\n   * @param {array} heights - An array of heights of children within Equalizer container\n   * @fires Equalizer#preequalized\n   * @fires Equalizer#postequalized\n   */\n  applyHeight(heights) {\n    var max = Math.max.apply(null, heights);\n    /**\n     * Fires before the heights are applied\n     * @event Equalizer#preequalized\n     */\n    this.$element.trigger('preequalized.zf.equalizer');\n\n    this.$watched.css('height', max);\n\n    /**\n     * Fires when the heights have been applied\n     * @event Equalizer#postequalized\n     */\n     this.$element.trigger('postequalized.zf.equalizer');\n  }\n\n  /**\n   * Changes the CSS height property of each child in an Equalizer parent to match the tallest by row\n   * @param {array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child\n   * @fires Equalizer#preequalized\n   * @fires Equalizer#preequalizedrow\n   * @fires Equalizer#postequalizedrow\n   * @fires Equalizer#postequalized\n   */\n  applyHeightByRow(groups) {\n    /**\n     * Fires before the heights are applied\n     */\n    this.$element.trigger('preequalized.zf.equalizer');\n    for (var i = 0, len = groups.length; i < len ; i++) {\n      var groupsILength = groups[i].length,\n          max = groups[i][groupsILength - 1];\n      if (groupsILength<=2) {\n        $(groups[i][0][0]).css({'height':'auto'});\n        continue;\n      }\n      /**\n        * Fires before the heights per row are applied\n        * @event Equalizer#preequalizedrow\n        */\n      this.$element.trigger('preequalizedrow.zf.equalizer');\n      for (var j = 0, lenJ = (groupsILength-1); j < lenJ ; j++) {\n        $(groups[i][j][0]).css({'height':max});\n      }\n      /**\n        * Fires when the heights per row have been applied\n        * @event Equalizer#postequalizedrow\n        */\n      this.$element.trigger('postequalizedrow.zf.equalizer');\n    }\n    /**\n     * Fires when the heights have been applied\n     */\n     this.$element.trigger('postequalized.zf.equalizer');\n  }\n\n  /**\n   * Destroys an instance of Equalizer.\n   * @function\n   */\n  _destroy() {\n    this._pauseEvents();\n    this.$watched.css('height', 'auto');\n  }\n}\n\n/**\n * Default settings for plugin\n */\nEqualizer.defaults = {\n  /**\n   * Enable height equalization when stacked on smaller screens.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  equalizeOnStack: false,\n  /**\n   * Enable height equalization row by row.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  equalizeByRow: false,\n  /**\n   * String representing the minimum breakpoint size the plugin should equalize heights on.\n   * @option\n   * @type {string}\n   * @default ''\n   */\n  equalizeOn: ''\n};\n\nexport {Equalizer};\n", "import $ from 'jquery';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Plugin } from './foundation.core.plugin';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Interchange module.\n * @module foundation.interchange\n * @requires foundation.util.mediaQuery\n */\n\nclass Interchange extends Plugin {\n  /**\n   * Creates a new instance of Interchange.\n   * @class\n   * @name Interchange\n   * @fires Interchange#init\n   * @param {Object} element - jQuery object to add the trigger to.\n   * @param {Object} options - Overrides to the default plugin settings.\n   */\n  _setup(element, options) {\n    this.$element = element;\n    this.options = $.extend({}, Interchange.defaults, this.$element.data(), options);\n    this.rules = [];\n    this.currentPath = '';\n    this.className = 'Interchange'; // ie9 back compat\n\n    // Triggers init is idempotent, just need to make sure it is initialized\n    Triggers.init($);\n\n    this._init();\n    this._events();\n  }\n\n  /**\n   * Initializes the Interchange plugin and calls functions to get interchange functioning on load.\n   * @function\n   * @private\n   */\n  _init() {\n    MediaQuery._init();\n\n    var id = this.$element[0].id || GetYoDigits(6, 'interchange');\n    this.$element.attr({\n      'data-resize': id,\n      'id': id\n    });\n\n    this._parseOptions();\n    this._addBreakpoints();\n    this._generateRules();\n    this._reflow();\n  }\n\n  /**\n   * Initializes events for Interchange.\n   * @function\n   * @private\n   */\n  _events() {\n    this.$element.off('resizeme.zf.trigger').on('resizeme.zf.trigger', () => this._reflow());\n  }\n\n  /**\n   * Calls necessary functions to update Interchange upon DOM change\n   * @function\n   * @private\n   */\n  _reflow() {\n    var match;\n\n    // Iterate through each rule, but only save the last match\n    for (var i in this.rules) {\n      if(this.rules.hasOwnProperty(i)) {\n        var rule = this.rules[i];\n        if (window.matchMedia(rule.query).matches) {\n          match = rule;\n        }\n      }\n    }\n\n    if (match) {\n      this.replace(match.path);\n    }\n  }\n\n  /**\n   * Check options valifity and set defaults for:\n   * - `data-interchange-type`: if set, enforce the type of replacement (auto, src, background or html)\n   * @function\n   * @private\n   */\n  _parseOptions() {\n    var types = ['auto', 'src', 'background', 'html'];\n    if (typeof this.options.type === 'undefined')\n      this.options.type = 'auto';\n    else if (types.indexOf(this.options.type) === -1) {\n      console.warn(`Warning: invalid value \"${this.options.type}\" for Interchange option \"type\"`);\n      this.options.type = 'auto';\n    }\n  }\n\n  /**\n   * Gets the Foundation breakpoints and adds them to the Interchange.SPECIAL_QUERIES object.\n   * @function\n   * @private\n   */\n  _addBreakpoints() {\n    for (var i in MediaQuery.queries) {\n      if (MediaQuery.queries.hasOwnProperty(i)) {\n        var query = MediaQuery.queries[i];\n        Interchange.SPECIAL_QUERIES[query.name] = query.value;\n      }\n    }\n  }\n\n  /**\n   * Checks the Interchange element for the provided media query + content pairings\n   * @function\n   * @private\n   * @returns {Array} scenarios - Array of objects that have 'mq' and 'path' keys with corresponding keys\n   */\n  _generateRules() {\n    var rulesList = [];\n    var rules;\n\n    if (this.options.rules) {\n      rules = this.options.rules;\n    }\n    else {\n      rules = this.$element.data('interchange');\n    }\n\n    rules =  typeof rules === 'string' ? rules.match(/\\[.*?, .*?\\]/g) : rules;\n\n    for (var i in rules) {\n      if(rules.hasOwnProperty(i)) {\n        var rule = rules[i].slice(1, -1).split(', ');\n        var path = rule.slice(0, -1).join('');\n        var query = rule[rule.length - 1];\n\n        if (Interchange.SPECIAL_QUERIES[query]) {\n          query = Interchange.SPECIAL_QUERIES[query];\n        }\n\n        rulesList.push({\n          path: path,\n          query: query\n        });\n      }\n    }\n\n    this.rules = rulesList;\n  }\n\n  /**\n   * Update the `src` property of an image, or change the HTML of a container, to the specified path.\n   * @function\n   * @param {String} path - Path to the image or HTML partial.\n   * @fires Interchange#replaced\n   */\n  replace(path) {\n    if (this.currentPath === path) return;\n\n    var trigger = 'replaced.zf.interchange';\n\n    var type = this.options.type;\n    if (type === 'auto') {\n      if (this.$element[0].nodeName === 'IMG')\n        type = 'src';\n      else if (path.match(/\\.(gif|jpe?g|png|svg|tiff)([?#].*)?/i))\n        type = 'background';\n      else\n        type = 'html';\n    }\n\n    // Replacing images\n    if (type === 'src') {\n      this.$element.attr('src', path)\n        .on('load', () => { this.currentPath = path; })\n        .trigger(trigger);\n    }\n    // Replacing background images\n    else if (type === 'background') {\n      path = path.replace(/\\(/g, '%28').replace(/\\)/g, '%29');\n      this.$element\n        .css({ 'background-image': 'url(' + path + ')' })\n        .trigger(trigger);\n    }\n    // Replacing HTML\n    else if (type === 'html') {\n      $.get(path, (response) => {\n        this.$element\n          .html(response)\n          .trigger(trigger);\n        $(response).foundation();\n        this.currentPath = path;\n      });\n    }\n\n    /**\n     * Fires when content in an Interchange element is done being loaded.\n     * @event Interchange#replaced\n     */\n    // this.$element.trigger('replaced.zf.interchange');\n  }\n\n  /**\n   * Destroys an instance of interchange.\n   * @function\n   */\n  _destroy() {\n    this.$element.off('resizeme.zf.trigger')\n  }\n}\n\n/**\n * Default settings for plugin\n */\nInterchange.defaults = {\n  /**\n   * Rules to be applied to Interchange elements. Set with the `data-interchange` array notation.\n   * @option\n   * @type {?array}\n   * @default null\n   */\n  rules: null,\n\n  /**\n   * Type of the responsive ressource to replace. It can take the following options:\n   * - `auto` (default): choose the type according to the element tag or the ressource extension,\n   * - `src`: replace the `[src]` attribute, recommended for images `<img>`.\n   * - `background`: replace the `background-image` CSS property.\n   * - `html`: replace the element content.\n   * @option\n   * @type {string}\n   * @default 'auto'\n   */\n  type: 'auto'\n};\n\nInterchange.SPECIAL_QUERIES = {\n  'landscape': 'screen and (orientation: landscape)',\n  'portrait': 'screen and (orientation: portrait)',\n  'retina': 'only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx)'\n};\n\nexport {Interchange};\n", "import $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * SmoothScroll module.\n * @module foundation.smoothScroll\n */\nclass SmoothScroll extends Plugin {\n  /**\n   * Creates a new instance of SmoothScroll.\n   * @class\n   * @name SmoothScroll\n   * @fires SmoothScroll#init\n   * @param {Object} element - jQuery object to add the trigger to.\n   * @param {Object} options - Overrides to the default plugin settings.\n   */\n    _setup(element, options) {\n        this.$element = element;\n        this.options = $.extend({}, SmoothScroll.defaults, this.$element.data(), options);\n        this.className = 'SmoothScroll'; // ie9 back compat\n\n        this._init();\n    }\n\n    /**\n     * Initialize the SmoothScroll plugin\n     * @private\n     */\n    _init() {\n        const id = this.$element[0].id || GetYoDigits(6, 'smooth-scroll');\n        this.$element.attr({ id });\n\n        this._events();\n    }\n\n    /**\n     * Initializes events for SmoothScroll.\n     * @private\n     */\n    _events() {\n        this._linkClickListener = this._handleLinkClick.bind(this);\n        this.$element.on('click.zf.smoothScroll', this._linkClickListener);\n        this.$element.on('click.zf.smoothScroll', 'a[href^=\"#\"]', this._linkClickListener);\n    }\n\n    /**\n     * Handle the given event to smoothly scroll to the anchor pointed by the event target.\n     * @param {*} e - event\n     * @function\n     * @private\n     */\n    _handleLinkClick(e) {\n        // Follow the link if it does not point to an anchor.\n        if (!$(e.currentTarget).is('a[href^=\"#\"]')) return;\n\n        const arrival = e.currentTarget.getAttribute('href');\n\n        this._inTransition = true;\n\n        SmoothScroll.scrollToLoc(arrival, this.options, () => {\n            this._inTransition = false;\n        });\n\n        e.preventDefault();\n    };\n\n    /**\n     * Function to scroll to a given location on the page.\n     * @param {String} loc - A properly formatted jQuery id selector. Example: '#foo'\n     * @param {Object} options - The options to use.\n     * @param {Function} callback - The callback function.\n     * @static\n     * @function\n     */\n    static scrollToLoc(loc, options = SmoothScroll.defaults, callback) {\n        const $loc = $(loc);\n\n        // Do nothing if target does not exist to prevent errors\n        if (!$loc.length) return false;\n\n        var scrollPos = Math.round($loc.offset().top - options.threshold / 2 - options.offset);\n\n        $('html, body').stop(true).animate(\n            { scrollTop: scrollPos },\n            options.animationDuration,\n            options.animationEasing,\n            () => {\n                if (typeof callback === 'function'){\n                    callback();\n                }\n            }\n        );\n    }\n\n    /**\n     * Destroys the SmoothScroll instance.\n     * @function\n     */\n    _destroy() {\n        this.$element.off('click.zf.smoothScroll', this._linkClickListener)\n        this.$element.off('click.zf.smoothScroll', 'a[href^=\"#\"]', this._linkClickListener);\n    }\n}\n\n/**\n * Default settings for plugin.\n */\nSmoothScroll.defaults = {\n  /**\n   * Amount of time, in ms, the animated scrolling should take between locations.\n   * @option\n   * @type {number}\n   * @default 500\n   */\n  animationDuration: 500,\n  /**\n   * Animation style to use when scrolling between locations. Can be `'swing'` or `'linear'`.\n   * @option\n   * @type {string}\n   * @default 'linear'\n   * @see {@link https://api.jquery.com/animate|Jquery animate}\n   */\n  animationEasing: 'linear',\n  /**\n   * Number of pixels to use as a marker for location changes.\n   * @option\n   * @type {number}\n   * @default 50\n   */\n  threshold: 50,\n  /**\n   * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar.\n   * @option\n   * @type {number}\n   * @default 0\n   */\n  offset: 0\n}\n\nexport {SmoothScroll}\n", "import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { SmoothScroll } from './foundation.smoothScroll';\n\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Magellan module.\n * @module foundation.magellan\n * @requires foundation.smoothScroll\n * @requires foundation.util.triggers\n */\n\nclass Magellan extends Plugin {\n  /**\n   * Creates a new instance of Magellan.\n   * @class\n   * @name Magellan\n   * @fires Magellan#init\n   * @param {Object} element - jQuery object to add the trigger to.\n   * @param {Object} options - Overrides to the default plugin settings.\n   */\n  _setup(element, options) {\n    this.$element = element;\n    this.options  = $.extend({}, Magellan.defaults, this.$element.data(), options);\n    this.className = 'Magellan'; // ie9 back compat\n\n    // Triggers init is idempotent, just need to make sure it is initialized\n    Triggers.init($);\n\n    this._init();\n    this.calcPoints();\n  }\n\n  /**\n   * Initializes the Magellan plugin and calls functions to get equalizer functioning on load.\n   * @private\n   */\n  _init() {\n    var id = this.$element[0].id || GetYoDigits(6, 'magellan');\n    this.$targets = $('[data-magellan-target]');\n    this.$links = this.$element.find('a');\n    this.$element.attr({\n      'data-resize': id,\n      'data-scroll': id,\n      'id': id\n    });\n    this.$active = $();\n    this.scrollPos = parseInt(window.pageYOffset, 10);\n\n    this._events();\n  }\n\n  /**\n   * Calculates an array of pixel values that are the demarcation lines between locations on the page.\n   * Can be invoked if new elements are added or the size of a location changes.\n   * @function\n   */\n  calcPoints() {\n    var _this = this,\n        body = document.body,\n        html = document.documentElement;\n\n    this.points = [];\n    this.winHeight = Math.round(Math.max(window.innerHeight, html.clientHeight));\n    this.docHeight = Math.round(Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight));\n\n    this.$targets.each(function(){\n      var $tar = $(this),\n          pt = Math.round($tar.offset().top - _this.options.threshold);\n      $tar.targetPoint = pt;\n      _this.points.push(pt);\n    });\n  }\n\n  /**\n   * Initializes events for Magellan.\n   * @private\n   */\n  _events() {\n    var _this = this;\n\n    $(window).one('load', function(){\n      if(_this.options.deepLinking){\n        if(location.hash){\n          _this.scrollToLoc(location.hash);\n        }\n      }\n      _this.calcPoints();\n      _this._updateActive();\n    });\n\n    _this.onLoadListener = onLoad($(window), function () {\n      _this.$element\n        .on({\n          'resizeme.zf.trigger': _this.reflow.bind(_this),\n          'scrollme.zf.trigger': _this._updateActive.bind(_this)\n        })\n        .on('click.zf.magellan', 'a[href^=\"#\"]', function (e) {\n          e.preventDefault();\n          var arrival = this.getAttribute('href');\n          _this.scrollToLoc(arrival);\n        });\n    });\n\n    this._deepLinkScroll = function() {\n      if(_this.options.deepLinking) {\n        _this.scrollToLoc(window.location.hash);\n      }\n    };\n\n    $(window).on('hashchange', this._deepLinkScroll);\n  }\n\n  /**\n   * Function to scroll to a given location on the page.\n   * @param {String} loc - a properly formatted jQuery id selector. Example: '#foo'\n   * @function\n   */\n  scrollToLoc(loc) {\n    this._inTransition = true;\n    var _this = this;\n\n    var options = {\n      animationEasing: this.options.animationEasing,\n      animationDuration: this.options.animationDuration,\n      threshold: this.options.threshold,\n      offset: this.options.offset\n    };\n\n    SmoothScroll.scrollToLoc(loc, options, function() {\n      _this._inTransition = false;\n    })\n  }\n\n  /**\n   * Calls necessary functions to update Magellan upon DOM change\n   * @function\n   */\n  reflow() {\n    this.calcPoints();\n    this._updateActive();\n  }\n\n  /**\n   * Updates the visibility of an active location link, and updates the url hash for the page, if deepLinking enabled.\n   * @private\n   * @function\n   * @fires Magellan#update\n   */\n  _updateActive(/*evt, elem, scrollPos*/) {\n    if(this._inTransition) return;\n\n    const newScrollPos = parseInt(window.pageYOffset, 10);\n    const isScrollingUp = this.scrollPos > newScrollPos;\n    this.scrollPos = newScrollPos;\n\n    let activeIdx;\n    // Before the first point: no link\n    if(newScrollPos < this.points[0] - this.options.offset - (isScrollingUp ? this.options.threshold : 0)){ /* do nothing */ }\n    // At the bottom of the page: last link\n    else if(newScrollPos + this.winHeight === this.docHeight){ activeIdx = this.points.length - 1; }\n    // Otherwhise, use the last visible link\n    else{\n      const visibleLinks = this.points.filter((p) => {\n        return (p - this.options.offset - (isScrollingUp ? this.options.threshold : 0)) <= newScrollPos;\n      });\n      activeIdx = visibleLinks.length ? visibleLinks.length - 1 : 0;\n    }\n\n    // Get the new active link\n    const $oldActive = this.$active;\n    let activeHash = '';\n    if(typeof activeIdx !== 'undefined'){\n      this.$active = this.$links.filter('[href=\"#' + this.$targets.eq(activeIdx).data('magellan-target') + '\"]');\n      if (this.$active.length) activeHash = this.$active[0].getAttribute('href');\n    }else{\n      this.$active = $();\n    }\n    const isNewActive = !(!this.$active.length && !$oldActive.length) && !this.$active.is($oldActive);\n    const isNewHash = activeHash !== window.location.hash;\n\n    // Update the active link element\n    if(isNewActive) {\n      $oldActive.removeClass(this.options.activeClass);\n      this.$active.addClass(this.options.activeClass);\n    }\n\n    // Update the hash (it may have changed with the same active link)\n    if(this.options.deepLinking && isNewHash){\n      if(window.history.pushState){\n        // Set or remove the hash (see: https://stackoverflow.com/a/5298684/4317384\n        const url = activeHash ? activeHash : window.location.pathname + window.location.search;\n        if(this.options.updateHistory){\n          window.history.pushState({}, '', url);\n        }else{\n          window.history.replaceState({}, '', url);\n        }\n      }else{\n        window.location.hash = activeHash;\n      }\n    }\n\n    if (isNewActive) {\n      /**\n       * Fires when magellan is finished updating to the new active element.\n       * @event Magellan#update\n       */\n    \tthis.$element.trigger('update.zf.magellan', [this.$active]);\n\t  }\n  }\n\n  /**\n   * Destroys an instance of Magellan and resets the url of the window.\n   * @function\n   */\n  _destroy() {\n    this.$element.off('.zf.trigger .zf.magellan')\n        .find(`.${this.options.activeClass}`).removeClass(this.options.activeClass);\n\n    if(this.options.deepLinking){\n      var hash = this.$active[0].getAttribute('href');\n      window.location.hash.replace(hash, '');\n    }\n\n    $(window).off('hashchange', this._deepLinkScroll)\n    if (this.onLoadListener) $(window).off(this.onLoadListener);\n  }\n}\n\n/**\n * Default settings for plugin\n */\nMagellan.defaults = {\n  /**\n   * Amount of time, in ms, the animated scrolling should take between locations.\n   * @option\n   * @type {number}\n   * @default 500\n   */\n  animationDuration: 500,\n  /**\n   * Animation style to use when scrolling between locations. Can be `'swing'` or `'linear'`.\n   * @option\n   * @type {string}\n   * @default 'linear'\n   * @see {@link https://api.jquery.com/animate|Jquery animate}\n   */\n  animationEasing: 'linear',\n  /**\n   * Number of pixels to use as a marker for location changes.\n   * @option\n   * @type {number}\n   * @default 50\n   */\n  threshold: 50,\n  /**\n   * Class applied to the active locations link on the magellan container.\n   * @option\n   * @type {string}\n   * @default 'is-active'\n   */\n  activeClass: 'is-active',\n  /**\n   * Allows the script to manipulate the url of the current page, and if supported, alter the history.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  deepLinking: false,\n  /**\n   * Update the browser history with the active link, if deep linking is enabled.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  updateHistory: false,\n  /**\n   * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar.\n   * @option\n   * @type {number}\n   * @default 0\n   */\n  offset: 0\n}\n\nexport {Magellan};\n", "import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, transitionend, RegExpEscape } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { MediaQuery } from './foundation.util.mediaQuery';\n\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * OffCanvas module.\n * @module foundation.offCanvas\n * @requires foundation.util.keyboard\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.triggers\n */\n\nclass OffCanvas extends Plugin {\n  /**\n   * Creates a new instance of an off-canvas wrapper.\n   * @class\n   * @name OffCanvas\n   * @fires OffCanvas#init\n   * @param {Object} element - jQuery object to initialize.\n   * @param {Object} options - Overrides to the default plugin settings.\n   */\n  _setup(element, options) {\n    this.className = 'OffCanvas'; // ie9 back compat\n    this.$element = element;\n    this.options = $.extend({}, OffCanvas.defaults, this.$element.data(), options);\n    this.contentClasses = { base: [], reveal: [] };\n    this.$lastTrigger = $();\n    this.$triggers = $();\n    this.position = 'left';\n    this.$content = $();\n    this.nested = !!(this.options.nested);\n    this.$sticky = $();\n    this.isInCanvas = false;\n\n    // Defines the CSS transition/position classes of the off-canvas content container.\n    $(['push', 'overlap']).each((index, val) => {\n      this.contentClasses.base.push('has-transition-'+val);\n    });\n    $(['left', 'right', 'top', 'bottom']).each((index, val) => {\n      this.contentClasses.base.push('has-position-'+val);\n      this.contentClasses.reveal.push('has-reveal-'+val);\n    });\n\n    // Triggers init is idempotent, just need to make sure it is initialized\n    Triggers.init($);\n    MediaQuery._init();\n\n    this._init();\n    this._events();\n\n    Keyboard.register('OffCanvas', {\n      'ESCAPE': 'close'\n    });\n\n  }\n\n  /**\n   * Initializes the off-canvas wrapper by adding the exit overlay (if needed).\n   * @function\n   * @private\n   */\n  _init() {\n    var id = this.$element.attr('id');\n\n    this.$element.attr('aria-hidden', 'true');\n\n    // Find off-canvas content, either by ID (if specified), by siblings or by closest selector (fallback)\n    if (this.options.contentId) {\n      this.$content = $('#'+this.options.contentId);\n    } else if (this.$element.siblings('[data-off-canvas-content]').length) {\n      this.$content = this.$element.siblings('[data-off-canvas-content]').first();\n    } else {\n      this.$content = this.$element.closest('[data-off-canvas-content]').first();\n    }\n\n    if (!this.options.contentId) {\n      // Assume that the off-canvas element is nested if it isn't a sibling of the content\n      this.nested = this.$element.siblings('[data-off-canvas-content]').length === 0;\n\n    } else if (this.options.contentId && this.options.nested === null) {\n      // Warning if using content ID without setting the nested option\n      // Once the element is nested it is required to work properly in this case\n      console.warn('Remember to use the nested option if using the content ID option!');\n    }\n\n    if (this.nested === true) {\n      // Force transition overlap if nested\n      this.options.transition = 'overlap';\n      // Remove appropriate classes if already assigned in markup\n      this.$element.removeClass('is-transition-push');\n    }\n\n    this.$element.addClass(`is-transition-${this.options.transition} is-closed`);\n\n    // Find triggers that affect this element and add aria-expanded to them\n    this.$triggers = $(document)\n      .find('[data-open=\"'+id+'\"], [data-close=\"'+id+'\"], [data-toggle=\"'+id+'\"]')\n      .attr('aria-expanded', 'false')\n      .attr('aria-controls', id);\n\n    // Get position by checking for related CSS class\n    this.position = this.$element.is('.position-left, .position-top, .position-right, .position-bottom') ? this.$element.attr('class').match(/position\\-(left|top|right|bottom)/)[1] : this.position;\n\n    // Add an overlay over the content if necessary\n    if (this.options.contentOverlay === true) {\n      var overlay = document.createElement('div');\n      var overlayPosition = $(this.$element).css(\"position\") === 'fixed' ? 'is-overlay-fixed' : 'is-overlay-absolute';\n      overlay.setAttribute('class', 'js-off-canvas-overlay ' + overlayPosition);\n      this.$overlay = $(overlay);\n      if(overlayPosition === 'is-overlay-fixed') {\n        $(this.$overlay).insertAfter(this.$element);\n      } else {\n        this.$content.append(this.$overlay);\n      }\n    }\n\n    // Get the revealOn option from the class.\n    var revealOnRegExp = new RegExp(RegExpEscape(this.options.revealClass) + '([^\\\\s]+)', 'g');\n    var revealOnClass = revealOnRegExp.exec(this.$element[0].className);\n    if (revealOnClass) {\n      this.options.isRevealed = true;\n      this.options.revealOn = this.options.revealOn || revealOnClass[1];\n    }\n\n    // Ensure the `reveal-on-*` class is set.\n    if (this.options.isRevealed === true && this.options.revealOn) {\n      this.$element.first().addClass(`${this.options.revealClass}${this.options.revealOn}`);\n      this._setMQChecker();\n    }\n\n    if (this.options.transitionTime) {\n      this.$element.css('transition-duration', this.options.transitionTime);\n    }\n\n    // Find fixed elements that should stay fixed while off-canvas is opened\n    this.$sticky = this.$content.find('[data-off-canvas-sticky]');\n    if (this.$sticky.length > 0 && this.options.transition === 'push') {\n      // If there's at least one match force contentScroll:false because the absolute top value doesn't get recalculated on scroll\n      // Limit to push transition since there's no transform scope for overlap\n      this.options.contentScroll = false;\n    }\n\n    let inCanvasFor = this.$element.attr('class').match(/\\bin-canvas-for-(\\w+)/);\n    if (inCanvasFor && inCanvasFor.length === 2) {\n      // Set `inCanvasOn` option if found in-canvas-for-[BREAKPONT] CSS class\n      this.options.inCanvasOn = inCanvasFor[1];\n    } else if (this.options.inCanvasOn) {\n      // Ensure the CSS class is set\n      this.$element.addClass(`in-canvas-for-${this.options.inCanvasOn}`);\n    }\n\n    if (this.options.inCanvasOn) {\n      this._checkInCanvas();\n    }\n\n    // Initally remove all transition/position CSS classes from off-canvas content container.\n    this._removeContentClasses();\n  }\n\n  /**\n   * Adds event handlers to the off-canvas wrapper and the exit overlay.\n   * @function\n   * @private\n   */\n  _events() {\n    this.$element.off('.zf.trigger .zf.offCanvas').on({\n      'open.zf.trigger': this.open.bind(this),\n      'close.zf.trigger': this.close.bind(this),\n      'toggle.zf.trigger': this.toggle.bind(this),\n      'keydown.zf.offCanvas': this._handleKeyboard.bind(this)\n    });\n\n    if (this.options.closeOnClick === true) {\n      var $target = this.options.contentOverlay ? this.$overlay : this.$content;\n      $target.on({'click.zf.offCanvas': this.close.bind(this)});\n    }\n\n    if (this.options.inCanvasOn) {\n      $(window).on('changed.zf.mediaquery', () => {\n        this._checkInCanvas();\n      });\n    }\n\n  }\n\n  /**\n   * Applies event listener for elements that will reveal at certain breakpoints.\n   * @private\n   */\n  _setMQChecker() {\n    var _this = this;\n\n    this.onLoadListener = onLoad($(window), function () {\n      if (MediaQuery.atLeast(_this.options.revealOn)) {\n        _this.reveal(true);\n      }\n    });\n\n    $(window).on('changed.zf.mediaquery', function () {\n      if (MediaQuery.atLeast(_this.options.revealOn)) {\n        _this.reveal(true);\n      } else {\n        _this.reveal(false);\n      }\n    });\n  }\n\n  /**\n   * Checks if InCanvas on current breakpoint and adjust off-canvas accordingly\n   * @private\n   */\n  _checkInCanvas() {\n    this.isInCanvas = MediaQuery.atLeast(this.options.inCanvasOn);\n    if (this.isInCanvas === true) {\n      this.close();\n    }\n  }\n\n  /**\n   * Removes the CSS transition/position classes of the off-canvas content container.\n   * Removing the classes is important when another off-canvas gets opened that uses the same content container.\n   * @param {Boolean} hasReveal - true if related off-canvas element is revealed.\n   * @private\n   */\n  _removeContentClasses(hasReveal) {\n    if (typeof hasReveal !== 'boolean') {\n      this.$content.removeClass(this.contentClasses.base.join(' '));\n    } else if (hasReveal === false) {\n      this.$content.removeClass(`has-reveal-${this.position}`);\n    }\n  }\n\n  /**\n   * Adds the CSS transition/position classes of the off-canvas content container, based on the opening off-canvas element.\n   * Beforehand any transition/position class gets removed.\n   * @param {Boolean} hasReveal - true if related off-canvas element is revealed.\n   * @private\n   */\n  _addContentClasses(hasReveal) {\n    this._removeContentClasses(hasReveal);\n    if (typeof hasReveal !== 'boolean') {\n      this.$content.addClass(`has-transition-${this.options.transition} has-position-${this.position}`);\n    } else if (hasReveal === true) {\n      this.$content.addClass(`has-reveal-${this.position}`);\n    }\n  }\n\n  /**\n   * Preserves the fixed behavior of sticky elements on opening an off-canvas with push transition.\n   * Since the off-canvas container has got a transform scope in such a case, it is done by calculating position absolute values.\n   * @private\n   */\n  _fixStickyElements() {\n    this.$sticky.each((_, el) => {\n      const $el = $(el);\n\n      // If sticky element is currently fixed, adjust its top value to match absolute position due to transform scope\n      // Limit to push transition because postion:fixed works without problems for overlap (no transform scope)\n      if ($el.css('position') === 'fixed') {\n\n        // Save current inline styling to restore it if undoing the absolute fixing\n        let topVal = parseInt($el.css('top'), 10);\n        $el.data('offCanvasSticky', { top: topVal });\n\n        let absoluteTopVal = $(document).scrollTop() + topVal;\n        $el.css({ top: `${absoluteTopVal}px`, width: '100%', transition: 'none' });\n      }\n    });\n  }\n\n  /**\n   * Restores the original fixed styling of sticky elements after having closed an off-canvas that got pseudo fixed beforehand.\n   * This reverts the changes of _fixStickyElements()\n   * @private\n   */\n  _unfixStickyElements() {\n    this.$sticky.each((_, el) => {\n      const $el = $(el);\n      let stickyData = $el.data('offCanvasSticky');\n\n      // If sticky element has got data object with prior values (meaning it was originally fixed) restore these values once off-canvas is closed\n      if (typeof stickyData === 'object') {\n        $el.css({ top: `${stickyData.top}px`, width: '', transition: '' })\n        $el.data('offCanvasSticky', '');\n      }\n    });\n  }\n\n  /**\n   * Handles the revealing/hiding the off-canvas at breakpoints, not the same as open.\n   * @param {Boolean} isRevealed - true if element should be revealed.\n   * @function\n   */\n  reveal(isRevealed) {\n    if (isRevealed) {\n      this.close();\n      this.isRevealed = true;\n      this.$element.attr('aria-hidden', 'false');\n      this.$element.off('open.zf.trigger toggle.zf.trigger');\n      this.$element.removeClass('is-closed');\n    } else {\n      this.isRevealed = false;\n      this.$element.attr('aria-hidden', 'true');\n      this.$element.off('open.zf.trigger toggle.zf.trigger').on({\n        'open.zf.trigger': this.open.bind(this),\n        'toggle.zf.trigger': this.toggle.bind(this)\n      });\n      this.$element.addClass('is-closed');\n    }\n    this._addContentClasses(isRevealed);\n  }\n\n  /**\n   * Stops scrolling of the body when OffCanvas is open on mobile Safari and other troublesome browsers.\n   * @function\n   * @private\n   */\n  _stopScrolling() {\n    return false;\n  }\n\n  /**\n   * Save current finger y-position\n   * @param event\n   * @private\n   */\n  _recordScrollable(event) {\n    const elem = this;\n    elem.lastY = event.touches[0].pageY;\n  }\n\n  /**\n   * Prevent further scrolling when it hits the edges\n   * @param event\n   * @private\n   */\n  _preventDefaultAtEdges(event) {\n    const elem = this;\n    const _this = event.data;\n    const delta = elem.lastY - event.touches[0].pageY;\n    elem.lastY = event.touches[0].pageY;\n\n    if (!_this._canScroll(delta, elem)) {\n      event.preventDefault();\n    }\n  }\n\n  /**\n   * Handle continuous scrolling of scrollbox\n   * Don't bubble up to _preventDefaultAtEdges\n   * @param event\n   * @private\n   */\n  _scrollboxTouchMoved(event) {\n    const elem = this;\n    const _this = event.data;\n    const parent = elem.closest('[data-off-canvas], [data-off-canvas-scrollbox-outer]');\n    const delta = elem.lastY - event.touches[0].pageY;\n    parent.lastY = elem.lastY = event.touches[0].pageY;\n\n    event.stopPropagation();\n\n    if (!_this._canScroll(delta, elem)) {\n      if (!_this._canScroll(delta, parent)) {\n        event.preventDefault();\n      } else {\n        parent.scrollTop += delta;\n      }\n    }\n  }\n\n  /**\n   * Detect possibility of scrolling\n   * @param delta\n   * @param elem\n   * @returns boolean\n   * @private\n   */\n  _canScroll(delta, elem) {\n    const up = delta < 0;\n    const down = delta > 0;\n    const allowUp = elem.scrollTop > 0;\n    const allowDown = elem.scrollTop < elem.scrollHeight - elem.clientHeight;\n    return up && allowUp || down && allowDown;\n  }\n\n  /**\n   * Opens the off-canvas menu.\n   * @function\n   * @param {Object} event - Event object passed from listener.\n   * @param {jQuery} trigger - element that triggered the off-canvas to open.\n   * @fires OffCanvas#opened\n   * @todo also trigger 'open' event?\n   */\n  open(event, trigger) {\n    if (this.$element.hasClass('is-open') || this.isRevealed || this.isInCanvas) { return; }\n    var _this = this;\n\n    if (trigger) {\n      this.$lastTrigger = trigger;\n    }\n\n    if (this.options.forceTo === 'top') {\n      window.scrollTo(0, 0);\n    } else if (this.options.forceTo === 'bottom') {\n      window.scrollTo(0,document.body.scrollHeight);\n    }\n\n    if (this.options.transitionTime && this.options.transition !== 'overlap') {\n      this.$element.siblings('[data-off-canvas-content]').css('transition-duration', this.options.transitionTime);\n    } else {\n      this.$element.siblings('[data-off-canvas-content]').css('transition-duration', '');\n    }\n\n    this.$element.addClass('is-open').removeClass('is-closed');\n\n    this.$triggers.attr('aria-expanded', 'true');\n    this.$element.attr('aria-hidden', 'false');\n\n    this.$content.addClass('is-open-' + this.position);\n\n    // If `contentScroll` is set to false, add class and disable scrolling on touch devices.\n    if (this.options.contentScroll === false) {\n      $('body').addClass('is-off-canvas-open').on('touchmove', this._stopScrolling);\n      this.$element.on('touchstart', this._recordScrollable);\n      this.$element.on('touchmove', this, this._preventDefaultAtEdges);\n      this.$element.on('touchstart', '[data-off-canvas-scrollbox]', this._recordScrollable);\n      this.$element.on('touchmove', '[data-off-canvas-scrollbox]', this, this._scrollboxTouchMoved);\n    }\n\n    if (this.options.contentOverlay === true) {\n      this.$overlay.addClass('is-visible');\n    }\n\n    if (this.options.closeOnClick === true && this.options.contentOverlay === true) {\n      this.$overlay.addClass('is-closable');\n    }\n\n    if (this.options.autoFocus === true) {\n      this.$element.one(transitionend(this.$element), function() {\n        if (!_this.$element.hasClass('is-open')) {\n          return; // exit if prematurely closed\n        }\n        var canvasFocus = _this.$element.find('[data-autofocus]');\n        if (canvasFocus.length) {\n            canvasFocus.eq(0).focus();\n        } else {\n            _this.$element.find('a, button').eq(0).focus();\n        }\n      });\n    }\n\n    if (this.options.trapFocus === true) {\n      this.$content.attr('tabindex', '-1');\n      Keyboard.trapFocus(this.$element);\n    }\n\n    if (this.options.transition === 'push') {\n      this._fixStickyElements();\n    }\n\n    this._addContentClasses();\n\n    /**\n     * Fires when the off-canvas menu opens.\n     * @event OffCanvas#opened\n     */\n    this.$element.trigger('opened.zf.offCanvas');\n\n    /**\n     * Fires when the off-canvas menu open transition is done.\n     * @event OffCanvas#openedEnd\n     */\n    this.$element.one(transitionend(this.$element), () => {\n      this.$element.trigger('openedEnd.zf.offCanvas');\n    });\n  }\n\n  /**\n   * Closes the off-canvas menu.\n   * @function\n   * @param {Function} cb - optional cb to fire after closure.\n   * @fires OffCanvas#close\n   * @fires OffCanvas#closed\n   */\n  close() {\n    if (!this.$element.hasClass('is-open') || this.isRevealed) { return; }\n\n    /**\n     * Fires when the off-canvas menu closes.\n     * @event OffCanvas#close\n     */\n    this.$element.trigger('close.zf.offCanvas');\n\n    this.$element.removeClass('is-open');\n\n    this.$element.attr('aria-hidden', 'true');\n\n    this.$content.removeClass('is-open-left is-open-top is-open-right is-open-bottom');\n\n    if (this.options.contentOverlay === true) {\n      this.$overlay.removeClass('is-visible');\n    }\n\n    if (this.options.closeOnClick === true && this.options.contentOverlay === true) {\n      this.$overlay.removeClass('is-closable');\n    }\n\n    this.$triggers.attr('aria-expanded', 'false');\n\n\n    // Listen to transitionEnd: add class, re-enable scrolling and release focus when done.\n    this.$element.one(transitionend(this.$element), () => {\n\n      this.$element.addClass('is-closed');\n      this._removeContentClasses();\n\n      if (this.options.transition === 'push') {\n        this._unfixStickyElements();\n      }\n\n      // If `contentScroll` is set to false, remove class and re-enable scrolling on touch devices.\n      if (this.options.contentScroll === false) {\n        $('body').removeClass('is-off-canvas-open').off('touchmove', this._stopScrolling);\n        this.$element.off('touchstart', this._recordScrollable);\n        this.$element.off('touchmove', this._preventDefaultAtEdges);\n        this.$element.off('touchstart', '[data-off-canvas-scrollbox]', this._recordScrollable);\n        this.$element.off('touchmove', '[data-off-canvas-scrollbox]', this._scrollboxTouchMoved);\n      }\n\n      if (this.options.trapFocus === true) {\n        this.$content.removeAttr('tabindex');\n        Keyboard.releaseFocus(this.$element);\n      }\n\n      /**\n       * Fires when the off-canvas menu close transition is done.\n       * @event OffCanvas#closed\n       */\n      this.$element.trigger('closed.zf.offCanvas');\n    });\n  }\n\n  /**\n   * Toggles the off-canvas menu open or closed.\n   * @function\n   * @param {Object} event - Event object passed from listener.\n   * @param {jQuery} trigger - element that triggered the off-canvas to open.\n   */\n  toggle(event, trigger) {\n    if (this.$element.hasClass('is-open')) {\n      this.close(event, trigger);\n    }\n    else {\n      this.open(event, trigger);\n    }\n  }\n\n  /**\n   * Handles keyboard input when detected. When the escape key is pressed, the off-canvas menu closes, and focus is restored to the element that opened the menu.\n   * @function\n   * @private\n   */\n  _handleKeyboard(e) {\n    Keyboard.handleKey(e, 'OffCanvas', {\n      close: () => {\n        this.close();\n        this.$lastTrigger.focus();\n        return true;\n      },\n      handled: () => {\n        e.preventDefault();\n      }\n    });\n  }\n\n  /**\n   * Destroys the OffCanvas plugin.\n   * @function\n   */\n  _destroy() {\n    this.close();\n    this.$element.off('.zf.trigger .zf.offCanvas');\n    this.$overlay.off('.zf.offCanvas');\n    if (this.onLoadListener) $(window).off(this.onLoadListener);\n  }\n}\n\nOffCanvas.defaults = {\n  /**\n   * Allow the user to click outside of the menu to close it.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  closeOnClick: true,\n\n  /**\n   * Adds an overlay on top of `[data-off-canvas-content]`.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  contentOverlay: true,\n\n  /**\n   * Target an off-canvas content container by ID that may be placed anywhere. If null the closest content container will be taken.\n   * @option\n   * @type {?string}\n   * @default null\n   */\n  contentId: null,\n\n  /**\n   * Define the off-canvas element is nested in an off-canvas content. This is required when using the contentId option for a nested element.\n   * @option\n   * @type {boolean}\n   * @default null\n   */\n  nested: null,\n\n  /**\n   * Enable/disable scrolling of the main content when an off canvas panel is open.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  contentScroll: true,\n\n  /**\n   * Amount of time the open and close transition requires, including the appropriate milliseconds (`ms`) or seconds (`s`) unit (e.g. `500ms`, `.75s`) If none selected, pulls from body style.\n   * @option\n   * @type {string}\n   * @default null\n   */\n  transitionTime: null,\n\n  /**\n   * Type of transition for the OffCanvas menu. Options are 'push', 'detached' or 'slide'.\n   * @option\n   * @type {string}\n   * @default push\n   */\n  transition: 'push',\n\n  /**\n   * Force the page to scroll to top or bottom on open.\n   * @option\n   * @type {?string}\n   * @default null\n   */\n  forceTo: null,\n\n  /**\n   * Allow the OffCanvas to remain open for certain breakpoints.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  isRevealed: false,\n\n  /**\n   * Breakpoint at which to reveal. JS will use a RegExp to target standard classes, if changing classnames, pass your class with the `revealClass` option.\n   * @option\n   * @type {?string}\n   * @default null\n   */\n  revealOn: null,\n\n  /**\n   * Breakpoint at which the off-canvas gets moved into canvas content and acts as regular page element.\n   * @option\n   * @type {?string}\n   * @default null\n   */\n  inCanvasOn: null,\n\n  /**\n   * Force focus to the offcanvas on open. If true, will focus the opening trigger on close.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  autoFocus: true,\n\n  /**\n   * Class used to force an OffCanvas to remain open. Foundation defaults for this are `reveal-for-large` & `reveal-for-medium`.\n   * @option\n   * @type {string}\n   * @default reveal-for-\n   * @todo improve the regex testing for this.\n   */\n  revealClass: 'reveal-for-',\n\n  /**\n   * Triggers optional focus trapping when opening an OffCanvas. Sets tabindex of [data-off-canvas-content] to -1 for accessibility purposes.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  trapFocus: false\n}\n\nexport {OffCanvas};\n", "import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Motion } from './foundation.util.motion';\nimport { Timer } from './foundation.util.timer';\nimport { onImagesLoaded } from './foundation.util.imageLoader';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\nimport { Touch } from './foundation.util.touch'\n\n\n/**\n * Orbit module.\n * @module foundation.orbit\n * @requires foundation.util.keyboard\n * @requires foundation.util.motion\n * @requires foundation.util.timer\n * @requires foundation.util.imageLoader\n * @requires foundation.util.touch\n */\n\nclass Orbit extends Plugin {\n  /**\n  * Creates a new instance of an orbit carousel.\n  * @class\n  * @name Orbit\n  * @param {jQuery} element - jQuery object to make into an Orbit Carousel.\n  * @param {Object} options - Overrides to the default plugin settings.\n  */\n  _setup(element, options){\n    this.$element = element;\n    this.options = $.extend({}, Orbit.defaults, this.$element.data(), options);\n    this.className = 'Orbit'; // ie9 back compat\n\n    Touch.init($); // Touch init is idempotent, we just need to make sure it's initialied.\n\n    this._init();\n\n    Keyboard.register('Orbit', {\n      'ltr': {\n        'ARROW_RIGHT': 'next',\n        'ARROW_LEFT': 'previous'\n      },\n      'rtl': {\n        'ARROW_LEFT': 'next',\n        'ARROW_RIGHT': 'previous'\n      }\n    });\n  }\n\n  /**\n  * Initializes the plugin by creating jQuery collections, setting attributes, and starting the animation.\n  * @function\n  * @private\n  */\n  _init() {\n    // @TODO: consider discussion on PR #9278 about DOM pollution by changeSlide\n    this._reset();\n\n    this.$wrapper = this.$element.find(`.${this.options.containerClass}`);\n    this.$slides = this.$element.find(`.${this.options.slideClass}`);\n\n    var $images = this.$element.find('img'),\n        initActive = this.$slides.filter('.is-active'),\n        id = this.$element[0].id || GetYoDigits(6, 'orbit');\n\n    this.$element.attr({\n      'data-resize': id,\n      'id': id\n    });\n\n    if (!initActive.length) {\n      this.$slides.eq(0).addClass('is-active');\n    }\n\n    if (!this.options.useMUI) {\n      this.$slides.addClass('no-motionui');\n    }\n\n    if ($images.length) {\n      onImagesLoaded($images, this._prepareForOrbit.bind(this));\n    } else {\n      this._prepareForOrbit();//hehe\n    }\n\n    if (this.options.bullets) {\n      this._loadBullets();\n    }\n\n    this._events();\n\n    if (this.options.autoPlay && this.$slides.length > 1) {\n      this.geoSync();\n    }\n\n    if (this.options.accessible) { // allow wrapper to be focusable to enable arrow navigation\n      this.$wrapper.attr('tabindex', 0);\n    }\n  }\n\n  /**\n  * Creates a jQuery collection of bullets, if they are being used.\n  * @function\n  * @private\n  */\n  _loadBullets() {\n    this.$bullets = this.$element.find(`.${this.options.boxOfBullets}`).find('button');\n  }\n\n  /**\n  * Sets a `timer` object on the orbit, and starts the counter for the next slide.\n  * @function\n  */\n  geoSync() {\n    var _this = this;\n    this.timer = new Timer(\n      this.$element,\n      {\n        duration: this.options.timerDelay,\n        infinite: false\n      },\n      function() {\n        _this.changeSlide(true);\n      });\n    this.timer.start();\n  }\n\n  /**\n  * Sets wrapper and slide heights for the orbit.\n  * @function\n  * @private\n  */\n  _prepareForOrbit() {\n    this._setWrapperHeight();\n  }\n\n  /**\n  * Calulates the height of each slide in the collection, and uses the tallest one for the wrapper height.\n  * @function\n  * @private\n  * @param {Function} cb - a callback function to fire when complete.\n  */\n  _setWrapperHeight(cb) {//rewrite this to `for` loop\n    var max = 0, temp, counter = 0, _this = this;\n\n    this.$slides.each(function() {\n      temp = this.getBoundingClientRect().height;\n      $(this).attr('data-slide', counter);\n\n      // hide all slides but the active one\n      if (!/mui/g.test($(this)[0].className) && _this.$slides.filter('.is-active')[0] !== _this.$slides.eq(counter)[0]) {\n        $(this).css({'display': 'none'});\n      }\n      max = temp > max ? temp : max;\n      counter++;\n    });\n\n    if (counter === this.$slides.length) {\n      this.$wrapper.css({'height': max}); //only change the wrapper height property once.\n      if(cb) {cb(max);} //fire callback with max height dimension.\n    }\n  }\n\n  /**\n  * Sets the max-height of each slide.\n  * @function\n  * @private\n  */\n  _setSlideHeight(height) {\n    this.$slides.each(function() {\n      $(this).css('max-height', height);\n    });\n  }\n\n  /**\n  * Adds event listeners to basically everything within the element.\n  * @function\n  * @private\n  */\n  _events() {\n    var _this = this;\n\n    //***************************************\n    //**Now using custom event - thanks to:**\n    //**      Yohai Ararat of Toronto      **\n    //***************************************\n    //\n    this.$element.off('.resizeme.zf.trigger').on({\n      'resizeme.zf.trigger': this._prepareForOrbit.bind(this)\n    })\n    if (this.$slides.length > 1) {\n\n      if (this.options.swipe) {\n        this.$slides.off('swipeleft.zf.orbit swiperight.zf.orbit')\n        .on('swipeleft.zf.orbit', function(e){\n          e.preventDefault();\n          _this.changeSlide(true);\n        }).on('swiperight.zf.orbit', function(e){\n          e.preventDefault();\n          _this.changeSlide(false);\n        });\n      }\n      //***************************************\n\n      if (this.options.autoPlay) {\n        this.$slides.on('click.zf.orbit', function() {\n          _this.$element.data('clickedOn', _this.$element.data('clickedOn') ? false : true);\n          _this.timer[_this.$element.data('clickedOn') ? 'pause' : 'start']();\n        });\n\n        if (this.options.pauseOnHover) {\n          this.$element.on('mouseenter.zf.orbit', function() {\n            _this.timer.pause();\n          }).on('mouseleave.zf.orbit', function() {\n            if (!_this.$element.data('clickedOn')) {\n              _this.timer.start();\n            }\n          });\n        }\n      }\n\n      if (this.options.navButtons) {\n        var $controls = this.$element.find(`.${this.options.nextClass}, .${this.options.prevClass}`);\n        $controls.attr('tabindex', 0)\n        //also need to handle enter/return and spacebar key presses\n        .on('click.zf.orbit touchend.zf.orbit', function(e){\n\t  e.preventDefault();\n          _this.changeSlide($(this).hasClass(_this.options.nextClass));\n        });\n      }\n\n      if (this.options.bullets) {\n        this.$bullets.on('click.zf.orbit touchend.zf.orbit', function() {\n          if (/is-active/g.test(this.className)) { return false; }//if this is active, kick out of function.\n          var idx = $(this).data('slide'),\n          ltr = idx > _this.$slides.filter('.is-active').data('slide'),\n          $slide = _this.$slides.eq(idx);\n\n          _this.changeSlide(ltr, $slide, idx);\n        });\n      }\n\n      if (this.options.accessible) {\n        this.$wrapper.add(this.$bullets).on('keydown.zf.orbit', function(e) {\n          // handle keyboard event with keyboard util\n          Keyboard.handleKey(e, 'Orbit', {\n            next: function() {\n              _this.changeSlide(true);\n            },\n            previous: function() {\n              _this.changeSlide(false);\n            },\n            handled: function() { // if bullet is focused, make sure focus moves\n              if ($(e.target).is(_this.$bullets)) {\n                _this.$bullets.filter('.is-active').focus();\n              }\n            }\n          });\n        });\n      }\n    }\n  }\n\n  /**\n   * Resets Orbit so it can be reinitialized\n   */\n  _reset() {\n    // Don't do anything if there are no slides (first run)\n    if (typeof this.$slides === 'undefined') {\n      return;\n    }\n\n    if (this.$slides.length > 1) {\n      // Remove old events\n      this.$element.off('.zf.orbit').find('*').off('.zf.orbit')\n\n      // Restart timer if autoPlay is enabled\n      if (this.options.autoPlay) {\n        this.timer.restart();\n      }\n\n      // Reset all sliddes\n      this.$slides.each(function(el) {\n        $(el).removeClass('is-active is-active is-in')\n          .removeAttr('aria-live')\n          .hide();\n      });\n\n      // Show the first slide\n      this.$slides.first().addClass('is-active').show();\n\n      // Triggers when the slide has finished animating\n      this.$element.trigger('slidechange.zf.orbit', [this.$slides.first()]);\n\n      // Select first bullet if bullets are present\n      if (this.options.bullets) {\n        this._updateBullets(0);\n      }\n    }\n  }\n\n  /**\n  * Changes the current slide to a new one.\n  * @function\n  * @param {Boolean} isLTR - if true the slide moves from right to left, if false the slide moves from left to right.\n  * @param {jQuery} chosenSlide - the jQuery element of the slide to show next, if one is selected.\n  * @param {Number} idx - the index of the new slide in its collection, if one chosen.\n  * @fires Orbit#slidechange\n  */\n  changeSlide(isLTR, chosenSlide, idx) {\n    if (!this.$slides) {return; } // Don't freak out if we're in the middle of cleanup\n    var $curSlide = this.$slides.filter('.is-active').eq(0);\n\n    if (/mui/g.test($curSlide[0].className)) { return false; } //if the slide is currently animating, kick out of the function\n\n    var $firstSlide = this.$slides.first(),\n    $lastSlide = this.$slides.last(),\n    dirIn = isLTR ? 'Right' : 'Left',\n    dirOut = isLTR ? 'Left' : 'Right',\n    _this = this,\n    $newSlide;\n\n    if (!chosenSlide) { //most of the time, this will be auto played or clicked from the navButtons.\n      $newSlide = isLTR ? //if wrapping enabled, check to see if there is a `next` or `prev` sibling, if not, select the first or last slide to fill in. if wrapping not enabled, attempt to select `next` or `prev`, if there's nothing there, the function will kick out on next step. CRAZY NESTED TERNARIES!!!!!\n      (this.options.infiniteWrap ? $curSlide.next(`.${this.options.slideClass}`).length ? $curSlide.next(`.${this.options.slideClass}`) : $firstSlide : $curSlide.next(`.${this.options.slideClass}`))//pick next slide if moving left to right\n      :\n      (this.options.infiniteWrap ? $curSlide.prev(`.${this.options.slideClass}`).length ? $curSlide.prev(`.${this.options.slideClass}`) : $lastSlide : $curSlide.prev(`.${this.options.slideClass}`));//pick prev slide if moving right to left\n    } else {\n      $newSlide = chosenSlide;\n    }\n\n    if ($newSlide.length) {\n      /**\n      * Triggers before the next slide starts animating in and only if a next slide has been found.\n      * @event Orbit#beforeslidechange\n      */\n      this.$element.trigger('beforeslidechange.zf.orbit', [$curSlide, $newSlide]);\n\n      if (this.options.bullets) {\n        idx = idx || this.$slides.index($newSlide); //grab index to update bullets\n        this._updateBullets(idx);\n      }\n\n      if (this.options.useMUI && !this.$element.is(':hidden')) {\n        Motion.animateIn(\n          $newSlide.addClass('is-active'),\n          this.options[`animInFrom${dirIn}`],\n          function(){\n            $newSlide.css({'display': 'block'}).attr('aria-live', 'polite');\n        });\n\n        Motion.animateOut(\n          $curSlide.removeClass('is-active'),\n          this.options[`animOutTo${dirOut}`],\n          function(){\n            $curSlide.removeAttr('aria-live');\n            if(_this.options.autoPlay && !_this.timer.isPaused){\n              _this.timer.restart();\n            }\n            //do stuff?\n          });\n      } else {\n        $curSlide.removeClass('is-active is-in').removeAttr('aria-live').hide();\n        $newSlide.addClass('is-active is-in').attr('aria-live', 'polite').show();\n        if (this.options.autoPlay && !this.timer.isPaused) {\n          this.timer.restart();\n        }\n      }\n    /**\n    * Triggers when the slide has finished animating in.\n    * @event Orbit#slidechange\n    */\n      this.$element.trigger('slidechange.zf.orbit', [$newSlide]);\n    }\n  }\n\n  /**\n  * Updates the active state of the bullets, if displayed.\n  * Move the descriptor of the current slide `[data-slide-active-label]` to the newly active bullet.\n  * If no `[data-slide-active-label]` is set, will move the exceeding `span` element.\n  *\n  * @function\n  * @private\n  * @param {Number} idx - the index of the current slide.\n  */\n  _updateBullets(idx) {\n    var $oldBullet = this.$bullets.filter('.is-active');\n    var $othersBullets = this.$bullets.not('.is-active');\n    var $newBullet = this.$bullets.eq(idx);\n\n    $oldBullet.removeClass('is-active').blur();\n    $newBullet.addClass('is-active');\n\n    // Find the descriptor for the current slide to move it to the new slide button\n    var activeStateDescriptor = $oldBullet.children('[data-slide-active-label]').last();\n\n    // If not explicitely given, search for the last \"exceeding\" span element (compared to others bullets).\n    if (!activeStateDescriptor.length) {\n      var spans = $oldBullet.children('span');\n      var spanCountInOthersBullets = $othersBullets.toArray().map(b => $(b).children('span').length);\n\n      // If there is an exceeding span element, use it as current slide descriptor\n      if (spanCountInOthersBullets.every(count => count < spans.length)) {\n        activeStateDescriptor = spans.last();\n        activeStateDescriptor.attr('data-slide-active-label', '');\n      }\n    }\n\n    // Move the current slide descriptor to the new slide button\n    if (activeStateDescriptor.length) {\n      activeStateDescriptor.detach();\n      $newBullet.append(activeStateDescriptor);\n    }\n  }\n\n  /**\n  * Destroys the carousel and hides the element.\n  * @function\n  */\n  _destroy() {\n    this.$element.off('.zf.orbit').find('*').off('.zf.orbit').end().hide();\n  }\n}\n\nOrbit.defaults = {\n  /**\n  * Tells the JS to look for and loadBullets.\n  * @option\n   * @type {boolean}\n  * @default true\n  */\n  bullets: true,\n  /**\n  * Tells the JS to apply event listeners to nav buttons\n  * @option\n   * @type {boolean}\n  * @default true\n  */\n  navButtons: true,\n  /**\n  * motion-ui animation class to apply\n  * @option\n   * @type {string}\n  * @default 'slide-in-right'\n  */\n  animInFromRight: 'slide-in-right',\n  /**\n  * motion-ui animation class to apply\n  * @option\n   * @type {string}\n  * @default 'slide-out-right'\n  */\n  animOutToRight: 'slide-out-right',\n  /**\n  * motion-ui animation class to apply\n  * @option\n   * @type {string}\n  * @default 'slide-in-left'\n  *\n  */\n  animInFromLeft: 'slide-in-left',\n  /**\n  * motion-ui animation class to apply\n  * @option\n   * @type {string}\n  * @default 'slide-out-left'\n  */\n  animOutToLeft: 'slide-out-left',\n  /**\n  * Allows Orbit to automatically animate on page load.\n  * @option\n   * @type {boolean}\n  * @default true\n  */\n  autoPlay: true,\n  /**\n  * Amount of time, in ms, between slide transitions\n  * @option\n   * @type {number}\n  * @default 5000\n  */\n  timerDelay: 5000,\n  /**\n  * Allows Orbit to infinitely loop through the slides\n  * @option\n   * @type {boolean}\n  * @default true\n  */\n  infiniteWrap: true,\n  /**\n  * Allows the Orbit slides to bind to swipe events for mobile, requires an additional util library\n  * @option\n   * @type {boolean}\n  * @default true\n  */\n  swipe: true,\n  /**\n  * Allows the timing function to pause animation on hover.\n  * @option\n   * @type {boolean}\n  * @default true\n  */\n  pauseOnHover: true,\n  /**\n  * Allows Orbit to bind keyboard events to the slider, to animate frames with arrow keys\n  * @option\n   * @type {boolean}\n  * @default true\n  */\n  accessible: true,\n  /**\n  * Class applied to the container of Orbit\n  * @option\n   * @type {string}\n  * @default 'orbit-container'\n  */\n  containerClass: 'orbit-container',\n  /**\n  * Class applied to individual slides.\n  * @option\n   * @type {string}\n  * @default 'orbit-slide'\n  */\n  slideClass: 'orbit-slide',\n  /**\n  * Class applied to the bullet container. You're welcome.\n  * @option\n   * @type {string}\n  * @default 'orbit-bullets'\n  */\n  boxOfBullets: 'orbit-bullets',\n  /**\n  * Class applied to the `next` navigation button.\n  * @option\n   * @type {string}\n  * @default 'orbit-next'\n  */\n  nextClass: 'orbit-next',\n  /**\n  * Class applied to the `previous` navigation button.\n  * @option\n   * @type {string}\n  * @default 'orbit-previous'\n  */\n  prevClass: 'orbit-previous',\n  /**\n  * Boolean to flag the js to use motion ui classes or not. Default to true for backwards compatibility.\n  * @option\n   * @type {boolean}\n  * @default true\n  */\n  useMUI: true\n};\n\nexport {Orbit};\n", "import $ from 'jquery';\n\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\nimport { DropdownMenu } from './foundation.dropdownMenu';\nimport { Drilldown } from './foundation.drilldown';\nimport { AccordionMenu } from './foundation.accordionMenu';\n\nlet MenuPlugins = {\n  dropdown: {\n    cssClass: 'dropdown',\n    plugin: DropdownMenu\n  },\n drilldown: {\n    cssClass: 'drilldown',\n    plugin: Drilldown\n  },\n  accordion: {\n    cssClass: 'accordion-menu',\n    plugin: AccordionMenu\n  }\n};\n\n  // import \"foundation.util.triggers.js\";\n\n\n/**\n * ResponsiveMenu module.\n * @module foundation.responsiveMenu\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n */\n\nclass ResponsiveMenu extends Plugin {\n  /**\n   * Creates a new instance of a responsive menu.\n   * @class\n   * @name ResponsiveMenu\n   * @fires ResponsiveMenu#init\n   * @param {jQuery} element - jQuery object to make into a dropdown menu.\n   * @param {Object} options - Overrides to the default plugin settings.\n   */\n  _setup(element) {\n    this.$element = $(element);\n    this.rules = this.$element.data('responsive-menu');\n    this.currentMq = null;\n    this.currentPlugin = null;\n    this.className = 'ResponsiveMenu'; // ie9 back compat\n\n    this._init();\n    this._events();\n  }\n\n  /**\n   * Initializes the Menu by parsing the classes from the 'data-ResponsiveMenu' attribute on the element.\n   * @function\n   * @private\n   */\n  _init() {\n\n    MediaQuery._init();\n    // The first time an Interchange plugin is initialized, this.rules is converted from a string of \"classes\" to an object of rules\n    if (typeof this.rules === 'string') {\n      let rulesTree = {};\n\n      // Parse rules from \"classes\" pulled from data attribute\n      let rules = this.rules.split(' ');\n\n      // Iterate through every rule found\n      for (let i = 0; i < rules.length; i++) {\n        let rule = rules[i].split('-');\n        let ruleSize = rule.length > 1 ? rule[0] : 'small';\n        let rulePlugin = rule.length > 1 ? rule[1] : rule[0];\n\n        if (MenuPlugins[rulePlugin] !== null) {\n          rulesTree[ruleSize] = MenuPlugins[rulePlugin];\n        }\n      }\n\n      this.rules = rulesTree;\n    }\n\n    if (!$.isEmptyObject(this.rules)) {\n      this._checkMediaQueries();\n    }\n    // Add data-mutate since children may need it.\n    this.$element.attr('data-mutate', (this.$element.attr('data-mutate') || GetYoDigits(6, 'responsive-menu')));\n  }\n\n  /**\n   * Initializes events for the Menu.\n   * @function\n   * @private\n   */\n  _events() {\n    var _this = this;\n\n    $(window).on('changed.zf.mediaquery', function() {\n      _this._checkMediaQueries();\n    });\n    // $(window).on('resize.zf.ResponsiveMenu', function() {\n    //   _this._checkMediaQueries();\n    // });\n  }\n\n  /**\n   * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.\n   * @function\n   * @private\n   */\n  _checkMediaQueries() {\n    var matchedMq, _this = this;\n    // Iterate through each rule and find the last matching rule\n    $.each(this.rules, function(key) {\n      if (MediaQuery.atLeast(key)) {\n        matchedMq = key;\n      }\n    });\n\n    // No match? No dice\n    if (!matchedMq) return;\n\n    // Plugin already initialized? We good\n    if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return;\n\n    // Remove existing plugin-specific CSS classes\n    $.each(MenuPlugins, function(key, value) {\n      _this.$element.removeClass(value.cssClass);\n    });\n\n    // Add the CSS class for the new plugin\n    this.$element.addClass(this.rules[matchedMq].cssClass);\n\n    // Create an instance of the new plugin\n    if (this.currentPlugin) this.currentPlugin.destroy();\n    this.currentPlugin = new this.rules[matchedMq].plugin(this.$element, {});\n  }\n\n  /**\n   * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.\n   * @function\n   */\n  _destroy() {\n    this.currentPlugin.destroy();\n    $(window).off('.zf.ResponsiveMenu');\n  }\n}\n\nResponsiveMenu.defaults = {};\n\nexport {ResponsiveMenu};\n", "import $ from 'jquery';\n\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Motion } from './foundation.util.motion';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * ResponsiveToggle module.\n * @module foundation.responsiveToggle\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.motion\n */\n\nclass ResponsiveToggle extends Plugin {\n  /**\n   * Creates a new instance of Tab Bar.\n   * @class\n   * @name ResponsiveToggle\n   * @fires ResponsiveToggle#init\n   * @param {jQuery} element - jQuery object to attach tab bar functionality to.\n   * @param {Object} options - Overrides to the default plugin settings.\n   */\n  _setup(element, options) {\n    this.$element = $(element);\n    this.options = $.extend({}, ResponsiveToggle.defaults, this.$element.data(), options);\n    this.className = 'ResponsiveToggle'; // ie9 back compat\n\n    this._init();\n    this._events();\n  }\n\n  /**\n   * Initializes the tab bar by finding the target element, toggling element, and running update().\n   * @function\n   * @private\n   */\n  _init() {\n    MediaQuery._init();\n    var targetID = this.$element.data('responsive-toggle');\n    if (!targetID) {\n      console.error('Your tab bar needs an ID of a Menu as the value of data-tab-bar.');\n    }\n\n    this.$targetMenu = $(`#${targetID}`);\n    this.$toggler = this.$element.find('[data-toggle]').filter(function() {\n      var target = $(this).data('toggle');\n      return (target === targetID || target === \"\");\n    });\n    this.options = $.extend({}, this.options, this.$targetMenu.data());\n\n    // If they were set, parse the animation classes\n    if(this.options.animate) {\n      let input = this.options.animate.split(' ');\n\n      this.animationIn = input[0];\n      this.animationOut = input[1] || null;\n    }\n\n    this._update();\n  }\n\n  /**\n   * Adds necessary event handlers for the tab bar to work.\n   * @function\n   * @private\n   */\n  _events() {\n    this._updateMqHandler = this._update.bind(this);\n\n    $(window).on('changed.zf.mediaquery', this._updateMqHandler);\n\n    this.$toggler.on('click.zf.responsiveToggle', this.toggleMenu.bind(this));\n  }\n\n  /**\n   * Checks the current media query to determine if the tab bar should be visible or hidden.\n   * @function\n   * @private\n   */\n  _update() {\n    // Mobile\n    if (!MediaQuery.atLeast(this.options.hideFor)) {\n      this.$element.show();\n      this.$targetMenu.hide();\n    }\n\n    // Desktop\n    else {\n      this.$element.hide();\n      this.$targetMenu.show();\n    }\n  }\n\n  /**\n   * Toggles the element attached to the tab bar. The toggle only happens if the screen is small enough to allow it.\n   * @function\n   * @fires ResponsiveToggle#toggled\n   */\n  toggleMenu() {\n    if (!MediaQuery.atLeast(this.options.hideFor)) {\n      /**\n       * Fires when the element attached to the tab bar toggles.\n       * @event ResponsiveToggle#toggled\n       */\n      if(this.options.animate) {\n        if (this.$targetMenu.is(':hidden')) {\n          Motion.animateIn(this.$targetMenu, this.animationIn, () => {\n            this.$element.trigger('toggled.zf.responsiveToggle');\n            this.$targetMenu.find('[data-mutate]').triggerHandler('mutateme.zf.trigger');\n          });\n        }\n        else {\n          Motion.animateOut(this.$targetMenu, this.animationOut, () => {\n            this.$element.trigger('toggled.zf.responsiveToggle');\n          });\n        }\n      }\n      else {\n        this.$targetMenu.toggle(0);\n        this.$targetMenu.find('[data-mutate]').trigger('mutateme.zf.trigger');\n        this.$element.trigger('toggled.zf.responsiveToggle');\n      }\n    }\n  };\n\n  _destroy() {\n    this.$element.off('.zf.responsiveToggle');\n    this.$toggler.off('.zf.responsiveToggle');\n\n    $(window).off('changed.zf.mediaquery', this._updateMqHandler);\n  }\n}\n\nResponsiveToggle.defaults = {\n  /**\n   * The breakpoint after which the menu is always shown, and the tab bar is hidden.\n   * @option\n   * @type {string}\n   * @default 'medium'\n   */\n  hideFor: 'medium',\n\n  /**\n   * To decide if the toggle should be animated or not.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  animate: false\n};\n\nexport { ResponsiveToggle };\n", "import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Motion } from './foundation.util.motion';\nimport { Triggers } from './foundation.util.triggers';\nimport { Touch } from './foundation.util.touch'\n\n/**\n * Reveal module.\n * @module foundation.reveal\n * @requires foundation.util.keyboard\n * @requires foundation.util.touch\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.motion if using animations\n */\n\nclass Reveal extends Plugin {\n  /**\n   * Creates a new instance of Reveal.\n   * @class\n   * @name Reveal\n   * @param {jQuery} element - jQuery object to use for the modal.\n   * @param {Object} options - optional parameters.\n   */\n  _setup(element, options) {\n    this.$element = element;\n    this.options = $.extend({}, Reveal.defaults, this.$element.data(), options);\n    this.className = 'Reveal'; // ie9 back compat\n    this._init();\n\n    // Touch and Triggers init are idempotent, just need to make sure they are initialized\n    Touch.init($);\n    Triggers.init($);\n\n    Keyboard.register('Reveal', {\n      'ESCAPE': 'close',\n    });\n  }\n\n  /**\n   * Initializes the modal by adding the overlay and close buttons, (if selected).\n   * @private\n   */\n  _init() {\n    MediaQuery._init();\n    this.id = this.$element.attr('id');\n    this.isActive = false;\n    this.cached = {mq: MediaQuery.current};\n\n    this.$anchor = $(`[data-open=\"${this.id}\"]`).length ? $(`[data-open=\"${this.id}\"]`) : $(`[data-toggle=\"${this.id}\"]`);\n    this.$anchor.attr({\n      'aria-controls': this.id,\n      'aria-haspopup': 'dialog',\n      'tabindex': 0\n    });\n\n    if (this.options.fullScreen || this.$element.hasClass('full')) {\n      this.options.fullScreen = true;\n      this.options.overlay = false;\n    }\n    if (this.options.overlay && !this.$overlay) {\n      this.$overlay = this._makeOverlay(this.id);\n    }\n\n    this.$element.attr({\n        'role': 'dialog',\n        'aria-hidden': true,\n        'data-yeti-box': this.id,\n        'data-resize': this.id\n    });\n\n    if(this.$overlay) {\n      this.$element.detach().appendTo(this.$overlay);\n    } else {\n      this.$element.detach().appendTo($(this.options.appendTo));\n      this.$element.addClass('without-overlay');\n    }\n    this._events();\n    if (this.options.deepLink && window.location.hash === ( `#${this.id}`)) {\n      this.onLoadListener = onLoad($(window), () => this.open());\n    }\n  }\n\n  /**\n   * Creates an overlay div to display behind the modal.\n   * @private\n   */\n  _makeOverlay() {\n    var additionalOverlayClasses = '';\n\n    if (this.options.additionalOverlayClasses) {\n      additionalOverlayClasses = ' ' + this.options.additionalOverlayClasses;\n    }\n\n    return $('<div></div>')\n      .addClass('reveal-overlay' + additionalOverlayClasses)\n      .appendTo(this.options.appendTo);\n  }\n\n  /**\n   * Updates position of modal\n   * TODO:  Figure out if we actually need to cache these values or if it doesn't matter\n   * @private\n   */\n  _updatePosition() {\n    var width = this.$element.outerWidth();\n    var outerWidth = $(window).width();\n    var height = this.$element.outerHeight();\n    var outerHeight = $(window).height();\n    var left, top = null;\n    if (this.options.hOffset === 'auto') {\n      left = parseInt((outerWidth - width) / 2, 10);\n    } else {\n      left = parseInt(this.options.hOffset, 10);\n    }\n    if (this.options.vOffset === 'auto') {\n      if (height > outerHeight) {\n        top = parseInt(Math.min(100, outerHeight / 10), 10);\n      } else {\n        top = parseInt((outerHeight - height) / 4, 10);\n      }\n    } else if (this.options.vOffset !== null) {\n      top = parseInt(this.options.vOffset, 10);\n    }\n\n    if (top !== null) {\n      this.$element.css({top: top + 'px'});\n    }\n\n    // only worry about left if we don't have an overlay or we have a horizontal offset,\n    // otherwise we're perfectly in the middle\n    if (!this.$overlay || (this.options.hOffset !== 'auto')) {\n      this.$element.css({left: left + 'px'});\n      this.$element.css({margin: '0px'});\n    }\n\n  }\n\n  /**\n   * Adds event handlers for the modal.\n   * @private\n   */\n  _events() {\n    var _this = this;\n\n    this.$element.on({\n      'open.zf.trigger': this.open.bind(this),\n      'close.zf.trigger': (event, $element) => {\n        if ((event.target === _this.$element[0]) ||\n            ($(event.target).parents('[data-closable]')[0] === $element)) { // only close reveal when it's explicitly called\n          return this.close.apply(this);\n        }\n      },\n      'toggle.zf.trigger': this.toggle.bind(this),\n      'resizeme.zf.trigger': function() {\n        _this._updatePosition();\n      }\n    });\n\n    if (this.options.closeOnClick && this.options.overlay) {\n      this.$overlay.off('.zf.reveal').on('click.zf.dropdown tap.zf.dropdown', function(e) {\n        if (e.target === _this.$element[0] ||\n          $.contains(_this.$element[0], e.target) ||\n            !$.contains(document, e.target)) {\n              return;\n        }\n        _this.close();\n      });\n    }\n    if (this.options.deepLink) {\n      $(window).on(`hashchange.zf.reveal:${this.id}`, this._handleState.bind(this));\n    }\n  }\n\n  /**\n   * Handles modal methods on back/forward button clicks or any other event that triggers hashchange.\n   * @private\n   */\n  _handleState() {\n    if(window.location.hash === ( '#' + this.id) && !this.isActive){ this.open(); }\n    else{ this.close(); }\n  }\n\n  /**\n  * Disables the scroll when Reveal is shown to prevent the background from shifting\n  * @param {number} scrollTop - Scroll to visually apply, window current scroll by default\n  */\n  _disableScroll(scrollTop) {\n    scrollTop = scrollTop || $(window).scrollTop();\n    if ($(document).height() > $(window).height()) {\n      $(\"html\")\n        .css(\"top\", -scrollTop);\n    }\n  }\n\n  /**\n  * Reenables the scroll when Reveal closes\n  * @param {number} scrollTop - Scroll to restore, html \"top\" property by default (as set by `_disableScroll`)\n  */\n  _enableScroll(scrollTop) {\n    scrollTop = scrollTop || parseInt($(\"html\").css(\"top\"), 10);\n    if ($(document).height() > $(window).height()) {\n      $(\"html\")\n        .css(\"top\", \"\");\n      $(window).scrollTop(-scrollTop);\n    }\n  }\n\n\n  /**\n   * Opens the modal controlled by `this.$anchor`, and closes all others by default.\n   * @function\n   * @fires Reveal#closeme\n   * @fires Reveal#open\n   */\n  open() {\n    // either update or replace browser history\n    const hash = `#${this.id}`;\n    if (this.options.deepLink && window.location.hash !== hash) {\n\n      if (window.history.pushState) {\n        if (this.options.updateHistory) {\n          window.history.pushState({}, '', hash);\n        } else {\n          window.history.replaceState({}, '', hash);\n        }\n      } else {\n        window.location.hash = hash;\n      }\n    }\n\n    // Remember anchor that opened it to set focus back later, have general anchors as fallback\n    this.$activeAnchor = $(document.activeElement).is(this.$anchor) ? $(document.activeElement) : this.$anchor;\n\n    this.isActive = true;\n\n    // Make elements invisible, but remove display: none so we can get size and positioning\n    this.$element\n        .css({ 'visibility': 'hidden' })\n        .show()\n        .scrollTop(0);\n    if (this.options.overlay) {\n      this.$overlay.css({'visibility': 'hidden'}).show();\n    }\n\n    this._updatePosition();\n\n    this.$element\n      .hide()\n      .css({ 'visibility': '' });\n\n    if(this.$overlay) {\n      this.$overlay.css({'visibility': ''}).hide();\n      if(this.$element.hasClass('fast')) {\n        this.$overlay.addClass('fast');\n      } else if (this.$element.hasClass('slow')) {\n        this.$overlay.addClass('slow');\n      }\n    }\n\n\n    if (!this.options.multipleOpened) {\n      /**\n       * Fires immediately before the modal opens.\n       * Closes any other modals that are currently open\n       * @event Reveal#closeme\n       */\n      this.$element.trigger('closeme.zf.reveal', this.id);\n    }\n\n    if ($('.reveal:visible').length === 0) {\n      this._disableScroll();\n    }\n\n    var _this = this;\n\n    // Motion UI method of reveal\n    if (this.options.animationIn) {\n      function afterAnimation(){\n        _this.$element\n          .attr({\n            'aria-hidden': false,\n            'tabindex': -1\n          })\n          .focus();\n        _this._addGlobalClasses();\n        Keyboard.trapFocus(_this.$element);\n      }\n      if (this.options.overlay) {\n        Motion.animateIn(this.$overlay, 'fade-in');\n      }\n      Motion.animateIn(this.$element, this.options.animationIn, () => {\n        if(this.$element) { // protect against object having been removed\n          this.focusableElements = Keyboard.findFocusable(this.$element);\n          afterAnimation();\n        }\n      });\n    }\n    // jQuery method of reveal\n    else {\n      if (this.options.overlay) {\n        this.$overlay.show(0);\n      }\n      this.$element.show(this.options.showDelay);\n    }\n\n    // handle accessibility\n    this.$element\n      .attr({\n        'aria-hidden': false,\n        'tabindex': -1\n      })\n      .focus();\n    Keyboard.trapFocus(this.$element);\n\n    this._addGlobalClasses();\n\n    this._addGlobalListeners();\n\n    /**\n     * Fires when the modal has successfully opened.\n     * @event Reveal#open\n     */\n    this.$element.trigger('open.zf.reveal');\n  }\n\n  /**\n   * Adds classes and listeners on document required by open modals.\n   *\n   * The following classes are added and updated:\n   * - `.is-reveal-open` - Prevents the scroll on document\n   * - `.zf-has-scroll`  - Displays a disabled scrollbar on document if required like if the\n   *                       scroll was not disabled. This prevent a \"shift\" of the page content due\n   *                       the scrollbar disappearing when the modal opens.\n   *\n   * @private\n   */\n  _addGlobalClasses() {\n    const updateScrollbarClass = () => {\n      $('html').toggleClass('zf-has-scroll', !!($(document).height() > $(window).height()));\n    };\n\n    this.$element.on('resizeme.zf.trigger.revealScrollbarListener', () => updateScrollbarClass());\n    updateScrollbarClass();\n    $('html').addClass('is-reveal-open');\n  }\n\n  /**\n   * Removes classes and listeners on document that were required by open modals.\n   * @private\n   */\n  _removeGlobalClasses() {\n    this.$element.off('resizeme.zf.trigger.revealScrollbarListener');\n    $('html').removeClass('is-reveal-open');\n    $('html').removeClass('zf-has-scroll');\n  }\n\n  /**\n   * Adds extra event handlers for the body and window if necessary.\n   * @private\n   */\n  _addGlobalListeners() {\n    var _this = this;\n    if(!this.$element) { return; } // If we're in the middle of cleanup, don't freak out\n    this.focusableElements = Keyboard.findFocusable(this.$element);\n\n    if (!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen) {\n      $('body').on('click.zf.dropdown tap.zf.dropdown', function(e) {\n        if (e.target === _this.$element[0] ||\n          $.contains(_this.$element[0], e.target) ||\n            !$.contains(document, e.target)) { return; }\n        _this.close();\n      });\n    }\n\n    if (this.options.closeOnEsc) {\n      $(window).on('keydown.zf.reveal', function(e) {\n        Keyboard.handleKey(e, 'Reveal', {\n          close: function() {\n            if (_this.options.closeOnEsc) {\n              _this.close();\n            }\n          }\n        });\n      });\n    }\n  }\n\n  /**\n   * Closes the modal.\n   * @function\n   * @fires Reveal#closed\n   */\n  close() {\n    if (!this.isActive || !this.$element.is(':visible')) {\n      return false;\n    }\n    var _this = this;\n\n    // Motion UI method of hiding\n    if (this.options.animationOut) {\n      if (this.options.overlay) {\n        Motion.animateOut(this.$overlay, 'fade-out');\n      }\n\n      Motion.animateOut(this.$element, this.options.animationOut, finishUp);\n    }\n    // jQuery method of hiding\n    else {\n      this.$element.hide(this.options.hideDelay);\n\n      if (this.options.overlay) {\n        this.$overlay.hide(0, finishUp);\n      }\n      else {\n        finishUp();\n      }\n    }\n\n    // Conditionals to remove extra event listeners added on open\n    if (this.options.closeOnEsc) {\n      $(window).off('keydown.zf.reveal');\n    }\n\n    if (!this.options.overlay && this.options.closeOnClick) {\n      $('body').off('click.zf.dropdown tap.zf.dropdown');\n    }\n\n    this.$element.off('keydown.zf.reveal');\n\n    function finishUp() {\n\n      // Get the current top before the modal is closed and restore the scroll after.\n      // TODO: use component properties instead of HTML properties\n      // See https://github.com/foundation/foundation-sites/pull/10786\n      var scrollTop = parseInt($(\"html\").css(\"top\"), 10);\n\n      if ($('.reveal:visible').length  === 0) {\n        _this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal\n      }\n\n      Keyboard.releaseFocus(_this.$element);\n\n      _this.$element.attr('aria-hidden', true);\n\n      if ($('.reveal:visible').length  === 0) {\n        _this._enableScroll(scrollTop);\n      }\n\n      /**\n      * Fires when the modal is done closing.\n      * @event Reveal#closed\n      */\n      _this.$element.trigger('closed.zf.reveal');\n    }\n\n    /**\n    * Resets the modal content\n    * This prevents a running video to keep going in the background\n    */\n    if (this.options.resetOnClose) {\n      this.$element.html(this.$element.html());\n    }\n\n    this.isActive = false;\n    // If deepLink and we did not switched to an other modal...\n    if (_this.options.deepLink && window.location.hash === `#${this.id}`) {\n      // Remove the history hash\n      if (window.history.replaceState) {\n        const urlWithoutHash = window.location.pathname + window.location.search;\n        if (this.options.updateHistory) {\n          window.history.pushState({}, '', urlWithoutHash); // remove the hash\n        } else {\n          window.history.replaceState('', document.title, urlWithoutHash);\n        }\n      } else {\n        window.location.hash = '';\n      }\n    }\n\n    this.$activeAnchor.focus();\n  }\n\n  /**\n   * Toggles the open/closed state of a modal.\n   * @function\n   */\n  toggle() {\n    if (this.isActive) {\n      this.close();\n    } else {\n      this.open();\n    }\n  };\n\n  /**\n   * Destroys an instance of a modal.\n   * @function\n   */\n  _destroy() {\n    if (this.options.overlay) {\n      this.$element.appendTo($(this.options.appendTo)); // move $element outside of $overlay to prevent error unregisterPlugin()\n      this.$overlay.hide().off().remove();\n    }\n    this.$element.hide().off();\n    this.$anchor.off('.zf');\n    $(window).off(`.zf.reveal:${this.id}`)\n    if (this.onLoadListener) $(window).off(this.onLoadListener);\n\n    if ($('.reveal:visible').length  === 0) {\n      this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal\n    }\n  };\n}\n\nReveal.defaults = {\n  /**\n   * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.\n   * @option\n   * @type {string}\n   * @default ''\n   */\n  animationIn: '',\n  /**\n   * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.\n   * @option\n   * @type {string}\n   * @default ''\n   */\n  animationOut: '',\n  /**\n   * Time, in ms, to delay the opening of a modal after a click if no animation used.\n   * @option\n   * @type {number}\n   * @default 0\n   */\n  showDelay: 0,\n  /**\n   * Time, in ms, to delay the closing of a modal after a click if no animation used.\n   * @option\n   * @type {number}\n   * @default 0\n   */\n  hideDelay: 0,\n  /**\n   * Allows a click on the body/overlay to close the modal.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  closeOnClick: true,\n  /**\n   * Allows the modal to close if the user presses the `ESCAPE` key.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  closeOnEsc: true,\n  /**\n   * If true, allows multiple modals to be displayed at once.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  multipleOpened: false,\n  /**\n   * Distance, in pixels, the modal should push down from the top of the screen.\n   * @option\n   * @type {number|string}\n   * @default auto\n   */\n  vOffset: 'auto',\n  /**\n   * Distance, in pixels, the modal should push in from the side of the screen.\n   * @option\n   * @type {number|string}\n   * @default auto\n   */\n  hOffset: 'auto',\n  /**\n   * Allows the modal to be fullscreen, completely blocking out the rest of the view. JS checks for this as well.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  fullScreen: false,\n  /**\n   * Allows the modal to generate an overlay div, which will cover the view when modal opens.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  overlay: true,\n  /**\n   * Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api, otherwise, videos will continue to play in the background.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  resetOnClose: false,\n  /**\n   * Link the location hash to the modal.\n   * Set the location hash when the modal is opened/closed, and open/close the modal when the location changes.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  deepLink: false,\n  /**\n   * If `deepLink` is enabled, update the browser history with the open modal\n   * @option\n   * @default false\n   */\n  updateHistory: false,\n    /**\n   * Allows the modal to append to custom div.\n   * @option\n   * @type {string}\n   * @default \"body\"\n   */\n  appendTo: \"body\",\n  /**\n   * Allows adding additional class names to the reveal overlay.\n   * @option\n   * @type {string}\n   * @default ''\n   */\n  additionalOverlayClasses: ''\n};\n\nexport {Reveal};\n", "import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Move } from './foundation.util.motion';\nimport { GetYoDigits, rtl as Rtl } from './foundation.core.utils';\n\nimport { Plugin } from './foundation.core.plugin';\n\nimport { Touch } from './foundation.util.touch';\n\nimport { Triggers } from './foundation.util.triggers';\n/**\n * Slider module.\n * @module foundation.slider\n * @requires foundation.util.motion\n * @requires foundation.util.triggers\n * @requires foundation.util.keyboard\n * @requires foundation.util.touch\n */\n\nclass Slider extends Plugin {\n  /**\n   * Creates a new instance of a slider control.\n   * @class\n   * @name Slider\n   * @param {jQuery} element - jQuery object to make into a slider control.\n   * @param {Object} options - Overrides to the default plugin settings.\n   */\n  _setup(element, options) {\n    this.$element = element;\n    this.options = $.extend({}, Slider.defaults, this.$element.data(), options);\n    this.className = 'Slider'; // ie9 back compat\n    this.initialized = false;\n\n  // Touch and Triggers inits are idempotent, we just need to make sure it's initialied.\n    Touch.init($);\n    Triggers.init($);\n\n    this._init();\n\n    Keyboard.register('Slider', {\n      'ltr': {\n        'ARROW_RIGHT': 'increase',\n        'ARROW_UP': 'increase',\n        'ARROW_DOWN': 'decrease',\n        'ARROW_LEFT': 'decrease',\n        'SHIFT_ARROW_RIGHT': 'increaseFast',\n        'SHIFT_ARROW_UP': 'increaseFast',\n        'SHIFT_ARROW_DOWN': 'decreaseFast',\n        'SHIFT_ARROW_LEFT': 'decreaseFast',\n        'HOME': 'min',\n        'END': 'max'\n      },\n      'rtl': {\n        'ARROW_LEFT': 'increase',\n        'ARROW_RIGHT': 'decrease',\n        'SHIFT_ARROW_LEFT': 'increaseFast',\n        'SHIFT_ARROW_RIGHT': 'decreaseFast'\n      }\n    });\n  }\n\n  /**\n   * Initilizes the plugin by reading/setting attributes, creating collections and setting the initial position of the handle(s).\n   * @function\n   * @private\n   */\n  _init() {\n    this.inputs = this.$element.find('input');\n    this.handles = this.$element.find('[data-slider-handle]');\n\n    this.$handle = this.handles.eq(0);\n    this.$input = this.inputs.length ? this.inputs.eq(0) : $(`#${this.$handle.attr('aria-controls')}`);\n    this.$fill = this.$element.find('[data-slider-fill]').css(this.options.vertical ? 'height' : 'width', 0);\n\n    if (this.options.disabled || this.$element.hasClass(this.options.disabledClass)) {\n      this.options.disabled = true;\n      this.$element.addClass(this.options.disabledClass);\n    }\n    if (!this.inputs.length) {\n      this.inputs = $().add(this.$input);\n      this.options.binding = true;\n    }\n\n    this._setInitAttr(0);\n\n    if (this.handles[1]) {\n      this.options.doubleSided = true;\n      this.$handle2 = this.handles.eq(1);\n      this.$input2 = this.inputs.length > 1 ? this.inputs.eq(1) : $(`#${this.$handle2.attr('aria-controls')}`);\n\n      if (!this.inputs[1]) {\n        this.inputs = this.inputs.add(this.$input2);\n      }\n\n      // this.$handle.triggerHandler('click.zf.slider');\n      this._setInitAttr(1);\n    }\n\n    // Set handle positions\n    this.setHandles();\n\n    this._events();\n    this.initialized = true;\n  }\n\n  setHandles() {\n    if(this.handles[1]) {\n      this._setHandlePos(this.$handle, this.inputs.eq(0).val(), () => {\n        this._setHandlePos(this.$handle2, this.inputs.eq(1).val());\n      });\n    } else {\n      this._setHandlePos(this.$handle, this.inputs.eq(0).val());\n    }\n  }\n\n  _reflow() {\n    this.setHandles();\n  }\n  /**\n  * @function\n  * @private\n  * @param {Number} value - floating point (the value) to be transformed using to a relative position on the slider (the inverse of _value)\n  */\n  _pctOfBar(value) {\n    var pctOfBar = percent(value - this.options.start, this.options.end - this.options.start)\n\n    switch(this.options.positionValueFunction) {\n    case \"pow\":\n      pctOfBar = this._logTransform(pctOfBar);\n      break;\n    case \"log\":\n      pctOfBar = this._powTransform(pctOfBar);\n      break;\n    }\n\n    return pctOfBar.toFixed(2)\n  }\n\n  /**\n  * @function\n  * @private\n  * @param {Number} pctOfBar - floating point, the relative position of the slider (typically between 0-1) to be transformed to a value\n  */\n  _value(pctOfBar) {\n    switch(this.options.positionValueFunction) {\n    case \"pow\":\n      pctOfBar = this._powTransform(pctOfBar);\n      break;\n    case \"log\":\n      pctOfBar = this._logTransform(pctOfBar);\n      break;\n    }\n\n    var value\n    if (this.options.vertical) {\n      // linear interpolation which is working with negative values for start\n      // https://math.stackexchange.com/a/1019084\n      value = parseFloat(this.options.end) + pctOfBar * (this.options.start - this.options.end)\n    } else {\n      value = (this.options.end - this.options.start) * pctOfBar + parseFloat(this.options.start);\n    }\n\n    return value\n  }\n\n  /**\n  * @function\n  * @private\n  * @param {Number} value - floating point (typically between 0-1) to be transformed using the log function\n  */\n  _logTransform(value) {\n    return baseLog(this.options.nonLinearBase, ((value*(this.options.nonLinearBase-1))+1))\n  }\n\n  /**\n  * @function\n  * @private\n  * @param {Number} value - floating point (typically between 0-1) to be transformed using the power function\n  */\n  _powTransform(value) {\n    return (Math.pow(this.options.nonLinearBase, value) - 1) / (this.options.nonLinearBase - 1)\n  }\n\n  /**\n   * Sets the position of the selected handle and fill bar.\n   * @function\n   * @private\n   * @param {jQuery} $hndl - the selected handle to move.\n   * @param {Number} location - floating point between the start and end values of the slider bar.\n   * @param {Function} cb - callback function to fire on completion.\n   * @fires Slider#moved\n   * @fires Slider#changed\n   */\n  _setHandlePos($hndl, location, cb) {\n    // don't move if the slider has been disabled since its initialization\n    if (this.$element.hasClass(this.options.disabledClass)) {\n      return;\n    }\n    //might need to alter that slightly for bars that will have odd number selections.\n    location = parseFloat(location);//on input change events, convert string to number...grumble.\n\n    // prevent slider from running out of bounds, if value exceeds the limits set through options, override the value to min/max\n    if (location < this.options.start) { location = this.options.start; }\n    else if (location > this.options.end) { location = this.options.end; }\n\n    var isDbl = this.options.doubleSided;\n\n    if (isDbl) { //this block is to prevent 2 handles from crossing eachother. Could/should be improved.\n      if (this.handles.index($hndl) === 0) {\n        var h2Val = parseFloat(this.$handle2.attr('aria-valuenow'));\n        location = location >= h2Val ? h2Val - this.options.step : location;\n      } else {\n        var h1Val = parseFloat(this.$handle.attr('aria-valuenow'));\n        location = location <= h1Val ? h1Val + this.options.step : location;\n      }\n    }\n\n    var _this = this,\n        vert = this.options.vertical,\n        hOrW = vert ? 'height' : 'width',\n        lOrT = vert ? 'top' : 'left',\n        handleDim = $hndl[0].getBoundingClientRect()[hOrW],\n        elemDim = this.$element[0].getBoundingClientRect()[hOrW],\n        //percentage of bar min/max value based on click or drag point\n        pctOfBar = this._pctOfBar(location),\n        //number of actual pixels to shift the handle, based on the percentage obtained above\n        pxToMove = (elemDim - handleDim) * pctOfBar,\n        //percentage of bar to shift the handle\n        movement = (percent(pxToMove, elemDim) * 100).toFixed(this.options.decimal);\n        //fixing the decimal value for the location number, is passed to other methods as a fixed floating-point value\n        location = parseFloat(location.toFixed(this.options.decimal));\n        // declare empty object for css adjustments, only used with 2 handled-sliders\n    var css = {};\n\n    this._setValues($hndl, location);\n\n    // TODO update to calculate based on values set to respective inputs??\n    if (isDbl) {\n      var isLeftHndl = this.handles.index($hndl) === 0,\n          //empty variable, will be used for min-height/width for fill bar\n          dim,\n          //percentage w/h of the handle compared to the slider bar\n          handlePct =  Math.floor(percent(handleDim, elemDim) * 100);\n      //if left handle, the math is slightly different than if it's the right handle, and the left/top property needs to be changed for the fill bar\n      if (isLeftHndl) {\n        //left or top percentage value to apply to the fill bar.\n        css[lOrT] = `${movement}%`;\n        //calculate the new min-height/width for the fill bar.\n        dim = parseFloat(this.$handle2[0].style[lOrT]) - movement + handlePct;\n        //this callback is necessary to prevent errors and allow the proper placement and initialization of a 2-handled slider\n        //plus, it means we don't care if 'dim' isNaN on init, it won't be in the future.\n        if (cb && typeof cb === 'function') { cb(); }//this is only needed for the initialization of 2 handled sliders\n      } else {\n        //just caching the value of the left/bottom handle's left/top property\n        var handlePos = parseFloat(this.$handle[0].style[lOrT]);\n        //calculate the new min-height/width for the fill bar. Use isNaN to prevent false positives for numbers <= 0\n        //based on the percentage of movement of the handle being manipulated, less the opposing handle's left/top position, plus the percentage w/h of the handle itself\n        dim = movement - (isNaN(handlePos) ? (this.options.initialStart - this.options.start)/((this.options.end-this.options.start)/100) : handlePos) + handlePct;\n      }\n      // assign the min-height/width to our css object\n      css[`min-${hOrW}`] = `${dim}%`;\n    }\n\n    //because we don't know exactly how the handle will be moved, check the amount of time it should take to move.\n    var moveTime = this.$element.data('dragging') ? 1000/60 : this.options.moveTime;\n\n    Move(moveTime, $hndl, function() {\n      // adjusting the left/top property of the handle, based on the percentage calculated above\n      // if movement isNaN, that is because the slider is hidden and we cannot determine handle width,\n      // fall back to next best guess.\n      if (isNaN(movement)) {\n        $hndl.css(lOrT, `${pctOfBar * 100}%`);\n      }\n      else {\n        $hndl.css(lOrT, `${movement}%`);\n      }\n\n      if (!_this.options.doubleSided) {\n        //if single-handled, a simple method to expand the fill bar\n        _this.$fill.css(hOrW, `${pctOfBar * 100}%`);\n      } else {\n        //otherwise, use the css object we created above\n        _this.$fill.css(css);\n      }\n    });\n\n    if (this.initialized) {\n      this.$element.one('finished.zf.animate', function() {\n        /**\n         * Fires when the handle is done moving.\n         * @event Slider#moved\n         */\n        _this.$element.trigger('moved.zf.slider', [$hndl]);\n      });\n      /**\n       * Fires when the value has not been change for a given time.\n       * @event Slider#changed\n       */\n      clearTimeout(_this.timeout);\n      _this.timeout = setTimeout(function(){\n        _this.$element.trigger('changed.zf.slider', [$hndl]);\n      }, _this.options.changedDelay);\n    }\n  }\n\n  /**\n   * Sets the initial attribute for the slider element.\n   * @function\n   * @private\n   * @param {Number} idx - index of the current handle/input to use.\n   */\n  _setInitAttr(idx) {\n    var initVal = (idx === 0 ? this.options.initialStart : this.options.initialEnd)\n    var id = this.inputs.eq(idx).attr('id') || GetYoDigits(6, 'slider');\n    this.inputs.eq(idx).attr({\n      'id': id,\n      'max': this.options.end,\n      'min': this.options.start,\n      'step': this.options.step\n    });\n    this.inputs.eq(idx).val(initVal);\n    this.handles.eq(idx).attr({\n      'role': 'slider',\n      'aria-controls': id,\n      'aria-valuemax': this.options.end,\n      'aria-valuemin': this.options.start,\n      'aria-valuenow': initVal,\n      'aria-orientation': this.options.vertical ? 'vertical' : 'horizontal',\n      'tabindex': 0\n    });\n  }\n\n  /**\n   * Sets the input and `aria-valuenow` values for the slider element.\n   * @function\n   * @private\n   * @param {jQuery} $handle - the currently selected handle.\n   * @param {Number} val - floating point of the new value.\n   */\n  _setValues($handle, val) {\n    var idx = this.options.doubleSided ? this.handles.index($handle) : 0;\n    this.inputs.eq(idx).val(val);\n    $handle.attr('aria-valuenow', val);\n  }\n\n  /**\n   * Handles events on the slider element.\n   * Calculates the new location of the current handle.\n   * If there are two handles and the bar was clicked, it determines which handle to move.\n   * @function\n   * @private\n   * @param {Object} e - the `event` object passed from the listener.\n   * @param {jQuery} $handle - the current handle to calculate for, if selected.\n   * @param {Number} val - floating point number for the new value of the slider.\n   * TODO clean this up, there's a lot of repeated code between this and the _setHandlePos fn.\n   */\n  _handleEvent(e, $handle, val) {\n    var value;\n    if (!val) {//click or drag events\n      e.preventDefault();\n      var _this = this,\n          vertical = this.options.vertical,\n          param = vertical ? 'height' : 'width',\n          direction = vertical ? 'top' : 'left',\n          eventOffset = vertical ? e.pageY : e.pageX,\n          barDim = this.$element[0].getBoundingClientRect()[param],\n          windowScroll = vertical ? $(window).scrollTop() : $(window).scrollLeft();\n\n      var elemOffset = this.$element.offset()[direction];\n\n      // touch events emulated by the touch util give position relative to screen, add window.scroll to event coordinates...\n      // best way to guess this is simulated is if clientY == pageY\n      if (e.clientY === e.pageY) { eventOffset = eventOffset + windowScroll; }\n      var eventFromBar = eventOffset - elemOffset;\n      var barXY;\n      if (eventFromBar < 0) {\n        barXY = 0;\n      } else if (eventFromBar > barDim) {\n        barXY = barDim;\n      } else {\n        barXY = eventFromBar;\n      }\n      var offsetPct = percent(barXY, barDim);\n\n      value = this._value(offsetPct);\n\n      // turn everything around for RTL, yay math!\n      if (Rtl() && !this.options.vertical) {value = this.options.end - value;}\n\n      value = _this._adjustValue(null, value);\n\n      if (!$handle) {//figure out which handle it is, pass it to the next function.\n        var firstHndlPos = absPosition(this.$handle, direction, barXY, param),\n            secndHndlPos = absPosition(this.$handle2, direction, barXY, param);\n            $handle = firstHndlPos <= secndHndlPos ? this.$handle : this.$handle2;\n      }\n\n    } else {//change event on input\n      value = this._adjustValue(null, val);\n    }\n\n    this._setHandlePos($handle, value);\n  }\n\n  /**\n   * Adjustes value for handle in regard to step value. returns adjusted value\n   * @function\n   * @private\n   * @param {jQuery} $handle - the selected handle.\n   * @param {Number} value - value to adjust. used if $handle is falsy\n   */\n  _adjustValue($handle, value) {\n    var val,\n      step = this.options.step,\n      div = parseFloat(step/2),\n      left, previousVal, nextVal;\n    if (!!$handle) {\n      val = parseFloat($handle.attr('aria-valuenow'));\n    }\n    else {\n      val = value;\n    }\n    if (val >= 0) {\n      left = val % step;\n    } else {\n      left = step + (val % step);\n    }\n    previousVal = val - left;\n    nextVal = previousVal + step;\n    if (left === 0) {\n      return val;\n    }\n    val = val >= previousVal + div ? nextVal : previousVal;\n    return val;\n  }\n\n  /**\n   * Adds event listeners to the slider elements.\n   * @function\n   * @private\n   */\n  _events() {\n    this._eventsForHandle(this.$handle);\n    if(this.handles[1]) {\n      this._eventsForHandle(this.$handle2);\n    }\n  }\n\n\n  /**\n   * Adds event listeners a particular handle\n   * @function\n   * @private\n   * @param {jQuery} $handle - the current handle to apply listeners to.\n   */\n  _eventsForHandle($handle) {\n    var _this = this,\n        curHandle;\n\n      const handleChangeEvent = function(e) {\n        const idx = _this.inputs.index($(this));\n        _this._handleEvent(e, _this.handles.eq(idx), $(this).val());\n      };\n\n      // IE only triggers the change event when the input loses focus which strictly follows the HTML specification\n      // listen for the enter key and trigger a change\n      // @see https://html.spec.whatwg.org/multipage/input.html#common-input-element-events\n      this.inputs.off('keyup.zf.slider').on('keyup.zf.slider', function (e) {\n        if(e.keyCode === 13) handleChangeEvent.call(this, e);\n      });\n\n      this.inputs.off('change.zf.slider').on('change.zf.slider', handleChangeEvent);\n\n      if (this.options.clickSelect) {\n        this.$element.off('click.zf.slider').on('click.zf.slider', function(e) {\n          if (_this.$element.data('dragging')) { return false; }\n\n          if (!$(e.target).is('[data-slider-handle]')) {\n            if (_this.options.doubleSided) {\n              _this._handleEvent(e);\n            } else {\n              _this._handleEvent(e, _this.$handle);\n            }\n          }\n        });\n      }\n\n    if (this.options.draggable) {\n      this.handles.addTouch();\n\n      var $body = $('body');\n      $handle\n        .off('mousedown.zf.slider')\n        .on('mousedown.zf.slider', function(e) {\n          $handle.addClass('is-dragging');\n          _this.$fill.addClass('is-dragging');//\n          _this.$element.data('dragging', true);\n\n          curHandle = $(e.currentTarget);\n\n          $body.on('mousemove.zf.slider', function(ev) {\n            ev.preventDefault();\n            _this._handleEvent(ev, curHandle);\n\n          }).on('mouseup.zf.slider', function(ev) {\n            _this._handleEvent(ev, curHandle);\n\n            $handle.removeClass('is-dragging');\n            _this.$fill.removeClass('is-dragging');\n            _this.$element.data('dragging', false);\n\n            $body.off('mousemove.zf.slider mouseup.zf.slider');\n          });\n      })\n      // prevent events triggered by touch\n      .on('selectstart.zf.slider touchmove.zf.slider', function(e) {\n        e.preventDefault();\n      });\n    }\n\n    $handle.off('keydown.zf.slider').on('keydown.zf.slider', function(e) {\n      var _$handle = $(this),\n          idx = _this.options.doubleSided ? _this.handles.index(_$handle) : 0,\n          oldValue = parseFloat($handle.attr('aria-valuenow')),\n          newValue;\n\n      // handle keyboard event with keyboard util\n      Keyboard.handleKey(e, 'Slider', {\n        decrease: function() {\n          newValue = oldValue - _this.options.step;\n        },\n        increase: function() {\n          newValue = oldValue + _this.options.step;\n        },\n        decreaseFast: function() {\n          newValue = oldValue - _this.options.step * 10;\n        },\n        increaseFast: function() {\n          newValue = oldValue + _this.options.step * 10;\n        },\n        min: function() {\n          newValue = _this.options.start;\n        },\n        max: function() {\n          newValue = _this.options.end;\n        },\n        handled: function() { // only set handle pos when event was handled specially\n          e.preventDefault();\n          _this._setHandlePos(_$handle, newValue);\n        }\n      });\n      /*if (newValue) { // if pressed key has special function, update value\n        e.preventDefault();\n        _this._setHandlePos(_$handle, newValue);\n      }*/\n    });\n  }\n\n  /**\n   * Destroys the slider plugin.\n   */\n  _destroy() {\n    this.handles.off('.zf.slider');\n    this.inputs.off('.zf.slider');\n    this.$element.off('.zf.slider');\n\n    clearTimeout(this.timeout);\n  }\n}\n\nSlider.defaults = {\n  /**\n   * Minimum value for the slider scale.\n   * @option\n   * @type {number}\n   * @default 0\n   */\n  start: 0,\n  /**\n   * Maximum value for the slider scale.\n   * @option\n   * @type {number}\n   * @default 100\n   */\n  end: 100,\n  /**\n   * Minimum value change per change event.\n   * @option\n   * @type {number}\n   * @default 1\n   */\n  step: 1,\n  /**\n   * Value at which the handle/input *(left handle/first input)* should be set to on initialization.\n   * @option\n   * @type {number}\n   * @default 0\n   */\n  initialStart: 0,\n  /**\n   * Value at which the right handle/second input should be set to on initialization.\n   * @option\n   * @type {number}\n   * @default 100\n   */\n  initialEnd: 100,\n  /**\n   * Allows the input to be located outside the container and visible. Set to by the JS\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  binding: false,\n  /**\n   * Allows the user to click/tap on the slider bar to select a value.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  clickSelect: true,\n  /**\n   * Set to true and use the `vertical` class to change alignment to vertical.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  vertical: false,\n  /**\n   * Allows the user to drag the slider handle(s) to select a value.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  draggable: true,\n  /**\n   * Disables the slider and prevents event listeners from being applied. Double checked by JS with `disabledClass`.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  disabled: false,\n  /**\n   * Allows the use of two handles. Double checked by the JS. Changes some logic handling.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  doubleSided: false,\n  /**\n   * Potential future feature.\n   */\n  // steps: 100,\n  /**\n   * Number of decimal places the plugin should go to for floating point precision.\n   * @option\n   * @type {number}\n   * @default 2\n   */\n  decimal: 2,\n  /**\n   * Time delay for dragged elements.\n   */\n  // dragDelay: 0,\n  /**\n   * Time, in ms, to animate the movement of a slider handle if user clicks/taps on the bar. Needs to be manually set if updating the transition time in the Sass settings.\n   * @option\n   * @type {number}\n   * @default 200\n   */\n  moveTime: 200,//update this if changing the transition time in the sass\n  /**\n   * Class applied to disabled sliders.\n   * @option\n   * @type {string}\n   * @default 'disabled'\n   */\n  disabledClass: 'disabled',\n  /**\n   * Will invert the default layout for a vertical<span data-tooltip title=\"who would do this???\"> </span>slider.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  invertVertical: false,\n  /**\n   * Milliseconds before the `changed.zf-slider` event is triggered after value change.\n   * @option\n   * @type {number}\n   * @default 500\n   */\n  changedDelay: 500,\n  /**\n  * Basevalue for non-linear sliders\n  * @option\n  * @type {number}\n  * @default 5\n  */\n  nonLinearBase: 5,\n  /**\n  * Basevalue for non-linear sliders, possible values are: `'linear'`, `'pow'` & `'log'`. Pow and Log use the nonLinearBase setting.\n  * @option\n  * @type {string}\n  * @default 'linear'\n  */\n  positionValueFunction: 'linear',\n};\n\nfunction percent(frac, num) {\n  return (frac / num);\n}\nfunction absPosition($handle, dir, clickPos, param) {\n  return Math.abs(($handle.position()[dir] + ($handle[param]() / 2)) - clickPos);\n}\nfunction baseLog(base, value) {\n  return Math.log(value)/Math.log(base)\n}\n\nexport {Slider};\n", "import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Sticky module.\n * @module foundation.sticky\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n */\n\nclass Sticky extends Plugin {\n  /**\n   * Creates a new instance of a sticky thing.\n   * @class\n   * @name Sticky\n   * @param {jQuery} element - jQuery object to make sticky.\n   * @param {Object} options - options object passed when creating the element programmatically.\n   */\n  _setup(element, options) {\n    this.$element = element;\n    this.options = $.extend({}, Sticky.defaults, this.$element.data(), options);\n    this.className = 'Sticky'; // ie9 back compat\n\n    // Triggers init is idempotent, just need to make sure it is initialized\n    Triggers.init($);\n\n    this._init();\n  }\n\n  /**\n   * Initializes the sticky element by adding classes, getting/setting dimensions, breakpoints and attributes\n   * @function\n   * @private\n   */\n  _init() {\n    MediaQuery._init();\n\n    var $parent = this.$element.parent('[data-sticky-container]'),\n        id = this.$element[0].id || GetYoDigits(6, 'sticky'),\n        _this = this;\n\n    if($parent.length){\n      this.$container = $parent;\n    } else {\n      this.wasWrapped = true;\n      this.$element.wrap(this.options.container);\n      this.$container = this.$element.parent();\n    }\n    this.$container.addClass(this.options.containerClass);\n\n    this.$element.addClass(this.options.stickyClass).attr({ 'data-resize': id, 'data-mutate': id });\n    if (this.options.anchor !== '') {\n        $('#' + _this.options.anchor).attr({ 'data-mutate': id });\n    }\n\n    this.scrollCount = this.options.checkEvery;\n    this.isStuck = false;\n    this.onLoadListener = onLoad($(window), function () {\n      //We calculate the container height to have correct values for anchor points offset calculation.\n      _this.containerHeight = _this.$element.css(\"display\") === \"none\" ? 0 : _this.$element[0].getBoundingClientRect().height;\n      _this.$container.css('height', _this.containerHeight);\n      _this.elemHeight = _this.containerHeight;\n      if (_this.options.anchor !== '') {\n        _this.$anchor = $('#' + _this.options.anchor);\n      } else {\n        _this._parsePoints();\n      }\n\n      _this._setSizes(function () {\n        var scroll = window.pageYOffset;\n        _this._calc(false, scroll);\n        //Unstick the element will ensure that proper classes are set.\n        if (!_this.isStuck) {\n          _this._removeSticky((scroll >= _this.topPoint) ? false : true);\n        }\n      });\n      _this._events(id.split('-').reverse().join('-'));\n    });\n  }\n\n  /**\n   * If using multiple elements as anchors, calculates the top and bottom pixel values the sticky thing should stick and unstick on.\n   * @function\n   * @private\n   */\n  _parsePoints() {\n    var top = this.options.topAnchor === \"\" ? 1 : this.options.topAnchor,\n        btm = this.options.btmAnchor === \"\" ? document.documentElement.scrollHeight : this.options.btmAnchor,\n        pts = [top, btm],\n        breaks = {};\n    for (var i = 0, len = pts.length; i < len && pts[i]; i++) {\n      var pt;\n      if (typeof pts[i] === 'number') {\n        pt = pts[i];\n      } else {\n        var place = pts[i].split(':'),\n            anchor = $(`#${place[0]}`);\n\n        pt = anchor.offset().top;\n        if (place[1] && place[1].toLowerCase() === 'bottom') {\n          pt += anchor[0].getBoundingClientRect().height;\n        }\n      }\n      breaks[i] = pt;\n    }\n\n\n    this.points = breaks;\n    return;\n  }\n\n  /**\n   * Adds event handlers for the scrolling element.\n   * @private\n   * @param {String} id - pseudo-random id for unique scroll event listener.\n   */\n  _events(id) {\n    var _this = this,\n        scrollListener = this.scrollListener = `scroll.zf.${id}`;\n    if (this.isOn) { return; }\n    if (this.canStick) {\n      this.isOn = true;\n      $(window).off(scrollListener)\n               .on(scrollListener, function() {\n                 if (_this.scrollCount === 0) {\n                   _this.scrollCount = _this.options.checkEvery;\n                   _this._setSizes(function() {\n                     _this._calc(false, window.pageYOffset);\n                   });\n                 } else {\n                   _this.scrollCount--;\n                   _this._calc(false, window.pageYOffset);\n                 }\n              });\n    }\n\n    this.$element.off('resizeme.zf.trigger')\n                 .on('resizeme.zf.trigger', function() {\n                    _this._eventsHandler(id);\n    });\n\n    this.$element.on('mutateme.zf.trigger', function () {\n        _this._eventsHandler(id);\n    });\n\n    if(this.$anchor) {\n      this.$anchor.on('mutateme.zf.trigger', function () {\n          _this._eventsHandler(id);\n      });\n    }\n  }\n\n  /**\n   * Handler for events.\n   * @private\n   * @param {String} id - pseudo-random id for unique scroll event listener.\n   */\n  _eventsHandler(id) {\n       var _this = this,\n        scrollListener = this.scrollListener = `scroll.zf.${id}`;\n\n       _this._setSizes(function() {\n       _this._calc(false);\n       if (_this.canStick) {\n         if (!_this.isOn) {\n           _this._events(id);\n         }\n       } else if (_this.isOn) {\n         _this._pauseListeners(scrollListener);\n       }\n     });\n  }\n\n  /**\n   * Removes event handlers for scroll and change events on anchor.\n   * @fires Sticky#pause\n   * @param {String} scrollListener - unique, namespaced scroll listener attached to `window`\n   */\n  _pauseListeners(scrollListener) {\n    this.isOn = false;\n    $(window).off(scrollListener);\n\n    /**\n     * Fires when the plugin is paused due to resize event shrinking the view.\n     * @event Sticky#pause\n     * @private\n     */\n     this.$element.trigger('pause.zf.sticky');\n  }\n\n  /**\n   * Called on every `scroll` event and on `_init`\n   * fires functions based on booleans and cached values\n   * @param {Boolean} checkSizes - true if plugin should recalculate sizes and breakpoints.\n   * @param {Number} scroll - current scroll position passed from scroll event cb function. If not passed, defaults to `window.pageYOffset`.\n   */\n  _calc(checkSizes, scroll) {\n    if (checkSizes) { this._setSizes(); }\n\n    if (!this.canStick) {\n      if (this.isStuck) {\n        this._removeSticky(true);\n      }\n      return false;\n    }\n\n    if (!scroll) { scroll = window.pageYOffset; }\n\n    if (scroll >= this.topPoint) {\n      if (scroll <= this.bottomPoint) {\n        if (!this.isStuck) {\n          this._setSticky();\n        }\n      } else {\n        if (this.isStuck) {\n          this._removeSticky(false);\n        }\n      }\n    } else {\n      if (this.isStuck) {\n        this._removeSticky(true);\n      }\n    }\n  }\n\n  /**\n   * Causes the $element to become stuck.\n   * Adds `position: fixed;`, and helper classes.\n   * @fires Sticky#stuckto\n   * @function\n   * @private\n   */\n  _setSticky() {\n    var _this = this,\n        stickTo = this.options.stickTo,\n        mrgn = stickTo === 'top' ? 'marginTop' : 'marginBottom',\n        notStuckTo = stickTo === 'top' ? 'bottom' : 'top',\n        css = {};\n\n    css[mrgn] = `${this.options[mrgn]}em`;\n    css[stickTo] = 0;\n    css[notStuckTo] = 'auto';\n    this.isStuck = true;\n    this.$element.removeClass(`is-anchored is-at-${notStuckTo}`)\n                 .addClass(`is-stuck is-at-${stickTo}`)\n                 .css(css)\n                 /**\n                  * Fires when the $element has become `position: fixed;`\n                  * Namespaced to `top` or `bottom`, e.g. `sticky.zf.stuckto:top`\n                  * @event Sticky#stuckto\n                  */\n                 .trigger(`sticky.zf.stuckto:${stickTo}`);\n    this.$element.on(\"transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd\", function() {\n      _this._setSizes();\n    });\n  }\n\n  /**\n   * Causes the $element to become unstuck.\n   * Removes `position: fixed;`, and helper classes.\n   * Adds other helper classes.\n   * @param {Boolean} isTop - tells the function if the $element should anchor to the top or bottom of its $anchor element.\n   * @fires Sticky#unstuckfrom\n   * @private\n   */\n  _removeSticky(isTop) {\n    var stickTo = this.options.stickTo,\n        stickToTop = stickTo === 'top',\n        css = {},\n        anchorPt = (this.points ? this.points[1] - this.points[0] : this.anchorHeight) - this.elemHeight,\n        mrgn = stickToTop ? 'marginTop' : 'marginBottom',\n        topOrBottom = isTop ? 'top' : 'bottom';\n\n    css[mrgn] = 0;\n\n    css.bottom = 'auto';\n    if(isTop) {\n      css.top = 0;\n    } else {\n      css.top = anchorPt;\n    }\n\n    this.isStuck = false;\n    this.$element.removeClass(`is-stuck is-at-${stickTo}`)\n                 .addClass(`is-anchored is-at-${topOrBottom}`)\n                 .css(css)\n                 /**\n                  * Fires when the $element has become anchored.\n                  * Namespaced to `top` or `bottom`, e.g. `sticky.zf.unstuckfrom:bottom`\n                  * @event Sticky#unstuckfrom\n                  */\n                 .trigger(`sticky.zf.unstuckfrom:${topOrBottom}`);\n  }\n\n  /**\n   * Sets the $element and $container sizes for plugin.\n   * Calls `_setBreakPoints`.\n   * @param {Function} cb - optional callback function to fire on completion of `_setBreakPoints`.\n   * @private\n   */\n  _setSizes(cb) {\n    this.canStick = MediaQuery.is(this.options.stickyOn);\n    if (!this.canStick) {\n      if (cb && typeof cb === 'function') { cb(); }\n    }\n\n    var newElemWidth = this.$container[0].getBoundingClientRect().width,\n      comp = window.getComputedStyle(this.$container[0]),\n      pdngl = parseInt(comp['padding-left'], 10),\n      pdngr = parseInt(comp['padding-right'], 10);\n\n    if (this.$anchor && this.$anchor.length) {\n      this.anchorHeight = this.$anchor[0].getBoundingClientRect().height;\n    } else {\n      this._parsePoints();\n    }\n\n    this.$element.css({\n      'max-width': `${newElemWidth - pdngl - pdngr}px`\n    });\n\n    // Recalculate the height only if it is \"dynamic\"\n    if (this.options.dynamicHeight || !this.containerHeight) {\n      // Get the sticked element height and apply it to the container to \"hold the place\"\n      var newContainerHeight = this.$element[0].getBoundingClientRect().height || this.containerHeight;\n      newContainerHeight = this.$element.css(\"display\") === \"none\" ? 0 : newContainerHeight;\n      this.$container.css('height', newContainerHeight);\n      this.containerHeight = newContainerHeight;\n    }\n    this.elemHeight = this.containerHeight;\n\n    if (!this.isStuck) {\n      if (this.$element.hasClass('is-at-bottom')) {\n        var anchorPt = (this.points ? this.points[1] - this.$container.offset().top : this.anchorHeight) - this.elemHeight;\n        this.$element.css('top', anchorPt);\n      }\n    }\n\n    this._setBreakPoints(this.containerHeight, function() {\n      if (cb && typeof cb === 'function') { cb(); }\n    });\n  }\n\n  /**\n   * Sets the upper and lower breakpoints for the element to become sticky/unsticky.\n   * @param {Number} elemHeight - px value for sticky.$element height, calculated by `_setSizes`.\n   * @param {Function} cb - optional callback function to be called on completion.\n   * @private\n   */\n  _setBreakPoints(elemHeight, cb) {\n    if (!this.canStick) {\n      if (cb && typeof cb === 'function') { cb(); }\n      else { return false; }\n    }\n    var mTop = emCalc(this.options.marginTop),\n        mBtm = emCalc(this.options.marginBottom),\n        topPoint = this.points ? this.points[0] : this.$anchor.offset().top,\n        bottomPoint = this.points ? this.points[1] : topPoint + this.anchorHeight,\n        // topPoint = this.$anchor.offset().top || this.points[0],\n        // bottomPoint = topPoint + this.anchorHeight || this.points[1],\n        winHeight = window.innerHeight;\n\n    if (this.options.stickTo === 'top') {\n      topPoint -= mTop;\n      bottomPoint -= (elemHeight + mTop);\n    } else if (this.options.stickTo === 'bottom') {\n      topPoint -= (winHeight - (elemHeight + mBtm));\n      bottomPoint -= (winHeight - mBtm);\n    } else {\n      //this would be the stickTo: both option... tricky\n    }\n\n    this.topPoint = topPoint;\n    this.bottomPoint = bottomPoint;\n\n    if (cb && typeof cb === 'function') { cb(); }\n  }\n\n  /**\n   * Destroys the current sticky element.\n   * Resets the element to the top position first.\n   * Removes event listeners, JS-added css properties and classes, and unwraps the $element if the JS added the $container.\n   * @function\n   */\n  _destroy() {\n    this._removeSticky(true);\n\n    this.$element.removeClass(`${this.options.stickyClass} is-anchored is-at-top`)\n                 .css({\n                   height: '',\n                   top: '',\n                   bottom: '',\n                   'max-width': ''\n                 })\n                 .off('resizeme.zf.trigger')\n                 .off('mutateme.zf.trigger');\n    if (this.$anchor && this.$anchor.length) {\n      this.$anchor.off('change.zf.sticky');\n    }\n    if (this.scrollListener) $(window).off(this.scrollListener)\n    if (this.onLoadListener) $(window).off(this.onLoadListener)\n\n    if (this.wasWrapped) {\n      this.$element.unwrap();\n    } else {\n      this.$container.removeClass(this.options.containerClass)\n                     .css({\n                       height: ''\n                     });\n    }\n  }\n}\n\nSticky.defaults = {\n  /**\n   * Customizable container template. Add your own classes for styling and sizing.\n   * @option\n   * @type {string}\n   * @default '&lt;div data-sticky-container&gt;&lt;/div&gt;'\n   */\n  container: '<div data-sticky-container></div>',\n  /**\n   * Location in the view the element sticks to. Can be `'top'` or `'bottom'`.\n   * @option\n   * @type {string}\n   * @default 'top'\n   */\n  stickTo: 'top',\n  /**\n   * If anchored to a single element, the id of that element.\n   * @option\n   * @type {string}\n   * @default ''\n   */\n  anchor: '',\n  /**\n   * If using more than one element as anchor points, the id of the top anchor.\n   * @option\n   * @type {string}\n   * @default ''\n   */\n  topAnchor: '',\n  /**\n   * If using more than one element as anchor points, the id of the bottom anchor.\n   * @option\n   * @type {string}\n   * @default ''\n   */\n  btmAnchor: '',\n  /**\n   * Margin, in `em`'s to apply to the top of the element when it becomes sticky.\n   * @option\n   * @type {number}\n   * @default 1\n   */\n  marginTop: 1,\n  /**\n   * Margin, in `em`'s to apply to the bottom of the element when it becomes sticky.\n   * @option\n   * @type {number}\n   * @default 1\n   */\n  marginBottom: 1,\n  /**\n   * Breakpoint string that is the minimum screen size an element should become sticky.\n   * @option\n   * @type {string}\n   * @default 'medium'\n   */\n  stickyOn: 'medium',\n  /**\n   * Class applied to sticky element, and removed on destruction. Foundation defaults to `sticky`.\n   * @option\n   * @type {string}\n   * @default 'sticky'\n   */\n  stickyClass: 'sticky',\n  /**\n   * Class applied to sticky container. Foundation defaults to `sticky-container`.\n   * @option\n   * @type {string}\n   * @default 'sticky-container'\n   */\n  containerClass: 'sticky-container',\n  /**\n   * If true (by default), keep the sticky container the same height as the element. Otherwise, the container height is set once and does not change.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  dynamicHeight: true,\n  /**\n   * Number of scroll events between the plugin's recalculating sticky points. Setting it to `0` will cause it to recalc every scroll event, setting it to `-1` will prevent recalc on scroll.\n   * @option\n   * @type {number}\n   * @default -1\n   */\n  checkEvery: -1\n};\n\n/**\n * Helper function to calculate em values\n * @param Number {em} - number of em's to calculate into pixels\n */\nfunction emCalc(em) {\n  return parseInt(window.getComputedStyle(document.body, null).fontSize, 10) * em;\n}\n\nexport {Sticky};\n", "import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { onImagesLoaded } from './foundation.util.imageLoader';\n/**\n * Tabs module.\n * @module foundation.tabs\n * @requires foundation.util.keyboard\n * @requires foundation.util.imageLoader if tabs contain images\n */\n\nclass Tabs extends Plugin {\n  /**\n   * Creates a new instance of tabs.\n   * @class\n   * @name Tabs\n   * @fires Tabs#init\n   * @param {jQuery} element - jQuery object to make into tabs.\n   * @param {Object} options - Overrides to the default plugin settings.\n   */\n  _setup(element, options) {\n    this.$element = element;\n    this.options = $.extend({}, Tabs.defaults, this.$element.data(), options);\n    this.className = 'Tabs'; // ie9 back compat\n\n    this._init();\n    Keyboard.register('Tabs', {\n      'ENTER': 'open',\n      'SPACE': 'open',\n      'ARROW_RIGHT': 'next',\n      'ARROW_UP': 'previous',\n      'ARROW_DOWN': 'next',\n      'ARROW_LEFT': 'previous'\n      // 'TAB': 'next',\n      // 'SHIFT_TAB': 'previous'\n    });\n  }\n\n  /**\n   * Initializes the tabs by showing and focusing (if autoFocus=true) the preset active tab.\n   * @private\n   */\n  _init() {\n    var _this = this;\n    this._isInitializing = true;\n\n    this.$element.attr({'role': 'tablist'});\n    this.$tabTitles = this.$element.find(`.${this.options.linkClass}`);\n    this.$tabContent = $(`[data-tabs-content=\"${this.$element[0].id}\"]`);\n\n    this.$tabTitles.each(function(){\n      var $elem = $(this),\n          $link = $elem.find('a'),\n          isActive = $elem.hasClass(`${_this.options.linkActiveClass}`),\n          hash = $link.attr('data-tabs-target') || $link[0].hash.slice(1),\n          linkId = $link[0].id ? $link[0].id : `${hash}-label`,\n          $tabContent = $(`#${hash}`);\n\n      $elem.attr({'role': 'presentation'});\n\n      $link.attr({\n        'role': 'tab',\n        'aria-controls': hash,\n        'aria-selected': isActive,\n        'id': linkId,\n        'tabindex': isActive ? '0' : '-1'\n      });\n\n      $tabContent.attr({\n        'role': 'tabpanel',\n        'aria-labelledby': linkId\n      });\n\n      // Save up the initial hash to return to it later when going back in history\n      if (isActive) {\n        _this._initialAnchor = `#${hash}`;\n      }\n\n      if(!isActive) {\n        $tabContent.attr('aria-hidden', 'true');\n      }\n\n      if(isActive && _this.options.autoFocus){\n        _this.onLoadListener = onLoad($(window), function() {\n          $('html, body').animate({ scrollTop: $elem.offset().top }, _this.options.deepLinkSmudgeDelay, () => {\n            $link.focus();\n          });\n        });\n      }\n    });\n\n    if(this.options.matchHeight) {\n      var $images = this.$tabContent.find('img');\n\n      if ($images.length) {\n        onImagesLoaded($images, this._setHeight.bind(this));\n      } else {\n        this._setHeight();\n      }\n    }\n\n     // Current context-bound function to open tabs on page load or history hashchange\n    this._checkDeepLink = () => {\n      var anchor = window.location.hash;\n\n      if (!anchor.length) {\n        // If we are still initializing and there is no anchor, then there is nothing to do\n        if (this._isInitializing) return;\n        // Otherwise, move to the initial anchor\n        if (this._initialAnchor) anchor = this._initialAnchor;\n      }\n\n      var anchorNoHash = anchor.indexOf('#') >= 0 ? anchor.slice(1) : anchor;\n      var $anchor = anchorNoHash && $(`#${anchorNoHash}`);\n      var $link = anchor && this.$element.find(`[href$=\"${anchor}\"],[data-tabs-target=\"${anchorNoHash}\"]`).first();\n      // Whether the anchor element that has been found is part of this element\n      var isOwnAnchor = !!($anchor.length && $link.length);\n\n      if (isOwnAnchor) {\n        // If there is an anchor for the hash, select it\n        if ($anchor && $anchor.length && $link && $link.length) {\n          this.selectTab($anchor, true);\n        }\n        // Otherwise, collapse everything\n        else {\n          this._collapse();\n        }\n\n        // Roll up a little to show the titles\n        if (this.options.deepLinkSmudge) {\n          var offset = this.$element.offset();\n          $('html, body').animate({ scrollTop: offset.top - this.options.deepLinkSmudgeOffset}, this.options.deepLinkSmudgeDelay);\n        }\n\n        /**\n         * Fires when the plugin has deeplinked at pageload\n         * @event Tabs#deeplink\n         */\n        this.$element.trigger('deeplink.zf.tabs', [$link, $anchor]);\n      }\n    }\n\n    //use browser to open a tab, if it exists in this tabset\n    if (this.options.deepLink) {\n      this._checkDeepLink();\n    }\n\n    this._events();\n\n    this._isInitializing = false;\n  }\n\n  /**\n   * Adds event handlers for items within the tabs.\n   * @private\n   */\n  _events() {\n    this._addKeyHandler();\n    this._addClickHandler();\n    this._setHeightMqHandler = null;\n\n    if (this.options.matchHeight) {\n      this._setHeightMqHandler = this._setHeight.bind(this);\n\n      $(window).on('changed.zf.mediaquery', this._setHeightMqHandler);\n    }\n\n    if(this.options.deepLink) {\n      $(window).on('hashchange', this._checkDeepLink);\n    }\n  }\n\n  /**\n   * Adds click handlers for items within the tabs.\n   * @private\n   */\n  _addClickHandler() {\n    var _this = this;\n\n    this.$element\n      .off('click.zf.tabs')\n      .on('click.zf.tabs', `.${this.options.linkClass}`, function(e){\n        e.preventDefault();\n        _this._handleTabChange($(this));\n      });\n  }\n\n  /**\n   * Adds keyboard event handlers for items within the tabs.\n   * @private\n   */\n  _addKeyHandler() {\n    var _this = this;\n\n    this.$tabTitles.off('keydown.zf.tabs').on('keydown.zf.tabs', function(e){\n      if (e.which === 9) return;\n\n\n      var $element = $(this),\n        $elements = $element.parent('ul').children('li'),\n        $prevElement,\n        $nextElement;\n\n      $elements.each(function(i) {\n        if ($(this).is($element)) {\n          if (_this.options.wrapOnKeys) {\n            $prevElement = i === 0 ? $elements.last() : $elements.eq(i-1);\n            $nextElement = i === $elements.length -1 ? $elements.first() : $elements.eq(i+1);\n          } else {\n            $prevElement = $elements.eq(Math.max(0, i-1));\n            $nextElement = $elements.eq(Math.min(i+1, $elements.length-1));\n          }\n          return;\n        }\n      });\n\n      // handle keyboard event with keyboard util\n      Keyboard.handleKey(e, 'Tabs', {\n        open: function() {\n          $element.find('[role=\"tab\"]').focus();\n          _this._handleTabChange($element);\n        },\n        previous: function() {\n          $prevElement.find('[role=\"tab\"]').focus();\n          _this._handleTabChange($prevElement);\n        },\n        next: function() {\n          $nextElement.find('[role=\"tab\"]').focus();\n          _this._handleTabChange($nextElement);\n        },\n        handled: function() {\n          e.preventDefault();\n        }\n      });\n    });\n  }\n\n  /**\n   * Opens the tab `$targetContent` defined by `$target`. Collapses active tab.\n   * @param {jQuery} $target - Tab to open.\n   * @param {boolean} historyHandled - browser has already handled a history update\n   * @fires Tabs#change\n   * @function\n   */\n  _handleTabChange($target, historyHandled) {\n\n    // With `activeCollapse`, if the target is the active Tab, collapse it.\n    if ($target.hasClass(`${this.options.linkActiveClass}`)) {\n        if(this.options.activeCollapse) {\n            this._collapse();\n        }\n        return;\n    }\n\n    var $oldTab = this.$element.\n          find(`.${this.options.linkClass}.${this.options.linkActiveClass}`),\n          $tabLink = $target.find('[role=\"tab\"]'),\n          target = $tabLink.attr('data-tabs-target'),\n          anchor = target && target.length ? `#${target}` : $tabLink[0].hash,\n          $targetContent = this.$tabContent.find(anchor);\n\n    //close old tab\n    this._collapseTab($oldTab);\n\n    //open new tab\n    this._openTab($target);\n\n    //either replace or update browser history\n    if (this.options.deepLink && !historyHandled) {\n      if (this.options.updateHistory) {\n        history.pushState({}, '', anchor);\n      } else {\n        history.replaceState({}, '', anchor);\n      }\n    }\n\n    /**\n     * Fires when the plugin has successfully changed tabs.\n     * @event Tabs#change\n     */\n    this.$element.trigger('change.zf.tabs', [$target, $targetContent]);\n\n    //fire to children a mutation event\n    $targetContent.find(\"[data-mutate]\").trigger(\"mutateme.zf.trigger\");\n  }\n\n  /**\n   * Opens the tab `$targetContent` defined by `$target`.\n   * @param {jQuery} $target - Tab to open.\n   * @function\n   */\n  _openTab($target) {\n      var $tabLink = $target.find('[role=\"tab\"]'),\n          hash = $tabLink.attr('data-tabs-target') || $tabLink[0].hash.slice(1),\n          $targetContent = this.$tabContent.find(`#${hash}`);\n\n      $target.addClass(`${this.options.linkActiveClass}`);\n\n      $tabLink.attr({\n        'aria-selected': 'true',\n        'tabindex': '0'\n      });\n\n      $targetContent\n        .addClass(`${this.options.panelActiveClass}`).removeAttr('aria-hidden');\n  }\n\n  /**\n   * Collapses `$targetContent` defined by `$target`.\n   * @param {jQuery} $target - Tab to collapse.\n   * @function\n   */\n  _collapseTab($target) {\n    var $targetAnchor = $target\n      .removeClass(`${this.options.linkActiveClass}`)\n      .find('[role=\"tab\"]')\n      .attr({\n        'aria-selected': 'false',\n        'tabindex': -1\n      });\n\n    $(`#${$targetAnchor.attr('aria-controls')}`)\n      .removeClass(`${this.options.panelActiveClass}`)\n      .attr({ 'aria-hidden': 'true' })\n  }\n\n  /**\n   * Collapses the active Tab.\n   * @fires Tabs#collapse\n   * @function\n   */\n  _collapse() {\n    var $activeTab = this.$element.find(`.${this.options.linkClass}.${this.options.linkActiveClass}`);\n\n    if ($activeTab.length) {\n      this._collapseTab($activeTab);\n\n      /**\n      * Fires when the plugin has successfully collapsed tabs.\n      * @event Tabs#collapse\n      */\n      this.$element.trigger('collapse.zf.tabs', [$activeTab]);\n    }\n  }\n\n  /**\n   * Public method for selecting a content pane to display.\n   * @param {jQuery | String} elem - jQuery object or string of the id of the pane to display.\n   * @param {boolean} historyHandled - browser has already handled a history update\n   * @function\n   */\n  selectTab(elem, historyHandled) {\n    var idStr, hashIdStr;\n\n    if (typeof elem === 'object') {\n      idStr = elem[0].id;\n    } else {\n      idStr = elem;\n    }\n\n    if (idStr.indexOf('#') < 0) {\n      hashIdStr = `#${idStr}`;\n    } else {\n      hashIdStr = idStr;\n      idStr = idStr.slice(1);\n    }\n\n    var $target = this.$tabTitles.has(`[href$=\"${hashIdStr}\"],[data-tabs-target=\"${idStr}\"]`).first();\n\n    this._handleTabChange($target, historyHandled);\n  };\n\n  /**\n   * Sets the height of each panel to the height of the tallest panel.\n   * If enabled in options, gets called on media query change.\n   * If loading content via external source, can be called directly or with _reflow.\n   * If enabled with `data-match-height=\"true\"`, tabs sets to equal height\n   * @function\n   * @private\n   */\n  _setHeight() {\n    var max = 0,\n        _this = this; // Lock down the `this` value for the root tabs object\n\n    if (!this.$tabContent) {\n      return;\n    }\n\n    this.$tabContent\n      .find(`.${this.options.panelClass}`)\n      .css('min-height', '')\n      .each(function() {\n\n        var panel = $(this),\n            isActive = panel.hasClass(`${_this.options.panelActiveClass}`); // get the options from the parent instead of trying to get them from the child\n\n        if (!isActive) {\n          panel.css({'visibility': 'hidden', 'display': 'block'});\n        }\n\n        var temp = this.getBoundingClientRect().height;\n\n        if (!isActive) {\n          panel.css({\n            'visibility': '',\n            'display': ''\n          });\n        }\n\n        max = temp > max ? temp : max;\n      })\n      .css('min-height', `${max}px`);\n  }\n\n  /**\n   * Destroys an instance of tabs.\n   * @fires Tabs#destroyed\n   */\n  _destroy() {\n    this.$element\n      .find(`.${this.options.linkClass}`)\n      .off('.zf.tabs').hide().end()\n      .find(`.${this.options.panelClass}`)\n      .hide();\n\n    if (this.options.matchHeight) {\n      if (this._setHeightMqHandler != null) {\n         $(window).off('changed.zf.mediaquery', this._setHeightMqHandler);\n      }\n    }\n\n    if (this.options.deepLink) {\n      $(window).off('hashchange', this._checkDeepLink);\n    }\n\n    if (this.onLoadListener) {\n      $(window).off(this.onLoadListener);\n    }\n  }\n}\n\nTabs.defaults = {\n  /**\n   * Link the location hash to the active pane.\n   * Set the location hash when the active pane changes, and open the corresponding pane when the location changes.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  deepLink: false,\n\n  /**\n   * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the tab panel is visible\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  deepLinkSmudge: false,\n\n  /**\n   * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment\n   * @option\n   * @type {number}\n   * @default 300\n   */\n  deepLinkSmudgeDelay: 300,\n\n  /**\n   * If `deepLinkSmudge` is enabled, animation offset from the top for the deep link adjustment\n   * @option\n   * @type {number}\n   * @default 0\n   */\n  deepLinkSmudgeOffset: 0,\n\n  /**\n   * If `deepLink` is enabled, update the browser history with the open tab\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  updateHistory: false,\n\n  /**\n   * Allows the window to scroll to content of active pane on load.\n   * Not recommended if more than one tab panel per page.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  autoFocus: false,\n\n  /**\n   * Allows keyboard input to 'wrap' around the tab links.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  wrapOnKeys: true,\n\n  /**\n   * Allows the tab content panes to match heights if set to true.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  matchHeight: false,\n\n  /**\n   * Allows active tabs to collapse when clicked.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  activeCollapse: false,\n\n  /**\n   * Class applied to `li`'s in tab link list.\n   * @option\n   * @type {string}\n   * @default 'tabs-title'\n   */\n  linkClass: 'tabs-title',\n\n  /**\n   * Class applied to the active `li` in tab link list.\n   * @option\n   * @type {string}\n   * @default 'is-active'\n   */\n  linkActiveClass: 'is-active',\n\n  /**\n   * Class applied to the content containers.\n   * @option\n   * @type {string}\n   * @default 'tabs-panel'\n   */\n  panelClass: 'tabs-panel',\n\n  /**\n   * Class applied to the active content container.\n   * @option\n   * @type {string}\n   * @default 'is-active'\n   */\n  panelActiveClass: 'is-active'\n};\n\nexport {Tabs};\n", "import $ from 'jquery';\nimport { Motion } from './foundation.util.motion';\nimport { Plugin } from './foundation.core.plugin';\nimport { RegExpEscape } from './foundation.core.utils';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Toggler module.\n * @module foundation.toggler\n * @requires foundation.util.motion\n * @requires foundation.util.triggers\n */\n\nclass Toggler extends Plugin {\n  /**\n   * Creates a new instance of Toggler.\n   * @class\n   * @name Toggler\n   * @fires Toggler#init\n   * @param {Object} element - jQuery object to add the trigger to.\n   * @param {Object} options - Overrides to the default plugin settings.\n   */\n  _setup(element, options) {\n    this.$element = element;\n    this.options = $.extend({}, Toggler.defaults, element.data(), options);\n    this.className = '';\n    this.className = 'Toggler'; // ie9 back compat\n\n    // Triggers init is idempotent, just need to make sure it is initialized\n    Triggers.init($);\n\n    this._init();\n    this._events();\n  }\n\n  /**\n   * Initializes the Toggler plugin by parsing the toggle class from data-toggler, or animation classes from data-animate.\n   * @function\n   * @private\n   */\n  _init() {\n    // Collect triggers to set ARIA attributes to\n    var id = this.$element[0].id,\n      $triggers = $(`[data-open~=\"${id}\"], [data-close~=\"${id}\"], [data-toggle~=\"${id}\"]`);\n\n    var input;\n    // Parse animation classes if they were set\n    if (this.options.animate) {\n      input = this.options.animate.split(' ');\n\n      this.animationIn = input[0];\n      this.animationOut = input[1] || null;\n\n      // - aria-expanded: according to the element visibility.\n      $triggers.attr('aria-expanded', !this.$element.is(':hidden'));\n    }\n    // Otherwise, parse toggle class\n    else {\n      input = this.options.toggler;\n      if (typeof input !== 'string' || !input.length) {\n        throw new Error(`The 'toggler' option containing the target class is required, got \"${input}\"`);\n      }\n      // Allow for a . at the beginning of the string\n      this.className = input[0] === '.' ? input.slice(1) : input;\n\n      // - aria-expanded: according to the elements class set.\n      $triggers.attr('aria-expanded', this.$element.hasClass(this.className));\n    }\n\n    // - aria-controls: adding the element id to it if not already in it.\n    $triggers.each((index, trigger) => {\n      const $trigger = $(trigger);\n      const controls = $trigger.attr('aria-controls') || '';\n\n      const containsId = new RegExp(`\\\\b${RegExpEscape(id)}\\\\b`).test(controls);\n      if (!containsId) $trigger.attr('aria-controls', controls ? `${controls} ${id}` : id);\n    });\n  }\n\n  /**\n   * Initializes events for the toggle trigger.\n   * @function\n   * @private\n   */\n  _events() {\n    this.$element.off('toggle.zf.trigger').on('toggle.zf.trigger', this.toggle.bind(this));\n  }\n\n  /**\n   * Toggles the target class on the target element. An event is fired from the original trigger depending on if the resultant state was \"on\" or \"off\".\n   * @function\n   * @fires Toggler#on\n   * @fires Toggler#off\n   */\n  toggle() {\n    this[ this.options.animate ? '_toggleAnimate' : '_toggleClass']();\n  }\n\n  _toggleClass() {\n    this.$element.toggleClass(this.className);\n\n    var isOn = this.$element.hasClass(this.className);\n    if (isOn) {\n      /**\n       * Fires if the target element has the class after a toggle.\n       * @event Toggler#on\n       */\n      this.$element.trigger('on.zf.toggler');\n    }\n    else {\n      /**\n       * Fires if the target element does not have the class after a toggle.\n       * @event Toggler#off\n       */\n      this.$element.trigger('off.zf.toggler');\n    }\n\n    this._updateARIA(isOn);\n    this.$element.find('[data-mutate]').trigger('mutateme.zf.trigger');\n  }\n\n  _toggleAnimate() {\n    var _this = this;\n\n    if (this.$element.is(':hidden')) {\n      Motion.animateIn(this.$element, this.animationIn, function() {\n        _this._updateARIA(true);\n        this.trigger('on.zf.toggler');\n        this.find('[data-mutate]').trigger('mutateme.zf.trigger');\n      });\n    }\n    else {\n      Motion.animateOut(this.$element, this.animationOut, function() {\n        _this._updateARIA(false);\n        this.trigger('off.zf.toggler');\n        this.find('[data-mutate]').trigger('mutateme.zf.trigger');\n      });\n    }\n  }\n\n  _updateARIA(isOn) {\n    var id = this.$element[0].id;\n    $(`[data-open=\"${id}\"], [data-close=\"${id}\"], [data-toggle=\"${id}\"]`)\n      .attr({\n        'aria-expanded': isOn ? true : false\n      });\n  }\n\n  /**\n   * Destroys the instance of Toggler on the element.\n   * @function\n   */\n  _destroy() {\n    this.$element.off('.zf.toggler');\n  }\n}\n\nToggler.defaults = {\n  /**\n   * Class of the element to toggle. It can be provided with or without \".\"\n   * @option\n   * @type {string}\n   */\n  toggler: undefined,\n  /**\n   * Tells the plugin if the element should animated when toggled.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  animate: false\n};\n\nexport {Toggler};\n", "import $ from 'jquery';\nimport { GetYoDigits, ignoreMousedisappear } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Triggers } from './foundation.util.triggers';\nimport { Positionable } from './foundation.positionable';\n\n/**\n * Tooltip module.\n * @module foundation.tooltip\n * @requires foundation.util.box\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.triggers\n */\n\nclass Tooltip extends Positionable {\n  /**\n   * Creates a new instance of a Tooltip.\n   * @class\n   * @name Tooltip\n   * @fires Tooltip#init\n   * @param {jQuery} element - jQuery object to attach a tooltip to.\n   * @param {Object} options - object to extend the default configuration.\n   */\n  _setup(element, options) {\n    this.$element = element;\n    this.options = $.extend({}, Tooltip.defaults, this.$element.data(), options);\n    this.className = 'Tooltip'; // ie9 back compat\n\n    this.isActive = false;\n    this.isClick = false;\n\n    // Triggers init is idempotent, just need to make sure it is initialized\n    Triggers.init($);\n\n    this._init();\n  }\n\n  /**\n   * Initializes the tooltip by setting the creating the tip element, adding it's text, setting private variables and setting attributes on the anchor.\n   * @private\n   */\n  _init() {\n    MediaQuery._init();\n    var elemId = this.$element.attr('aria-describedby') || GetYoDigits(6, 'tooltip');\n\n    this.options.tipText = this.options.tipText || this.$element.attr('title');\n    this.template = this.options.template ? $(this.options.template) : this._buildTemplate(elemId);\n\n    if (this.options.allowHtml) {\n      this.template.appendTo(document.body)\n        .html(this.options.tipText)\n        .hide();\n    } else {\n      this.template.appendTo(document.body)\n        .text(this.options.tipText)\n        .hide();\n    }\n\n    this.$element.attr({\n      'title': '',\n      'aria-describedby': elemId,\n      'data-yeti-box': elemId,\n      'data-toggle': elemId,\n      'data-resize': elemId\n    }).addClass(this.options.triggerClass);\n\n    super._init();\n    this._events();\n  }\n\n  _getDefaultPosition() {\n    // handle legacy classnames\n    var elementClassName = this.$element[0].className;\n    if (this.$element[0] instanceof SVGElement) {\n        elementClassName = elementClassName.baseVal;\n    }\n    var position = elementClassName.match(/\\b(top|left|right|bottom)\\b/g);\n    return position ? position[0] : 'top';\n  }\n\n  _getDefaultAlignment() {\n    return 'center';\n  }\n\n  _getHOffset() {\n    if(this.position === 'left' || this.position === 'right') {\n      return this.options.hOffset + this.options.tooltipWidth;\n    } else {\n      return this.options.hOffset\n    }\n  }\n\n  _getVOffset() {\n    if(this.position === 'top' || this.position === 'bottom') {\n      return this.options.vOffset + this.options.tooltipHeight;\n    } else {\n      return this.options.vOffset\n    }\n  }\n\n  /**\n   * builds the tooltip element, adds attributes, and returns the template.\n   * @private\n   */\n  _buildTemplate(id) {\n    var templateClasses = (`${this.options.tooltipClass} ${this.options.templateClasses}`).trim();\n    var $template =  $('<div></div>').addClass(templateClasses).attr({\n      'role': 'tooltip',\n      'aria-hidden': true,\n      'data-is-active': false,\n      'data-is-focus': false,\n      'id': id\n    });\n    return $template;\n  }\n\n  /**\n   * sets the position class of an element and recursively calls itself until there are no more possible positions to attempt, or the tooltip element is no longer colliding.\n   * if the tooltip is larger than the screen width, default to full width - any user selected margin\n   * @private\n   */\n  _setPosition() {\n    super._setPosition(this.$element, this.template);\n  }\n\n  /**\n   * reveals the tooltip, and fires an event to close any other open tooltips on the page\n   * @fires Tooltip#closeme\n   * @fires Tooltip#show\n   * @function\n   */\n  show() {\n    if (this.options.showOn !== 'all' && !MediaQuery.is(this.options.showOn)) {\n      // console.error('The screen is too small to display this tooltip');\n      return false;\n    }\n\n    var _this = this;\n    this.template.css('visibility', 'hidden').show();\n    this._setPosition();\n    this.template.removeClass('top bottom left right').addClass(this.position)\n    this.template.removeClass('align-top align-bottom align-left align-right align-center').addClass('align-' + this.alignment);\n\n    /**\n     * Fires to close all other open tooltips on the page\n     * @event Closeme#tooltip\n     */\n    this.$element.trigger('closeme.zf.tooltip', this.template.attr('id'));\n\n\n    this.template.attr({\n      'data-is-active': true,\n      'aria-hidden': false\n    });\n    _this.isActive = true;\n    this.template.stop().hide().css('visibility', '').fadeIn(this.options.fadeInDuration, function() {\n      //maybe do stuff?\n    });\n    /**\n     * Fires when the tooltip is shown\n     * @event Tooltip#show\n     */\n    this.$element.trigger('show.zf.tooltip');\n  }\n\n  /**\n   * Hides the current tooltip, and resets the positioning class if it was changed due to collision\n   * @fires Tooltip#hide\n   * @function\n   */\n  hide() {\n    var _this = this;\n    this.template.stop().attr({\n      'aria-hidden': true,\n      'data-is-active': false\n    }).fadeOut(this.options.fadeOutDuration, function() {\n      _this.isActive = false;\n      _this.isClick = false;\n    });\n    /**\n     * fires when the tooltip is hidden\n     * @event Tooltip#hide\n     */\n    this.$element.trigger('hide.zf.tooltip');\n  }\n\n  /**\n   * adds event listeners for the tooltip and its anchor\n   * TODO combine some of the listeners like focus and mouseenter, etc.\n   * @private\n   */\n  _events() {\n    const _this = this;\n    const hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined');\n    var isFocus = false;\n\n    // `disableForTouch: Fully disable the tooltip on touch devices\n    if (hasTouch && this.options.disableForTouch) return;\n\n    if (!this.options.disableHover) {\n      this.$element\n      .on('mouseenter.zf.tooltip', function() {\n        if (!_this.isActive) {\n          _this.timeout = setTimeout(function() {\n            _this.show();\n          }, _this.options.hoverDelay);\n        }\n      })\n      .on('mouseleave.zf.tooltip', ignoreMousedisappear(function() {\n        clearTimeout(_this.timeout);\n        if (!isFocus || (_this.isClick && !_this.options.clickOpen)) {\n          _this.hide();\n        }\n      }));\n    }\n\n    if (hasTouch) {\n      this.$element\n      .on('tap.zf.tooltip touchend.zf.tooltip', function () {\n        _this.isActive ? _this.hide() : _this.show();\n      });\n    }\n\n    if (this.options.clickOpen) {\n      this.$element.on('mousedown.zf.tooltip', function() {\n        if (_this.isClick) {\n          //_this.hide();\n          // _this.isClick = false;\n        } else {\n          _this.isClick = true;\n          if ((_this.options.disableHover || !_this.$element.attr('tabindex')) && !_this.isActive) {\n            _this.show();\n          }\n        }\n      });\n    } else {\n      this.$element.on('mousedown.zf.tooltip', function() {\n        _this.isClick = true;\n      });\n    }\n\n    this.$element.on({\n      // 'toggle.zf.trigger': this.toggle.bind(this),\n      // 'close.zf.trigger': this.hide.bind(this)\n      'close.zf.trigger': this.hide.bind(this)\n    });\n\n    this.$element\n      .on('focus.zf.tooltip', function() {\n        isFocus = true;\n        if (_this.isClick) {\n          // If we're not showing open on clicks, we need to pretend a click-launched focus isn't\n          // a real focus, otherwise on hover and come back we get bad behavior\n          if(!_this.options.clickOpen) { isFocus = false; }\n          return false;\n        } else {\n          _this.show();\n        }\n      })\n\n      .on('focusout.zf.tooltip', function() {\n        isFocus = false;\n        _this.isClick = false;\n        _this.hide();\n      })\n\n      .on('resizeme.zf.trigger', function() {\n        if (_this.isActive) {\n          _this._setPosition();\n        }\n      });\n  }\n\n  /**\n   * adds a toggle method, in addition to the static show() & hide() functions\n   * @function\n   */\n  toggle() {\n    if (this.isActive) {\n      this.hide();\n    } else {\n      this.show();\n    }\n  }\n\n  /**\n   * Destroys an instance of tooltip, removes template element from the view.\n   * @function\n   */\n  _destroy() {\n    this.$element.attr('title', this.template.text())\n                 .off('.zf.trigger .zf.tooltip')\n                 .removeClass(this.options.triggerClass)\n                 .removeClass('top right left bottom')\n                 .removeAttr('aria-describedby data-disable-hover data-resize data-toggle data-tooltip data-yeti-box');\n\n    this.template.remove();\n  }\n}\n\nTooltip.defaults = {\n  /**\n   * Time, in ms, before a tooltip should open on hover.\n   * @option\n   * @type {number}\n   * @default 200\n   */\n  hoverDelay: 200,\n  /**\n   * Time, in ms, a tooltip should take to fade into view.\n   * @option\n   * @type {number}\n   * @default 150\n   */\n  fadeInDuration: 150,\n  /**\n   * Time, in ms, a tooltip should take to fade out of view.\n   * @option\n   * @type {number}\n   * @default 150\n   */\n  fadeOutDuration: 150,\n  /**\n   * Disables hover events from opening the tooltip if set to true\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  disableHover: false,\n  /**\n   * Disable the tooltip for touch devices.\n   * This can be useful to make elements with a tooltip on it trigger their\n   * action on the first tap instead of displaying the tooltip.\n   * @option\n   * @type {booelan}\n   * @default false\n   */\n  disableForTouch: false,\n  /**\n   * Optional addtional classes to apply to the tooltip template on init.\n   * @option\n   * @type {string}\n   * @default ''\n   */\n  templateClasses: '',\n  /**\n   * Non-optional class added to tooltip templates. Foundation default is 'tooltip'.\n   * @option\n   * @type {string}\n   * @default 'tooltip'\n   */\n  tooltipClass: 'tooltip',\n  /**\n   * Class applied to the tooltip anchor element.\n   * @option\n   * @type {string}\n   * @default 'has-tip'\n   */\n  triggerClass: 'has-tip',\n  /**\n   * Minimum breakpoint size at which to open the tooltip.\n   * @option\n   * @type {string}\n   * @default 'small'\n   */\n  showOn: 'small',\n  /**\n   * Custom template to be used to generate markup for tooltip.\n   * @option\n   * @type {string}\n   * @default ''\n   */\n  template: '',\n  /**\n   * Text displayed in the tooltip template on open.\n   * @option\n   * @type {string}\n   * @default ''\n   */\n  tipText: '',\n  touchCloseText: 'Tap to close.',\n  /**\n   * Allows the tooltip to remain open if triggered with a click or touch event.\n   * @option\n   * @type {boolean}\n   * @default true\n   */\n  clickOpen: true,\n  /**\n   * Position of tooltip. Can be left, right, bottom, top, or auto.\n   * @option\n   * @type {string}\n   * @default 'auto'\n   */\n  position: 'auto',\n  /**\n   * Alignment of tooltip relative to anchor. Can be left, right, bottom, top, center, or auto.\n   * @option\n   * @type {string}\n   * @default 'auto'\n   */\n  alignment: 'auto',\n  /**\n   * Allow overlap of container/window. If false, tooltip will first try to\n   * position as defined by data-position and data-alignment, but reposition if\n   * it would cause an overflow.  @option\n   * @type {boolean}\n   * @default false\n   */\n  allowOverlap: false,\n  /**\n   * Allow overlap of only the bottom of the container. This is the most common\n   * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n   * screen but not otherwise influence or break out of the container.\n   * Less common for tooltips.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  allowBottomOverlap: false,\n  /**\n   * Distance, in pixels, the template should push away from the anchor on the Y axis.\n   * @option\n   * @type {number}\n   * @default 0\n   */\n  vOffset: 0,\n  /**\n   * Distance, in pixels, the template should push away from the anchor on the X axis\n   * @option\n   * @type {number}\n   * @default 0\n   */\n  hOffset: 0,\n  /**\n   * Distance, in pixels, the template spacing auto-adjust for a vertical tooltip\n   * @option\n   * @type {number}\n   * @default 14\n   */\n  tooltipHeight: 14,\n  /**\n   * Distance, in pixels, the template spacing auto-adjust for a horizontal tooltip\n   * @option\n   * @type {number}\n   * @default 12\n   */\n  tooltipWidth: 12,\n    /**\n   * Allow HTML in tooltip. Warning: If you are loading user-generated content into tooltips,\n   * allowing HTML may open yourself up to XSS attacks.\n   * @option\n   * @type {boolean}\n   * @default false\n   */\n  allowHtml: false\n};\n\n/**\n * TODO utilize resize event trigger\n */\n\nexport {Tooltip};\n", "import $ from 'jquery';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin }from './foundation.core.plugin';\n\nimport { Accordion } from './foundation.accordion';\nimport { Tabs } from './foundation.tabs';\n\n// The plugin matches the plugin classes with these plugin instances.\nvar MenuPlugins = {\n  tabs: {\n    cssClass: 'tabs',\n    plugin:   Tabs,\n    open:     (plugin, target) => plugin.selectTab(target),\n    close:    null /* not supported */,\n    toggle:   null /* not supported */,\n  },\n  accordion: {\n    cssClass: 'accordion',\n    plugin:   Accordion,\n    open:     (plugin, target) => plugin.down($(target)),\n    close:    (plugin, target) => plugin.up($(target)),\n    toggle:   (plugin, target) => plugin.toggle($(target)),\n  }\n};\n\n\n/**\n * ResponsiveAccordionTabs module.\n * @module foundation.responsiveAccordionTabs\n * @requires foundation.util.motion\n * @requires foundation.accordion\n * @requires foundation.tabs\n */\n\nclass ResponsiveAccordionTabs extends Plugin{\n  constructor(element, options) {\n    super(element, options);\n    return this.options.reflow && this.storezfData || this;\n  }\n\n  /**\n   * Creates a new instance of a responsive accordion tabs.\n   * @class\n   * @name ResponsiveAccordionTabs\n   * @fires ResponsiveAccordionTabs#init\n   * @param {jQuery} element - jQuery object to make into Responsive Accordion Tabs.\n   * @param {Object} options - Overrides to the default plugin settings.\n   */\n  _setup(element, options) {\n    this.$element = $(element);\n    this.$element.data('zfPluginBase', this);\n    this.options = $.extend({}, ResponsiveAccordionTabs.defaults, this.$element.data(), options);\n\n    this.rules = this.$element.data('responsive-accordion-tabs');\n    this.currentMq = null;\n    this.currentRule = null;\n    this.currentPlugin = null;\n    this.className = 'ResponsiveAccordionTabs'; // ie9 back compat\n    if (!this.$element.attr('id')) {\n      this.$element.attr('id',GetYoDigits(6, 'responsiveaccordiontabs'));\n    }\n\n    this._init();\n    this._events();\n  }\n\n  /**\n   * Initializes the Menu by parsing the classes from the 'data-responsive-accordion-tabs' attribute on the element.\n   * @function\n   * @private\n   */\n  _init() {\n    MediaQuery._init();\n\n    // The first time an Interchange plugin is initialized, this.rules is converted from a string of \"classes\" to an object of rules\n    if (typeof this.rules === 'string') {\n      let rulesTree = {};\n\n      // Parse rules from \"classes\" pulled from data attribute\n      let rules = this.rules.split(' ');\n\n      // Iterate through every rule found\n      for (let i = 0; i < rules.length; i++) {\n        let rule = rules[i].split('-');\n        let ruleSize = rule.length > 1 ? rule[0] : 'small';\n        let rulePlugin = rule.length > 1 ? rule[1] : rule[0];\n\n        if (MenuPlugins[rulePlugin] !== null) {\n          rulesTree[ruleSize] = MenuPlugins[rulePlugin];\n        }\n      }\n\n      this.rules = rulesTree;\n    }\n\n    this._getAllOptions();\n\n    if (!$.isEmptyObject(this.rules)) {\n      this._checkMediaQueries();\n    }\n  }\n\n  _getAllOptions() {\n    //get all defaults and options\n    var _this = this;\n    _this.allOptions = {};\n    for (var key in MenuPlugins) {\n      if (MenuPlugins.hasOwnProperty(key)) {\n        var obj = MenuPlugins[key];\n        try {\n          var dummyPlugin = $('<ul></ul>');\n          var tmpPlugin = new obj.plugin(dummyPlugin,_this.options);\n          for (var keyKey in tmpPlugin.options) {\n            if (tmpPlugin.options.hasOwnProperty(keyKey) && keyKey !== 'zfPlugin') {\n              var objObj = tmpPlugin.options[keyKey];\n              _this.allOptions[keyKey] = objObj;\n            }\n          }\n          tmpPlugin.destroy();\n        }\n        catch(e) {\n          console.warn(`Warning: Problems getting Accordion/Tab options: ${e}`);\n        }\n      }\n    }\n  }\n\n  /**\n   * Initializes events for the Menu.\n   * @function\n   * @private\n   */\n  _events() {\n    this._changedZfMediaQueryHandler = this._checkMediaQueries.bind(this);\n    $(window).on('changed.zf.mediaquery', this._changedZfMediaQueryHandler);\n  }\n\n  /**\n   * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.\n   * @function\n   * @private\n   */\n  _checkMediaQueries() {\n    var matchedMq, _this = this;\n    // Iterate through each rule and find the last matching rule\n    $.each(this.rules, function(key) {\n      if (MediaQuery.atLeast(key)) {\n        matchedMq = key;\n      }\n    });\n\n    // No match? No dice\n    if (!matchedMq) return;\n\n    // Plugin already initialized? We good\n    if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return;\n\n    // Remove existing plugin-specific CSS classes\n    $.each(MenuPlugins, function(key, value) {\n      _this.$element.removeClass(value.cssClass);\n    });\n\n    // Add the CSS class for the new plugin\n    this.$element.addClass(this.rules[matchedMq].cssClass);\n\n    // Create an instance of the new plugin\n    if (this.currentPlugin) {\n      //don't know why but on nested elements data zfPlugin get's lost\n      if (!this.currentPlugin.$element.data('zfPlugin') && this.storezfData) this.currentPlugin.$element.data('zfPlugin',this.storezfData);\n      this.currentPlugin.destroy();\n    }\n    this._handleMarkup(this.rules[matchedMq].cssClass);\n    this.currentRule = this.rules[matchedMq];\n    this.currentPlugin = new this.currentRule.plugin(this.$element, this.options);\n    this.storezfData = this.currentPlugin.$element.data('zfPlugin');\n\n  }\n\n  _handleMarkup(toSet){\n    var _this = this, fromString = 'accordion';\n    var $panels = $('[data-tabs-content='+this.$element.attr('id')+']');\n    if ($panels.length) fromString = 'tabs';\n    if (fromString === toSet) {\n      return;\n    }\n\n    var tabsTitle = _this.allOptions.linkClass?_this.allOptions.linkClass:'tabs-title';\n    var tabsPanel = _this.allOptions.panelClass?_this.allOptions.panelClass:'tabs-panel';\n\n    this.$element.removeAttr('role');\n    var $liHeads = this.$element.children('.'+tabsTitle+',[data-accordion-item]').removeClass(tabsTitle).removeClass('accordion-item').removeAttr('data-accordion-item');\n    var $liHeadsA = $liHeads.children('a').removeClass('accordion-title');\n\n    if (fromString === 'tabs') {\n      $panels = $panels.children('.'+tabsPanel).removeClass(tabsPanel).removeAttr('role').removeAttr('aria-hidden').removeAttr('aria-labelledby');\n      $panels.children('a').removeAttr('role').removeAttr('aria-controls').removeAttr('aria-selected');\n    } else {\n      $panels = $liHeads.children('[data-tab-content]').removeClass('accordion-content');\n    }\n\n    $panels.css({display:'',visibility:''});\n    $liHeads.css({display:'',visibility:''});\n    if (toSet === 'accordion') {\n      $panels.each(function(key,value){\n        $(value).appendTo($liHeads.get(key)).addClass('accordion-content').attr('data-tab-content','').removeClass('is-active').css({height:''});\n        $('[data-tabs-content='+_this.$element.attr('id')+']').after('<div id=\"tabs-placeholder-'+_this.$element.attr('id')+'\"></div>').detach();\n        $liHeads.addClass('accordion-item').attr('data-accordion-item','');\n        $liHeadsA.addClass('accordion-title');\n      });\n    } else if (toSet === 'tabs') {\n      var $tabsContent = $('[data-tabs-content='+_this.$element.attr('id')+']');\n      var $placeholder = $('#tabs-placeholder-'+_this.$element.attr('id'));\n      if ($placeholder.length) {\n        $tabsContent = $('<div class=\"tabs-content\"></div>').insertAfter($placeholder).attr('data-tabs-content',_this.$element.attr('id'));\n        $placeholder.remove();\n      } else {\n        $tabsContent = $('<div class=\"tabs-content\"></div>').insertAfter(_this.$element).attr('data-tabs-content',_this.$element.attr('id'));\n      }\n      $panels.each(function(key,value){\n        var tempValue = $(value).appendTo($tabsContent).addClass(tabsPanel);\n        var hash = $liHeadsA.get(key).hash.slice(1);\n        var id = $(value).attr('id') || GetYoDigits(6, 'accordion');\n        if (hash !== id) {\n          if (hash !== '') {\n            $(value).attr('id',hash);\n          } else {\n            hash = id;\n            $(value).attr('id',hash);\n            $($liHeadsA.get(key)).attr('href',$($liHeadsA.get(key)).attr('href').replace('#','')+'#'+hash);\n          }\n        }\n        var isActive = $($liHeads.get(key)).hasClass('is-active');\n        if (isActive) {\n          tempValue.addClass('is-active');\n        }\n      });\n      $liHeads.addClass(tabsTitle);\n    };\n  }\n\n  /**\n   * Opens the plugin pane defined by `target`.\n   * @param {jQuery | String} target - jQuery object or string of the id of the pane to open.\n   * @see Accordion.down\n   * @see Tabs.selectTab\n   * @function\n   */\n  open() {\n    if (this.currentRule && typeof this.currentRule.open === 'function') {\n      return this.currentRule.open(this.currentPlugin, ...arguments);\n    }\n  }\n\n  /**\n   * Closes the plugin pane defined by `target`. Not availaible for Tabs.\n   * @param {jQuery | String} target - jQuery object or string of the id of the pane to close.\n   * @see Accordion.up\n   * @function\n   */\n  close() {\n    if (this.currentRule && typeof this.currentRule.close === 'function') {\n      return this.currentRule.close(this.currentPlugin, ...arguments);\n    }\n  }\n\n  /**\n   * Toggles the plugin pane defined by `target`. Not availaible for Tabs.\n   * @param {jQuery | String} target - jQuery object or string of the id of the pane to toggle.\n   * @see Accordion.toggle\n   * @function\n   */\n  toggle() {\n    if (this.currentRule && typeof this.currentRule.toggle === 'function') {\n      return this.currentRule.toggle(this.currentPlugin, ...arguments);\n    }\n  }\n\n  /**\n   * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.\n   * @function\n   */\n  _destroy() {\n    if (this.currentPlugin) this.currentPlugin.destroy();\n    $(window).off('changed.zf.mediaquery', this._changedZfMediaQueryHandler);\n  }\n}\n\nResponsiveAccordionTabs.defaults = {};\n\nexport {ResponsiveAccordionTabs};\n", "import $ from 'jquery';\n\nimport { Foundation } from '../foundation.core';\nimport * as CoreUtils from '../foundation.core.utils';\nimport { Box } from '../foundation.util.box'\nimport { onImagesLoaded } from '../foundation.util.imageLoader';\nimport { Keyboard } from '../foundation.util.keyboard';\nimport { MediaQuery } from '../foundation.util.mediaQuery';\nimport { Motion, Move } from '../foundation.util.motion';\nimport { Nest } from '../foundation.util.nest';\nimport { Timer } from '../foundation.util.timer';\nimport { Touch } from '../foundation.util.touch';\nimport { Triggers } from '../foundation.util.triggers';\nimport { Abide } from '../foundation.abide';\nimport { Accordion } from '../foundation.accordion';\nimport { AccordionMenu } from '../foundation.accordionMenu';\nimport { Drilldown } from '../foundation.drilldown';\nimport { Dropdown } from '../foundation.dropdown';\nimport { DropdownMenu } from '../foundation.dropdownMenu';\nimport { Equalizer } from '../foundation.equalizer';\nimport { Interchange } from '../foundation.interchange';\nimport { Magellan } from '../foundation.magellan';\nimport { OffCanvas } from '../foundation.offcanvas';\nimport { Orbit } from '../foundation.orbit';\nimport { ResponsiveMenu } from '../foundation.responsiveMenu';\nimport { ResponsiveToggle } from '../foundation.responsiveToggle';\nimport { Reveal } from '../foundation.reveal';\nimport { Slider } from '../foundation.slider';\nimport { SmoothScroll } from '../foundation.smoothScroll';\nimport { Sticky } from '../foundation.sticky';\nimport { Tabs } from '../foundation.tabs';\nimport { Toggler } from '../foundation.toggler';\nimport { Tooltip } from '../foundation.tooltip';\nimport { ResponsiveAccordionTabs } from '../foundation.responsiveAccordionTabs';\n\nFoundation.addToJquery($);\n\n// Add Foundation Utils to Foundation global namespace for backwards\n// compatibility.\nFoundation.rtl = CoreUtils.rtl;\nFoundation.GetYoDigits = CoreUtils.GetYoDigits;\nFoundation.transitionend = CoreUtils.transitionend;\nFoundation.RegExpEscape = CoreUtils.RegExpEscape;\nFoundation.onLoad = CoreUtils.onLoad;\n\nFoundation.Box = Box;\nFoundation.onImagesLoaded = onImagesLoaded;\nFoundation.Keyboard = Keyboard;\nFoundation.MediaQuery = MediaQuery;\nFoundation.Motion = Motion;\nFoundation.Move = Move;\nFoundation.Nest = Nest;\nFoundation.Timer = Timer;\n\n// Touch and Triggers previously were almost purely sede effect driven,\n// so no need to add it to Foundation, just init them.\nTouch.init($);\nTriggers.init($, Foundation);\nMediaQuery._init();\n\nFoundation.plugin(Abide, 'Abide');\nFoundation.plugin(Accordion, 'Accordion');\nFoundation.plugin(AccordionMenu, 'AccordionMenu');\nFoundation.plugin(Drilldown, 'Drilldown');\nFoundation.plugin(Dropdown, 'Dropdown');\nFoundation.plugin(DropdownMenu, 'DropdownMenu');\nFoundation.plugin(Equalizer, 'Equalizer');\nFoundation.plugin(Interchange, 'Interchange');\nFoundation.plugin(Magellan, 'Magellan');\nFoundation.plugin(OffCanvas, 'OffCanvas');\nFoundation.plugin(Orbit, 'Orbit');\nFoundation.plugin(ResponsiveMenu, 'ResponsiveMenu');\nFoundation.plugin(ResponsiveToggle, 'ResponsiveToggle');\nFoundation.plugin(Reveal, 'Reveal');\nFoundation.plugin(Slider, 'Slider');\nFoundation.plugin(SmoothScroll, 'SmoothScroll');\nFoundation.plugin(Sticky, 'Sticky');\nFoundation.plugin(Tabs, 'Tabs');\nFoundation.plugin(Toggler, 'Toggler');\nFoundation.plugin(Tooltip, 'Tooltip');\nFoundation.plugin(ResponsiveAccordionTabs, 'ResponsiveAccordionTabs');\n\nexport {\n  Foundation,\n  CoreUtils,\n  Box,\n  onImagesLoaded,\n  Keyboard,\n  MediaQuery,\n  Motion,\n  Nest,\n  Timer,\n  Touch,\n  Triggers,\n  Abide,\n  Accordion,\n  AccordionMenu,\n  Drilldown,\n  Dropdown,\n  DropdownMenu,\n  Equalizer,\n  Interchange,\n  Magellan,\n  OffCanvas,\n  Orbit,\n  ResponsiveMenu,\n  ResponsiveToggle,\n  Reveal,\n  Slider,\n  SmoothScroll,\n  Sticky,\n  Tabs,\n  Toggler,\n  Tooltip,\n  ResponsiveAccordionTabs\n}\n\nexport default Foundation;\n\n", "/*!\n * Modernizr v2.8.0\n * www.modernizr.com\n *\n * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton\n * Available under the BSD and MIT licenses: www.modernizr.com/license/\n */\n\n/*\n * Modernizr tests which native CSS3 and HTML5 features are available in\n * the current UA and makes the results available to you in two ways:\n * as properties on a global Modernizr object, and as classes on the\n * <html> element. This information allows you to progressively enhance\n * your pages with a granular level of control over the experience.\n *\n * Modernizr has an optional (not included) conditional resource loader\n * called Modernizr.load(), based on Yepnope.js (yepnopejs.com).\n * To get a build that includes Modernizr.load(), as well as choosing\n * which tests to include, go to www.modernizr.com/download/\n *\n * Authors        Faruk Ates, Paul Irish, Alex Sexton\n * Contributors   Ryan Seddon, Ben Alman\n */\n\nwindow.Modernizr = (function() {\n\n    var version = '2.8.0',\n\n    Modernizr = {},\n\n    /*>>cssclasses*/\n    // option for enabling the HTML classes to be added\n    enableClasses = true,\n    /*>>cssclasses*/\n\n    docElement = document.documentElement,\n\n    /**\n     * Create our \"modernizr\" element that we do most feature tests on.\n     */\n    mod = 'modernizr',\n    modElem = document.createElement(mod),\n    mStyle = modElem.style,\n\n    /**\n     * Create the input element for various Web Forms feature tests.\n     */\n    inputElem /*>>inputelem*/ = document.createElement('input') /*>>inputelem*/ ,\n\n    /*>>smile*/\n    smile = ':)',\n    /*>>smile*/\n\n    toString = {}.toString,\n\n    // TODO :: make the prefixes more granular\n    /*>>prefixes*/\n    // List of property values to set for css tests. See ticket #21\n    prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),\n    /*>>prefixes*/\n\n    /*>>domprefixes*/\n    // Following spec is to expose vendor-specific style properties as:\n    //   elem.style.WebkitBorderRadius\n    // and the following would be incorrect:\n    //   elem.style.webkitBorderRadius\n\n    // Webkit ghosts their properties in lowercase but Opera & Moz do not.\n    // Microsoft uses a lowercase `ms` instead of the correct `Ms` in IE8+\n    //   erik.eae.net/archives/2008/03/10/21.48.10/\n\n    // More here: github.com/Modernizr/Modernizr/issues/issue/21\n    omPrefixes = 'Webkit Moz O ms',\n\n    cssomPrefixes = omPrefixes.split(' '),\n\n    domPrefixes = omPrefixes.toLowerCase().split(' '),\n    /*>>domprefixes*/\n\n    /*>>ns*/\n    ns = {'svg': 'http://www.w3.org/2000/svg'},\n    /*>>ns*/\n\n    tests = {},\n    inputs = {},\n    attrs = {},\n\n    classes = [],\n\n    slice = classes.slice,\n\n    featureName, // used in testing loop\n\n\n    /*>>teststyles*/\n    // Inject element with style element and some CSS rules\n    injectElementWithStyles = function( rule, callback, nodes, testnames ) {\n\n      var style, ret, node, docOverflow,\n          div = document.createElement('div'),\n          // After page load injecting a fake body doesn't work so check if body exists\n          body = document.body,\n          // IE6 and 7 won't return offsetWidth or offsetHeight unless it's in the body element, so we fake it.\n          fakeBody = body || document.createElement('body');\n\n      if ( parseInt(nodes, 10) ) {\n          // In order not to give false positives we create a node for each test\n          // This also allows the method to scale for unspecified uses\n          while ( nodes-- ) {\n              node = document.createElement('div');\n              node.id = testnames ? testnames[nodes] : mod + (nodes + 1);\n              div.appendChild(node);\n          }\n      }\n\n      // <style> elements in IE6-9 are considered 'NoScope' elements and therefore will be removed\n      // when injected with innerHTML. To get around this you need to prepend the 'NoScope' element\n      // with a 'scoped' element, in our case the soft-hyphen entity as it won't mess with our measurements.\n      // msdn.microsoft.com/en-us/library/ms533897%28VS.85%29.aspx\n      // Documents served as xml will throw if using &shy; so use xml friendly encoded version. See issue #277\n      style = ['&#173;','<style id=\"s', mod, '\">', rule, '</style>'].join('');\n      div.id = mod;\n      // IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody.\n      // Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270\n      (body ? div : fakeBody).innerHTML += style;\n      fakeBody.appendChild(div);\n      if ( !body ) {\n          //avoid crashing IE8, if background image is used\n          fakeBody.style.background = '';\n          //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\n          fakeBody.style.overflow = 'hidden';\n          docOverflow = docElement.style.overflow;\n          docElement.style.overflow = 'hidden';\n          docElement.appendChild(fakeBody);\n      }\n\n      ret = callback(div, rule);\n      // If this is done after page load we don't want to remove the body so check if body exists\n      if ( !body ) {\n          fakeBody.parentNode.removeChild(fakeBody);\n          docElement.style.overflow = docOverflow;\n      } else {\n          div.parentNode.removeChild(div);\n      }\n\n      return !!ret;\n\n    },\n    /*>>teststyles*/\n\n    /*>>mq*/\n    // adapted from matchMedia polyfill\n    // by Scott Jehl and Paul Irish\n    // gist.github.com/786768\n    testMediaQuery = function( mq ) {\n\n      var matchMedia = window.matchMedia || window.msMatchMedia;\n      if ( matchMedia ) {\n        return matchMedia(mq) && matchMedia(mq).matches || false;\n      }\n\n      var bool;\n\n      injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function( node ) {\n        bool = (window.getComputedStyle ?\n                  getComputedStyle(node, null) :\n                  node.currentStyle)['position'] == 'absolute';\n      });\n\n      return bool;\n\n     },\n     /*>>mq*/\n\n\n    /*>>hasevent*/\n    //\n    // isEventSupported determines if a given element supports the given event\n    // kangax.github.com/iseventsupported/\n    //\n    // The following results are known incorrects:\n    //   Modernizr.hasEvent(\"webkitTransitionEnd\", elem) // false negative\n    //   Modernizr.hasEvent(\"textInput\") // in Webkit. github.com/Modernizr/Modernizr/issues/333\n    //   ...\n    isEventSupported = (function() {\n\n      var TAGNAMES = {\n        'select': 'input', 'change': 'input',\n        'submit': 'form', 'reset': 'form',\n        'error': 'img', 'load': 'img', 'abort': 'img'\n      };\n\n      function isEventSupported( eventName, element ) {\n\n        element = element || document.createElement(TAGNAMES[eventName] || 'div');\n        eventName = 'on' + eventName;\n\n        // When using `setAttribute`, IE skips \"unload\", WebKit skips \"unload\" and \"resize\", whereas `in` \"catches\" those\n        var isSupported = eventName in element;\n\n        if ( !isSupported ) {\n          // If it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element\n          if ( !element.setAttribute ) {\n            element = document.createElement('div');\n          }\n          if ( element.setAttribute && element.removeAttribute ) {\n            element.setAttribute(eventName, '');\n            isSupported = is(element[eventName], 'function');\n\n            // If property was created, \"remove it\" (by setting value to `undefined`)\n            if ( !is(element[eventName], 'undefined') ) {\n              element[eventName] = undefined;\n            }\n            element.removeAttribute(eventName);\n          }\n        }\n\n        element = null;\n        return isSupported;\n      }\n      return isEventSupported;\n    })(),\n    /*>>hasevent*/\n\n    // TODO :: Add flag for hasownprop ? didn't last time\n\n    // hasOwnProperty shim by kangax needed for Safari 2.0 support\n    _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;\n\n    if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {\n      hasOwnProp = function (object, property) {\n        return _hasOwnProperty.call(object, property);\n      };\n    }\n    else {\n      hasOwnProp = function (object, property) { /* yes, this can give false positives/negatives, but most of the time we don't care about those */\n        return ((property in object) && is(object.constructor.prototype[property], 'undefined'));\n      };\n    }\n\n    // Adapted from ES5-shim https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js\n    // es5.github.com/#x15.3.4.5\n\n    if (!Function.prototype.bind) {\n      Function.prototype.bind = function bind(that) {\n\n        var target = this;\n\n        if (typeof target != \"function\") {\n            throw new TypeError();\n        }\n\n        var args = slice.call(arguments, 1),\n            bound = function () {\n\n            if (this instanceof bound) {\n\n              var F = function(){};\n              F.prototype = target.prototype;\n              var self = new F();\n\n              var result = target.apply(\n                  self,\n                  args.concat(slice.call(arguments))\n              );\n              if (Object(result) === result) {\n                  return result;\n              }\n              return self;\n\n            } else {\n\n              return target.apply(\n                  that,\n                  args.concat(slice.call(arguments))\n              );\n\n            }\n\n        };\n\n        return bound;\n      };\n    }\n\n    /**\n     * setCss applies given styles to the Modernizr DOM node.\n     */\n    function setCss( str ) {\n        mStyle.cssText = str;\n    }\n\n    /**\n     * setCssAll extrapolates all vendor-specific css strings.\n     */\n    function setCssAll( str1, str2 ) {\n        return setCss(prefixes.join(str1 + ';') + ( str2 || '' ));\n    }\n\n    /**\n     * is returns a boolean for if typeof obj is exactly type.\n     */\n    function is( obj, type ) {\n        return typeof obj === type;\n    }\n\n    /**\n     * contains returns a boolean for if substr is found within str.\n     */\n    function contains( str, substr ) {\n        return !!~('' + str).indexOf(substr);\n    }\n\n    /*>>testprop*/\n\n    // testProps is a generic CSS / DOM property test.\n\n    // In testing support for a given CSS property, it's legit to test:\n    //    `elem.style[styleName] !== undefined`\n    // If the property is supported it will return an empty string,\n    // if unsupported it will return undefined.\n\n    // We'll take advantage of this quick test and skip setting a style\n    // on our modernizr element, but instead just testing undefined vs\n    // empty string.\n\n    // Because the testing of the CSS property names (with \"-\", as\n    // opposed to the camelCase DOM properties) is non-portable and\n    // non-standard but works in WebKit and IE (but not Gecko or Opera),\n    // we explicitly reject properties with dashes so that authors\n    // developing in WebKit or IE first don't end up with\n    // browser-specific content by accident.\n\n    function testProps( props, prefixed ) {\n        for ( var i in props ) {\n            var prop = props[i];\n            if ( !contains(prop, \"-\") && mStyle[prop] !== undefined ) {\n                return prefixed == 'pfx' ? prop : true;\n            }\n        }\n        return false;\n    }\n    /*>>testprop*/\n\n    // TODO :: add testDOMProps\n    /**\n     * testDOMProps is a generic DOM property test; if a browser supports\n     *   a certain property, it won't return undefined for it.\n     */\n    function testDOMProps( props, obj, elem ) {\n        for ( var i in props ) {\n            var item = obj[props[i]];\n            if ( item !== undefined) {\n\n                // return the property name as a string\n                if (elem === false) return props[i];\n\n                // let's bind a function\n                if (is(item, 'function')){\n                  // default to autobind unless override\n                  return item.bind(elem || obj);\n                }\n\n                // return the unbound function or obj or value\n                return item;\n            }\n        }\n        return false;\n    }\n\n    /*>>testallprops*/\n    /**\n     * testPropsAll tests a list of DOM properties we want to check against.\n     *   We specify literally ALL possible (known and/or likely) properties on\n     *   the element including the non-vendor prefixed one, for forward-\n     *   compatibility.\n     */\n    function testPropsAll( prop, prefixed, elem ) {\n\n        var ucProp  = prop.charAt(0).toUpperCase() + prop.slice(1),\n            props   = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');\n\n        // did they call .prefixed('boxSizing') or are we just testing a prop?\n        if(is(prefixed, \"string\") || is(prefixed, \"undefined\")) {\n          return testProps(props, prefixed);\n\n        // otherwise, they called .prefixed('requestAnimationFrame', window[, elem])\n        } else {\n          props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');\n          return testDOMProps(props, prefixed, elem);\n        }\n    }\n    /*>>testallprops*/\n\n\n    /**\n     * Tests\n     * -----\n     */\n\n    // The *new* flexbox\n    // dev.w3.org/csswg/css3-flexbox\n\n    tests['flexbox'] = function() {\n      return testPropsAll('flexWrap');\n    };\n\n    // The *old* flexbox\n    // www.w3.org/TR/2009/WD-css3-flexbox-20090723/\n\n    tests['flexboxlegacy'] = function() {\n        return testPropsAll('boxDirection');\n    };\n\n    // On the S60 and BB Storm, getContext exists, but always returns undefined\n    // so we actually have to call getContext() to verify\n    // github.com/Modernizr/Modernizr/issues/issue/97/\n\n    tests['canvas'] = function() {\n        var elem = document.createElement('canvas');\n        return !!(elem.getContext && elem.getContext('2d'));\n    };\n\n    tests['canvastext'] = function() {\n        return !!(Modernizr['canvas'] && is(document.createElement('canvas').getContext('2d').fillText, 'function'));\n    };\n\n    // webk.it/70117 is tracking a legit WebGL feature detect proposal\n\n    // We do a soft detect which may false positive in order to avoid\n    // an expensive context creation: bugzil.la/732441\n\n    tests['webgl'] = function() {\n        return !!window.WebGLRenderingContext;\n    };\n\n    /*\n     * The Modernizr.touch test only indicates if the browser supports\n     *    touch events, which does not necessarily reflect a touchscreen\n     *    device, as evidenced by tablets running Windows 7 or, alas,\n     *    the Palm Pre / WebOS (touch) phones.\n     *\n     * Additionally, Chrome (desktop) used to lie about its support on this,\n     *    but that has since been rectified: crbug.com/36415\n     *\n     * We also test for Firefox 4 Multitouch Support.\n     *\n     * For more info, see: modernizr.github.com/Modernizr/touch.html\n     */\n\n    tests['touch'] = function() {\n        var bool;\n\n        if(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {\n          bool = true;\n        } else {\n          injectElementWithStyles(['@media (',prefixes.join('touch-enabled),('),mod,')','{#modernizr{top:9px;position:absolute}}'].join(''), function( node ) {\n            bool = node.offsetTop === 9;\n          });\n        }\n\n        return bool;\n    };\n\n\n    // geolocation is often considered a trivial feature detect...\n    // Turns out, it's quite tricky to get right:\n    //\n    // Using !!navigator.geolocation does two things we don't want. It:\n    //   1. Leaks memory in IE9: github.com/Modernizr/Modernizr/issues/513\n    //   2. Disables page caching in WebKit: webk.it/43956\n    //\n    // Meanwhile, in Firefox < 8, an about:config setting could expose\n    // a false positive that would throw an exception: bugzil.la/688158\n\n    tests['geolocation'] = function() {\n        return 'geolocation' in navigator;\n    };\n\n\n    tests['postmessage'] = function() {\n      return !!window.postMessage;\n    };\n\n\n    // Chrome incognito mode used to throw an exception when using openDatabase\n    // It doesn't anymore.\n    tests['websqldatabase'] = function() {\n      return !!window.openDatabase;\n    };\n\n    // Vendors had inconsistent prefixing with the experimental Indexed DB:\n    // - Webkit's implementation is accessible through webkitIndexedDB\n    // - Firefox shipped moz_indexedDB before FF4b9, but since then has been mozIndexedDB\n    // For speed, we don't test the legacy (and beta-only) indexedDB\n    tests['indexedDB'] = function() {\n      return !!testPropsAll(\"indexedDB\", window);\n    };\n\n    // documentMode logic from YUI to filter out IE8 Compat Mode\n    //   which false positives.\n    tests['hashchange'] = function() {\n      return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7);\n    };\n\n    // Per 1.6:\n    // This used to be Modernizr.historymanagement but the longer\n    // name has been deprecated in favor of a shorter and property-matching one.\n    // The old API is still available in 1.6, but as of 2.0 will throw a warning,\n    // and in the first release thereafter disappear entirely.\n    tests['history'] = function() {\n      return !!(window.history && history.pushState);\n    };\n\n    tests['draganddrop'] = function() {\n        var div = document.createElement('div');\n        return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div);\n    };\n\n    // FF3.6 was EOL'ed on 4/24/12, but the ESR version of FF10\n    // will be supported until FF19 (2/12/13), at which time, ESR becomes FF17.\n    // FF10 still uses prefixes, so check for it until then.\n    // for more ESR info, see: mozilla.org/en-US/firefox/organizations/faq/\n    tests['websockets'] = function() {\n        return 'WebSocket' in window || 'MozWebSocket' in window;\n    };\n\n\n    // css-tricks.com/rgba-browser-support/\n    tests['rgba'] = function() {\n        // Set an rgba() color and check the returned value\n\n        setCss('background-color:rgba(150,255,150,.5)');\n\n        return contains(mStyle.backgroundColor, 'rgba');\n    };\n\n    tests['hsla'] = function() {\n        // Same as rgba(), in fact, browsers re-map hsla() to rgba() internally,\n        //   except IE9 who retains it as hsla\n\n        setCss('background-color:hsla(120,40%,100%,.5)');\n\n        return contains(mStyle.backgroundColor, 'rgba') || contains(mStyle.backgroundColor, 'hsla');\n    };\n\n    tests['multiplebgs'] = function() {\n        // Setting multiple images AND a color on the background shorthand property\n        //  and then querying the style.background property value for the number of\n        //  occurrences of \"url(\" is a reliable method for detecting ACTUAL support for this!\n\n        setCss('background:url(https://),url(https://),red url(https://)');\n\n        // If the UA supports multiple backgrounds, there should be three occurrences\n        //   of the string \"url(\" in the return value for elemStyle.background\n\n        return (/(url\\s*\\(.*?){3}/).test(mStyle.background);\n    };\n\n\n\n    // this will false positive in Opera Mini\n    //   github.com/Modernizr/Modernizr/issues/396\n\n    tests['backgroundsize'] = function() {\n        return testPropsAll('backgroundSize');\n    };\n\n    tests['borderimage'] = function() {\n        return testPropsAll('borderImage');\n    };\n\n\n    // Super comprehensive table about all the unique implementations of\n    // border-radius: muddledramblings.com/table-of-css3-border-radius-compliance\n\n    tests['borderradius'] = function() {\n        return testPropsAll('borderRadius');\n    };\n\n    // WebOS unfortunately false positives on this test.\n    tests['boxshadow'] = function() {\n        return testPropsAll('boxShadow');\n    };\n\n    // FF3.0 will false positive on this test\n    tests['textshadow'] = function() {\n        return document.createElement('div').style.textShadow === '';\n    };\n\n\n    tests['opacity'] = function() {\n        // Browsers that actually have CSS Opacity implemented have done so\n        //  according to spec, which means their return values are within the\n        //  range of [0.0,1.0] - including the leading zero.\n\n        setCssAll('opacity:.55');\n\n        // The non-literal . in this regex is intentional:\n        //   German Chrome returns this value as 0,55\n        // github.com/Modernizr/Modernizr/issues/#issue/59/comment/516632\n        return (/^0.55$/).test(mStyle.opacity);\n    };\n\n\n    // Note, Android < 4 will pass this test, but can only animate\n    //   a single property at a time\n    //   goo.gl/v3V4Gp\n    tests['cssanimations'] = function() {\n        return testPropsAll('animationName');\n    };\n\n\n    tests['csscolumns'] = function() {\n        return testPropsAll('columnCount');\n    };\n\n\n    tests['cssgradients'] = function() {\n        /**\n         * For CSS Gradients syntax, please see:\n         * webkit.org/blog/175/introducing-css-gradients/\n         * developer.mozilla.org/en/CSS/-moz-linear-gradient\n         * developer.mozilla.org/en/CSS/-moz-radial-gradient\n         * dev.w3.org/csswg/css3-images/#gradients-\n         */\n\n        var str1 = 'background-image:',\n            str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));',\n            str3 = 'linear-gradient(left top,#9f9, white);';\n\n        setCss(\n             // legacy webkit syntax (FIXME: remove when syntax not in use anymore)\n              (str1 + '-webkit- '.split(' ').join(str2 + str1) +\n             // standard syntax             // trailing 'background-image:'\n              prefixes.join(str3 + str1)).slice(0, -str1.length)\n        );\n\n        return contains(mStyle.backgroundImage, 'gradient');\n    };\n\n\n    tests['cssreflections'] = function() {\n        return testPropsAll('boxReflect');\n    };\n\n\n    tests['csstransforms'] = function() {\n        return !!testPropsAll('transform');\n    };\n\n\n    tests['csstransforms3d'] = function() {\n\n        var ret = !!testPropsAll('perspective');\n\n        // Webkit's 3D transforms are passed off to the browser's own graphics renderer.\n        //   It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in\n        //   some conditions. As a result, Webkit typically recognizes the syntax but\n        //   will sometimes throw a false positive, thus we must do a more thorough check:\n        if ( ret && 'webkitPerspective' in docElement.style ) {\n\n          // Webkit allows this media query to succeed only if the feature is enabled.\n          // `@media (transform-3d),(-webkit-transform-3d){ ... }`\n          injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function( node, rule ) {\n            ret = node.offsetLeft === 9 && node.offsetHeight === 3;\n          });\n        }\n        return ret;\n    };\n\n\n    tests['csstransitions'] = function() {\n        return testPropsAll('transition');\n    };\n\n\n    /*>>fontface*/\n    // @font-face detection routine by Diego Perini\n    // javascript.nwbox.com/CSSSupport/\n\n    // false positives:\n    //   WebOS github.com/Modernizr/Modernizr/issues/342\n    //   WP7   github.com/Modernizr/Modernizr/issues/538\n    tests['fontface'] = function() {\n        var bool;\n\n        injectElementWithStyles('@font-face {font-family:\"font\";src:url(\"https://\")}', function( node, rule ) {\n          var style = document.getElementById('smodernizr'),\n              sheet = style.sheet || style.styleSheet,\n              cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : '';\n\n          bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0;\n        });\n\n        return bool;\n    };\n    /*>>fontface*/\n\n    // CSS generated content detection\n    tests['generatedcontent'] = function() {\n        var bool;\n\n        injectElementWithStyles(['#',mod,'{font:0/0 a}#',mod,':after{content:\"',smile,'\";visibility:hidden;font:3px/1 a}'].join(''), function( node ) {\n          bool = node.offsetHeight >= 3;\n        });\n\n        return bool;\n    };\n\n\n\n    // These tests evaluate support of the video/audio elements, as well as\n    // testing what types of content they support.\n    //\n    // We're using the Boolean constructor here, so that we can extend the value\n    // e.g.  Modernizr.video     // true\n    //       Modernizr.video.ogg // 'probably'\n    //\n    // Codec values from : github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845\n    //                     thx to NielsLeenheer and zcorpan\n\n    // Note: in some older browsers, \"no\" was a return value instead of empty string.\n    //   It was live in FF3.5.0 and 3.5.1, but fixed in 3.5.2\n    //   It was also live in Safari 4.0.0 - 4.0.4, but fixed in 4.0.5\n\n    tests['video'] = function() {\n        var elem = document.createElement('video'),\n            bool = false;\n\n        // IE9 Running on Windows Server SKU can cause an exception to be thrown, bug #224\n        try {\n            if ( bool = !!elem.canPlayType ) {\n                bool      = new Boolean(bool);\n                bool.ogg  = elem.canPlayType('video/ogg; codecs=\"theora\"')      .replace(/^no$/,'');\n\n                // Without QuickTime, this value will be `undefined`. github.com/Modernizr/Modernizr/issues/546\n                bool.h264 = elem.canPlayType('video/mp4; codecs=\"avc1.42E01E\"') .replace(/^no$/,'');\n\n                bool.webm = elem.canPlayType('video/webm; codecs=\"vp8, vorbis\"').replace(/^no$/,'');\n            }\n\n        } catch(e) { }\n\n        return bool;\n    };\n\n    tests['audio'] = function() {\n        var elem = document.createElement('audio'),\n            bool = false;\n\n        try {\n            if ( bool = !!elem.canPlayType ) {\n                bool      = new Boolean(bool);\n                bool.ogg  = elem.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/,'');\n                bool.mp3  = elem.canPlayType('audio/mpeg;')               .replace(/^no$/,'');\n\n                // Mimetypes accepted:\n                //   developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements\n                //   bit.ly/iphoneoscodecs\n                bool.wav  = elem.canPlayType('audio/wav; codecs=\"1\"')     .replace(/^no$/,'');\n                bool.m4a  = ( elem.canPlayType('audio/x-m4a;')            ||\n                              elem.canPlayType('audio/aac;'))             .replace(/^no$/,'');\n            }\n        } catch(e) { }\n\n        return bool;\n    };\n\n\n    // In FF4, if disabled, window.localStorage should === null.\n\n    // Normally, we could not test that directly and need to do a\n    //   `('localStorage' in window) && ` test first because otherwise Firefox will\n    //   throw bugzil.la/365772 if cookies are disabled\n\n    // Also in iOS5 Private Browsing mode, attempting to use localStorage.setItem\n    // will throw the exception:\n    //   QUOTA_EXCEEDED_ERRROR DOM Exception 22.\n    // Peculiarly, getItem and removeItem calls do not throw.\n\n    // Because we are forced to try/catch this, we'll go aggressive.\n\n    // Just FWIW: IE8 Compat mode supports these features completely:\n    //   www.quirksmode.org/dom/html5.html\n    // But IE8 doesn't support either with local files\n\n    tests['localstorage'] = function() {\n        try {\n            localStorage.setItem(mod, mod);\n            localStorage.removeItem(mod);\n            return true;\n        } catch(e) {\n            return false;\n        }\n    };\n\n    tests['sessionstorage'] = function() {\n        try {\n            sessionStorage.setItem(mod, mod);\n            sessionStorage.removeItem(mod);\n            return true;\n        } catch(e) {\n            return false;\n        }\n    };\n\n\n    tests['webworkers'] = function() {\n        return !!window.Worker;\n    };\n\n\n    tests['applicationcache'] = function() {\n        return !!window.applicationCache;\n    };\n\n\n    // Thanks to Erik Dahlstrom\n    tests['svg'] = function() {\n        return !!document.createElementNS && !!document.createElementNS(ns.svg, 'svg').createSVGRect;\n    };\n\n    // specifically for SVG inline in HTML, not within XHTML\n    // test page: paulirish.com/demo/inline-svg\n    tests['inlinesvg'] = function() {\n      var div = document.createElement('div');\n      div.innerHTML = '<svg/>';\n      return (div.firstChild && div.firstChild.namespaceURI) == ns.svg;\n    };\n\n    // SVG SMIL animation\n    tests['smil'] = function() {\n        return !!document.createElementNS && /SVGAnimate/.test(toString.call(document.createElementNS(ns.svg, 'animate')));\n    };\n\n    // This test is only for clip paths in SVG proper, not clip paths on HTML content\n    // demo: srufaculty.sru.edu/david.dailey/svg/newstuff/clipPath4.svg\n\n    // However read the comments to dig into applying SVG clippaths to HTML content here:\n    //   github.com/Modernizr/Modernizr/issues/213#issuecomment-1149491\n    tests['svgclippaths'] = function() {\n        return !!document.createElementNS && /SVGClipPath/.test(toString.call(document.createElementNS(ns.svg, 'clipPath')));\n    };\n\n    /*>>webforms*/\n    // input features and input types go directly onto the ret object, bypassing the tests loop.\n    // Hold this guy to execute in a moment.\n    function webforms() {\n        /*>>input*/\n        // Run through HTML5's new input attributes to see if the UA understands any.\n        // We're using f which is the <input> element created early on\n        // Mike Taylr has created a comprehensive resource for testing these attributes\n        //   when applied to all input types:\n        //   miketaylr.com/code/input-type-attr.html\n        // spec: www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n\n        // Only input placeholder is tested while textarea's placeholder is not.\n        // Currently Safari 4 and Opera 11 have support only for the input placeholder\n        // Both tests are available in feature-detects/forms-placeholder.js\n        Modernizr['input'] = (function( props ) {\n            for ( var i = 0, len = props.length; i < len; i++ ) {\n                attrs[ props[i] ] = !!(props[i] in inputElem);\n            }\n            if (attrs.list){\n              // safari false positive's on datalist: webk.it/74252\n              // see also github.com/Modernizr/Modernizr/issues/146\n              attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);\n            }\n            return attrs;\n        })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));\n        /*>>input*/\n\n        /*>>inputtypes*/\n        // Run through HTML5's new input types to see if the UA understands any.\n        //   This is put behind the tests runloop because it doesn't return a\n        //   true/false like all the other tests; instead, it returns an object\n        //   containing each input type with its corresponding true/false value\n\n        // Big thanks to @miketaylr for the html5 forms expertise. miketaylr.com/\n        Modernizr['inputtypes'] = (function(props) {\n\n            for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) {\n\n                inputElem.setAttribute('type', inputElemType = props[i]);\n                bool = inputElem.type !== 'text';\n\n                // We first check to see if the type we give it sticks..\n                // If the type does, we feed it a textual value, which shouldn't be valid.\n                // If the value doesn't stick, we know there's input sanitization which infers a custom UI\n                if ( bool ) {\n\n                    inputElem.value         = smile;\n                    inputElem.style.cssText = 'position:absolute;visibility:hidden;';\n\n                    if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) {\n\n                      docElement.appendChild(inputElem);\n                      defaultView = document.defaultView;\n\n                      // Safari 2-4 allows the smiley as a value, despite making a slider\n                      bool =  defaultView.getComputedStyle &&\n                              defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&\n                              // Mobile android web browser has false positive, so must\n                              // check the height to see if the widget is actually there.\n                              (inputElem.offsetHeight !== 0);\n\n                      docElement.removeChild(inputElem);\n\n                    } else if ( /^(search|tel)$/.test(inputElemType) ){\n                      // Spec doesn't define any special parsing or detectable UI\n                      //   behaviors so we pass these through as true\n\n                      // Interestingly, opera fails the earlier test, so it doesn't\n                      //  even make it here.\n\n                    } else if ( /^(url|email)$/.test(inputElemType) ) {\n                      // Real url and email support comes with prebaked validation.\n                      bool = inputElem.checkValidity && inputElem.checkValidity() === false;\n\n                    } else {\n                      // If the upgraded input compontent rejects the :) text, we got a winner\n                      bool = inputElem.value != smile;\n                    }\n                }\n\n                inputs[ props[i] ] = !!bool;\n            }\n            return inputs;\n        })('search tel url email datetime date month week time datetime-local number range color'.split(' '));\n        /*>>inputtypes*/\n    }\n    /*>>webforms*/\n\n\n    // End of test definitions\n    // -----------------------\n\n\n\n    // Run through all tests and detect their support in the current UA.\n    // todo: hypothetically we could be doing an array of tests and use a basic loop here.\n    for ( var feature in tests ) {\n        if ( hasOwnProp(tests, feature) ) {\n            // run the test, throw the return value into the Modernizr,\n            //   then based on that boolean, define an appropriate className\n            //   and push it into an array of classes we'll join later.\n            featureName  = feature.toLowerCase();\n            Modernizr[featureName] = tests[feature]();\n\n            classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);\n        }\n    }\n\n    /*>>webforms*/\n    // input tests need to run.\n    Modernizr.input || webforms();\n    /*>>webforms*/\n\n\n    /**\n     * addTest allows the user to define their own feature tests\n     * the result will be added onto the Modernizr object,\n     * as well as an appropriate className set on the html element\n     *\n     * @param feature - String naming the feature\n     * @param test - Function returning true if feature is supported, false if not\n     */\n     Modernizr.addTest = function ( feature, test ) {\n       if ( typeof feature == 'object' ) {\n         for ( var key in feature ) {\n           if ( hasOwnProp( feature, key ) ) {\n             Modernizr.addTest( key, feature[ key ] );\n           }\n         }\n       } else {\n\n         feature = feature.toLowerCase();\n\n         if ( Modernizr[feature] !== undefined ) {\n           // we're going to quit if you're trying to overwrite an existing test\n           // if we were to allow it, we'd do this:\n           //   var re = new RegExp(\"\\\\b(no-)?\" + feature + \"\\\\b\");\n           //   docElement.className = docElement.className.replace( re, '' );\n           // but, no rly, stuff 'em.\n           return Modernizr;\n         }\n\n         test = typeof test == 'function' ? test() : test;\n\n         if (typeof enableClasses !== \"undefined\" && enableClasses) {\n           docElement.className += ' ' + (test ? '' : 'no-') + feature;\n         }\n         Modernizr[feature] = test;\n\n       }\n\n       return Modernizr; // allow chaining.\n     };\n\n\n    // Reset modElem.cssText to nothing to reduce memory footprint.\n    setCss('');\n    modElem = inputElem = null;\n\n    /*>>shiv*/\n    /**\n     * @preserve HTML5 Shiv prev3.7.1 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed\n     */\n    ;(function() {\n        /*jshint evil:true */\n        /** version */\n        var version = '3.7.0';\n\n        /** Preset options */\n        var options = window.html5 || {};\n\n        /** Used to skip problem elements */\n        var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;\n\n        /** Not all elements can be cloned in IE **/\n        var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;\n\n        /** Detect whether the browser supports default html5 styles */\n        var supportsHtml5Styles;\n\n        /** Name of the expando, to work with multiple documents or to re-shiv one document */\n        var expando = '_html5shiv';\n\n        /** The id for the the documents expando */\n        var expanID = 0;\n\n        /** Cached data for each document */\n        var expandoData = {};\n\n        /** Detect whether the browser supports unknown elements */\n        var supportsUnknownElements;\n\n        (function() {\n          try {\n            var a = document.createElement('a');\n            a.innerHTML = '<xyz></xyz>';\n            //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles\n            supportsHtml5Styles = ('hidden' in a);\n\n            supportsUnknownElements = a.childNodes.length == 1 || (function() {\n              // assign a false positive if unable to shiv\n              (document.createElement)('a');\n              var frag = document.createDocumentFragment();\n              return (\n                typeof frag.cloneNode == 'undefined' ||\n                typeof frag.createDocumentFragment == 'undefined' ||\n                typeof frag.createElement == 'undefined'\n              );\n            }());\n          } catch(e) {\n            // assign a false positive if detection fails => unable to shiv\n            supportsHtml5Styles = true;\n            supportsUnknownElements = true;\n          }\n\n        }());\n\n        /*--------------------------------------------------------------------------*/\n\n        /**\n         * Creates a style sheet with the given CSS text and adds it to the document.\n         * @private\n         * @param {Document} ownerDocument The document.\n         * @param {String} cssText The CSS text.\n         * @returns {StyleSheet} The style element.\n         */\n        function addStyleSheet(ownerDocument, cssText) {\n          var p = ownerDocument.createElement('p'),\n          parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;\n\n          p.innerHTML = 'x<style>' + cssText + '</style>';\n          return parent.insertBefore(p.lastChild, parent.firstChild);\n        }\n\n        /**\n         * Returns the value of `html5.elements` as an array.\n         * @private\n         * @returns {Array} An array of shived element node names.\n         */\n        function getElements() {\n          var elements = html5.elements;\n          return typeof elements == 'string' ? elements.split(' ') : elements;\n        }\n\n        /**\n         * Returns the data associated to the given document\n         * @private\n         * @param {Document} ownerDocument The document.\n         * @returns {Object} An object of data.\n         */\n        function getExpandoData(ownerDocument) {\n          var data = expandoData[ownerDocument[expando]];\n          if (!data) {\n            data = {};\n            expanID++;\n            ownerDocument[expando] = expanID;\n            expandoData[expanID] = data;\n          }\n          return data;\n        }\n\n        /**\n         * returns a shived element for the given nodeName and document\n         * @memberOf html5\n         * @param {String} nodeName name of the element\n         * @param {Document} ownerDocument The context document.\n         * @returns {Object} The shived element.\n         */\n        function createElement(nodeName, ownerDocument, data){\n          if (!ownerDocument) {\n            ownerDocument = document;\n          }\n          if(supportsUnknownElements){\n            return ownerDocument.createElement(nodeName);\n          }\n          if (!data) {\n            data = getExpandoData(ownerDocument);\n          }\n          var node;\n\n          if (data.cache[nodeName]) {\n            node = data.cache[nodeName].cloneNode();\n          } else if (saveClones.test(nodeName)) {\n            node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();\n          } else {\n            node = data.createElem(nodeName);\n          }\n\n          // Avoid adding some elements to fragments in IE < 9 because\n          // * Attributes like `name` or `type` cannot be set/changed once an element\n          //   is inserted into a document/fragment\n          // * Link elements with `src` attributes that are inaccessible, as with\n          //   a 403 response, will cause the tab/window to crash\n          // * Script elements appended to fragments will execute when their `src`\n          //   or `text` property is set\n          return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;\n        }\n\n        /**\n         * returns a shived DocumentFragment for the given document\n         * @memberOf html5\n         * @param {Document} ownerDocument The context document.\n         * @returns {Object} The shived DocumentFragment.\n         */\n        function createDocumentFragment(ownerDocument, data){\n          if (!ownerDocument) {\n            ownerDocument = document;\n          }\n          if(supportsUnknownElements){\n            return ownerDocument.createDocumentFragment();\n          }\n          data = data || getExpandoData(ownerDocument);\n          var clone = data.frag.cloneNode(),\n          i = 0,\n          elems = getElements(),\n          l = elems.length;\n          for(;i<l;i++){\n            clone.createElement(elems[i]);\n          }\n          return clone;\n        }\n\n        /**\n         * Shivs the `createElement` and `createDocumentFragment` methods of the document.\n         * @private\n         * @param {Document|DocumentFragment} ownerDocument The document.\n         * @param {Object} data of the document.\n         */\n        function shivMethods(ownerDocument, data) {\n          if (!data.cache) {\n            data.cache = {};\n            data.createElem = ownerDocument.createElement;\n            data.createFrag = ownerDocument.createDocumentFragment;\n            data.frag = data.createFrag();\n          }\n\n\n          ownerDocument.createElement = function(nodeName) {\n            //abort shiv\n            if (!html5.shivMethods) {\n              return data.createElem(nodeName);\n            }\n            return createElement(nodeName, ownerDocument, data);\n          };\n\n          ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +\n                                                          'var n=f.cloneNode(),c=n.createElement;' +\n                                                          'h.shivMethods&&(' +\n                                                          // unroll the `createElement` calls\n                                                          getElements().join().replace(/[\\w\\-]+/g, function(nodeName) {\n            data.createElem(nodeName);\n            data.frag.createElement(nodeName);\n            return 'c(\"' + nodeName + '\")';\n          }) +\n            ');return n}'\n                                                         )(html5, data.frag);\n        }\n\n        /*--------------------------------------------------------------------------*/\n\n        /**\n         * Shivs the given document.\n         * @memberOf html5\n         * @param {Document} ownerDocument The document to shiv.\n         * @returns {Document} The shived document.\n         */\n        function shivDocument(ownerDocument) {\n          if (!ownerDocument) {\n            ownerDocument = document;\n          }\n          var data = getExpandoData(ownerDocument);\n\n          if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {\n            data.hasCSS = !!addStyleSheet(ownerDocument,\n                                          // corrects block display not defined in IE6/7/8/9\n                                          'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +\n                                            // adds styling not present in IE6/7/8/9\n                                            'mark{background:#FF0;color:#000}' +\n                                            // hides non-rendered elements\n                                            'template{display:none}'\n                                         );\n          }\n          if (!supportsUnknownElements) {\n            shivMethods(ownerDocument, data);\n          }\n          return ownerDocument;\n        }\n\n        /*--------------------------------------------------------------------------*/\n\n        /**\n         * The `html5` object is exposed so that more elements can be shived and\n         * existing shiving can be detected on iframes.\n         * @type Object\n         * @example\n         *\n         * // options can be changed before the script is included\n         * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };\n         */\n        var html5 = {\n\n          /**\n           * An array or space separated string of node names of the elements to shiv.\n           * @memberOf html5\n           * @type Array|String\n           */\n          'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video',\n\n          /**\n           * current version of html5shiv\n           */\n          'version': version,\n\n          /**\n           * A flag to indicate that the HTML5 style sheet should be inserted.\n           * @memberOf html5\n           * @type Boolean\n           */\n          'shivCSS': (options.shivCSS !== false),\n\n          /**\n           * Is equal to true if a browser supports creating unknown/HTML5 elements\n           * @memberOf html5\n           * @type boolean\n           */\n          'supportsUnknownElements': supportsUnknownElements,\n\n          /**\n           * A flag to indicate that the document's `createElement` and `createDocumentFragment`\n           * methods should be overwritten.\n           * @memberOf html5\n           * @type Boolean\n           */\n          'shivMethods': (options.shivMethods !== false),\n\n          /**\n           * A string to describe the type of `html5` object (\"default\" or \"default print\").\n           * @memberOf html5\n           * @type String\n           */\n          'type': 'default',\n\n          // shivs the document according to the specified `html5` object options\n          'shivDocument': shivDocument,\n\n          //creates a shived element\n          createElement: createElement,\n\n          //creates a shived documentFragment\n          createDocumentFragment: createDocumentFragment\n        };\n\n        /*--------------------------------------------------------------------------*/\n\n        // expose html5\n        window.html5 = html5;\n\n        // shiv the document\n        shivDocument(document);\n\n    }());\n    /*>>shiv*/\n\n    // Assign private properties to the return object with prefix\n    Modernizr._version      = version;\n\n    // expose these for the plugin API. Look in the source for how to join() them against your input\n    /*>>prefixes*/\n    Modernizr._prefixes     = prefixes;\n    /*>>prefixes*/\n    /*>>domprefixes*/\n    Modernizr._domPrefixes  = domPrefixes;\n    Modernizr._cssomPrefixes  = cssomPrefixes;\n    /*>>domprefixes*/\n\n    /*>>mq*/\n    // Modernizr.mq tests a given media query, live against the current state of the window\n    // A few important notes:\n    //   * If a browser does not support media queries at all (eg. oldIE) the mq() will always return false\n    //   * A max-width or orientation query will be evaluated against the current state, which may change later.\n    //   * You must specify values. Eg. If you are testing support for the min-width media query use:\n    //       Modernizr.mq('(min-width:0)')\n    // usage:\n    // Modernizr.mq('only screen and (max-width:768)')\n    Modernizr.mq            = testMediaQuery;\n    /*>>mq*/\n\n    /*>>hasevent*/\n    // Modernizr.hasEvent() detects support for a given event, with an optional element to test on\n    // Modernizr.hasEvent('gesturestart', elem)\n    Modernizr.hasEvent      = isEventSupported;\n    /*>>hasevent*/\n\n    /*>>testprop*/\n    // Modernizr.testProp() investigates whether a given style property is recognized\n    // Note that the property names must be provided in the camelCase variant.\n    // Modernizr.testProp('pointerEvents')\n    Modernizr.testProp      = function(prop){\n        return testProps([prop]);\n    };\n    /*>>testprop*/\n\n    /*>>testallprops*/\n    // Modernizr.testAllProps() investigates whether a given style property,\n    //   or any of its vendor-prefixed variants, is recognized\n    // Note that the property names must be provided in the camelCase variant.\n    // Modernizr.testAllProps('boxSizing')\n    Modernizr.testAllProps  = testPropsAll;\n    /*>>testallprops*/\n\n\n    /*>>teststyles*/\n    // Modernizr.testStyles() allows you to add custom styles to the document and test an element afterwards\n    // Modernizr.testStyles('#modernizr { position:absolute }', function(elem, rule){ ... })\n    Modernizr.testStyles    = injectElementWithStyles;\n    /*>>teststyles*/\n\n\n    /*>>prefixed*/\n    // Modernizr.prefixed() returns the prefixed or nonprefixed property name variant of your input\n    // Modernizr.prefixed('boxSizing') // 'MozBoxSizing'\n\n    // Properties must be passed as dom-style camelcase, rather than `box-sizing` hypentated style.\n    // Return values will also be the camelCase variant, if you need to translate that to hypenated style use:\n    //\n    //     str.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-');\n\n    // If you're trying to ascertain which transition end event to bind to, you might do something like...\n    //\n    //     var transEndEventNames = {\n    //       'WebkitTransition' : 'webkitTransitionEnd',\n    //       'MozTransition'    : 'transitionend',\n    //       'OTransition'      : 'oTransitionEnd',\n    //       'msTransition'     : 'MSTransitionEnd',\n    //       'transition'       : 'transitionend'\n    //     },\n    //     transEndEventName = transEndEventNames[ Modernizr.prefixed('transition') ];\n\n    Modernizr.prefixed      = function(prop, obj, elem){\n      if(!obj) {\n        return testPropsAll(prop, 'pfx');\n      } else {\n        // Testing DOM property e.g. Modernizr.prefixed('requestAnimationFrame', window) // 'mozRequestAnimationFrame'\n        return testPropsAll(prop, obj, elem);\n      }\n    };\n    /*>>prefixed*/\n\n\n    /*>>cssclasses*/\n    // Remove \"no-js\" class from <html> element, if it exists:\n    docElement.className = docElement.className.replace(/(^|\\s)no-js(\\s|$)/, '$1$2') +\n\n                            // Add the new classes to the <html> element.\n                            (enableClasses ? ' js ' + classes.join(' ') : '');\n    /*>>cssclasses*/\n\n    return Modernizr;\n\n})();\n", "document.addEventListener(\"turbolinks:load\", platformDetection);\n\nfunction platformDetection() {\n  // Target some UAs with specific CTAs such as app store downloads\n  var isIOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent) || (navigator.vendor.indexOf(\"Apple\") > -1 && \"ontouchstart\" in document.documentElement);\n  var isAndroid = /Android/g.test(navigator.userAgent);\n\n  if (isIOS) {\n    document.documentElement.classList.add('is-ios');\n  }\n\n  if (isAndroid) {\n    document.documentElement.classList.add('is-android');\n  }\n\n  if (isIOS || isAndroid) {\n    document.documentElement.classList.add('has-app');\n  } else {\n    document.documentElement.classList.add('no-app');\n  }\n}\n", "import $ from 'jquery'\n\n/*\n * Workaround to fix the z-index of the logo that hovers the top-bar\n * and the floating menus in the top-bar\n */\n\ndocument.addEventListener(\"turbolinks:load\", loadTopbar);\n\nfunction loadTopbar() {\n  var $topbar = $(\".js-topbar\");\n  var activeMenuClass = \"has-active-menu\";\n  var $menuButtons = $(\".js-dropdown-close-hack\");\n\n  // This is the semi-transparent overlay that blocks out the rest of the page\n  // when the menu is open\n  var $overlay = $('<div class=\"oog-topbar__overlay\" />')\n\n  $topbar.on(\"show.zf.dropdownMenu\", function () {\n    $topbar.toggleClass(activeMenuClass, true);\n    $overlay.appendTo($topbar);\n  });\n\n  $topbar.on(\"hide.zf.dropdownMenu\", function () {\n    $topbar.toggleClass(activeMenuClass, false);\n    $overlay.remove();\n  });\n\n  $menuButtons.on(\"touchend\", function (event) {\n    var $el = $(event.target);\n    var hackClass = \"is-active-hack\";\n\n    $el.toggleClass(hackClass);\n\n    setTimeout(function () {\n      if ($el.parent(\"li\").hasClass(\"is-active\") && !$el.hasClass(hackClass)) {\n        $(\"body\").click();\n      }\n    }, 50);\n  });\n\n  $(window).scroll(function () {\n    if ($(this).scrollTop() > 140) {\n      $topbar.addClass('is-stuck');\n    } else {\n      $topbar.removeClass('is-stuck');\n    }\n  });\n};\n", "/*!\n * Splide.js\n * Version  : 2.4.20\n * License  : MIT\n * Copyright: 2020 Naotoshi Fujita\n */!function(){\"use strict\";var t={d:function(n,e){for(var i in e)t.o(e,i)&&!t.o(n,i)&&Object.defineProperty(n,i,{enumerable:!0,get:e[i]})},o:function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},r:function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})}},n={};t.r(n),t.d(n,{CREATED:function(){return R},DESTROYED:function(){return X},IDLE:function(){return F},MOUNTED:function(){return B},MOVING:function(){return G}});function e(){return(e=Object.assign||function(t){for(var n=1;n<arguments.length;n++){var e=arguments[n];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])}return t}).apply(this,arguments)}var i=Object.keys;function o(t,n){i(t).some((function(e,i){return n(t[e],e,i)}))}function r(t){return i(t).map((function(n){return t[n]}))}function s(t){return\"object\"==typeof t}function a(t,n){var i=e({},t);return o(n,(function(t,n){s(t)?(s(i[n])||(i[n]={}),i[n]=a(i[n],t)):i[n]=t})),i}function u(t){return Array.isArray(t)?t:[t]}function c(t,n,e){return Math.min(Math.max(t,n>e?e:n),n>e?n:e)}function d(t,n){var e=0;return t.replace(/%s/g,(function(){return u(n)[e++]}))}function f(t){var n=typeof t;return\"number\"===n&&t>0?parseFloat(t)+\"px\":\"string\"===n?t:\"\"}function l(t){return t<10?\"0\"+t:t}function h(t,n){if(\"string\"==typeof n){var e=m(\"div\",{});E(e,{position:\"absolute\",width:n}),w(t,e),n=e.clientWidth,b(e)}return+n||0}function p(t,n){return t?t.querySelector(n.split(\" \")[0]):null}function g(t,n){return v(t,n)[0]}function v(t,n){return t?r(t.children).filter((function(t){return P(t,n.split(\" \")[0])||t.tagName===n})):[]}function m(t,n){var e=document.createElement(t);return o(n,(function(t,n){return C(e,n,t)})),e}function y(t){var n=m(\"div\",{});return n.innerHTML=t,n.firstChild}function b(t){u(t).forEach((function(t){if(t){var n=t.parentElement;n&&n.removeChild(t)}}))}function w(t,n){t&&t.appendChild(n)}function x(t,n){if(t&&n){var e=n.parentElement;e&&e.insertBefore(t,n)}}function E(t,n){t&&o(n,(function(n,e){null!==n&&(t.style[e]=n)}))}function _(t,n,e){t&&u(n).forEach((function(n){n&&t.classList[e?\"remove\":\"add\"](n)}))}function k(t,n){_(t,n,!1)}function S(t,n){_(t,n,!0)}function P(t,n){return!!t&&t.classList.contains(n)}function C(t,n,e){t&&t.setAttribute(n,e)}function z(t,n){return t?t.getAttribute(n):\"\"}function I(t,n){u(n).forEach((function(n){u(t).forEach((function(t){return t&&t.removeAttribute(n)}))}))}function M(t){return t.getBoundingClientRect()}var T=\"slide\",A=\"loop\",O=\"fade\",L=function(t,n){var e,i;return{mount:function(){e=n.Elements.list,t.on(\"transitionend\",(function(t){t.target===e&&i&&i()}),e)},start:function(o,r,s,a,u){var c=t.options,d=n.Controller.edgeIndex,f=c.speed;i=u,t.is(T)&&(0===s&&r>=d||s>=d&&0===r)&&(f=c.rewindSpeed||f),E(e,{transition:\"transform \"+f+\"ms \"+c.easing,transform:\"translate(\"+a.x+\"px,\"+a.y+\"px)\"})}}},W=function(t,n){function e(e){var i=t.options;E(n.Elements.slides[e],{transition:\"opacity \"+i.speed+\"ms \"+i.easing})}return{mount:function(){e(t.index)},start:function(t,i,o,r,s){var a=n.Elements.track;E(a,{height:f(a.clientHeight)}),e(i),setTimeout((function(){s(),E(a,{height:\"\"})}))}}};function H(t){console.error(\"[SPLIDE] \"+t)}function j(t,n){if(!t)throw new Error(n)}var q=\"splide\",D={active:\"is-active\",visible:\"is-visible\",loading:\"is-loading\"},N={type:\"slide\",rewind:!1,speed:400,rewindSpeed:0,waitForTransition:!0,width:0,height:0,fixedWidth:0,fixedHeight:0,heightRatio:0,autoWidth:!1,autoHeight:!1,perPage:1,perMove:0,clones:0,start:0,focus:!1,gap:0,padding:0,arrows:!0,arrowPath:\"\",pagination:!0,autoplay:!1,interval:5e3,pauseOnHover:!0,pauseOnFocus:!0,resetProgress:!0,lazyLoad:!1,preloadPages:1,easing:\"cubic-bezier(.42,.65,.27,.99)\",keyboard:\"global\",drag:!0,dragAngleThreshold:30,swipeDistanceThreshold:150,flickVelocityThreshold:.6,flickPower:600,flickMaxPages:1,direction:\"ltr\",cover:!1,accessibility:!0,slideFocus:!0,isNavigation:!1,trimSpace:!0,updateOnMove:!1,throttle:100,destroy:!1,breakpoints:!1,classes:{root:q,slider:q+\"__slider\",track:q+\"__track\",list:q+\"__list\",slide:q+\"__slide\",container:q+\"__slide__container\",arrows:q+\"__arrows\",arrow:q+\"__arrow\",prev:q+\"__arrow--prev\",next:q+\"__arrow--next\",pagination:q+\"__pagination\",page:q+\"__pagination__page\",clone:q+\"__slide--clone\",progress:q+\"__progress\",bar:q+\"__progress__bar\",autoplay:q+\"__autoplay\",play:q+\"__play\",pause:q+\"__pause\",spinner:q+\"__spinner\",sr:q+\"__sr\"},i18n:{prev:\"Previous slide\",next:\"Next slide\",first:\"Go to first slide\",last:\"Go to last slide\",slideX:\"Go to slide %s\",pageX:\"Go to page %s\",play:\"Start autoplay\",pause:\"Pause autoplay\"}},R=1,B=2,F=3,G=4,X=5;function V(t,n){for(var e=0;e<n.length;e++){var i=n[e];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}var U=function(){function t(t,e,i){var o;void 0===e&&(e={}),void 0===i&&(i={}),this.root=t instanceof Element?t:document.querySelector(t),j(this.root,\"An invalid element/selector was given.\"),this.Components=null,this.Event=function(){var t=[];function n(t){t.elm&&t.elm.removeEventListener(t.event,t.handler,t.options)}return{on:function(n,e,i,o){void 0===i&&(i=null),void 0===o&&(o={}),n.split(\" \").forEach((function(n){i&&i.addEventListener(n,e,o),t.push({event:n,handler:e,elm:i,options:o})}))},off:function(e,i){void 0===i&&(i=null),e.split(\" \").forEach((function(e){t=t.filter((function(t){return!t||t.event!==e||t.elm!==i||(n(t),!1)}))}))},emit:function(n){for(var e=arguments.length,i=new Array(e>1?e-1:0),o=1;o<e;o++)i[o-1]=arguments[o];t.forEach((function(t){t.elm||t.event.split(\".\")[0]!==n||t.handler.apply(t,i)}))},destroy:function(){t.forEach(n),t=[]}}}(),this.State=(o=R,{set:function(t){o=t},is:function(t){return t===o}}),this.STATES=n,this._o=a(N,e),this._i=0,this._c=i,this._e={},this._t=null}var e,i,s,u=t.prototype;return u.mount=function(t,n){var e=this;void 0===t&&(t=this._e),void 0===n&&(n=this._t),this.State.set(R),this._e=t,this._t=n,this.Components=function(t,n,e){var i={};return o(n,(function(n,e){i[e]=n(t,i,e.toLowerCase())})),e||(e=t.is(O)?W:L),i.Transition=e(t,i),i}(this,a(this._c,t),n);try{o(this.Components,(function(t,n){var i=t.required;void 0===i||i?t.mount&&t.mount():delete e.Components[n]}))}catch(t){return void H(t.message)}var i=this.State;return i.set(B),o(this.Components,(function(t){t.mounted&&t.mounted()})),this.emit(\"mounted\"),i.set(F),this.emit(\"ready\"),E(this.root,{visibility:\"visible\"}),this.on(\"move drag\",(function(){return i.set(G)})).on(\"moved dragged\",(function(){return i.set(F)})),this},u.sync=function(t){return this.sibling=t,this},u.on=function(t,n,e,i){return void 0===e&&(e=null),void 0===i&&(i={}),this.Event.on(t,n,e,i),this},u.off=function(t,n){return void 0===n&&(n=null),this.Event.off(t,n),this},u.emit=function(t){for(var n,e=arguments.length,i=new Array(e>1?e-1:0),o=1;o<e;o++)i[o-1]=arguments[o];return(n=this.Event).emit.apply(n,[t].concat(i)),this},u.go=function(t,n){return void 0===n&&(n=this.options.waitForTransition),(this.State.is(F)||this.State.is(G)&&!n)&&this.Components.Controller.go(t,!1),this},u.is=function(t){return t===this._o.type},u.add=function(t,n){return void 0===n&&(n=-1),this.Components.Elements.add(t,n,this.refresh.bind(this)),this},u.remove=function(t){return this.Components.Elements.remove(t),this.refresh(),this},u.refresh=function(){return this.emit(\"refresh:before\").emit(\"refresh\").emit(\"resize\"),this},u.destroy=function(t){var n=this;if(void 0===t&&(t=!0),!this.State.is(R))return r(this.Components).reverse().forEach((function(n){n.destroy&&n.destroy(t)})),this.emit(\"destroy\",t),this.Event.destroy(),this.State.set(X),this;this.on(\"ready\",(function(){return n.destroy(t)}))},e=t,(i=[{key:\"index\",get:function(){return this._i},set:function(t){this._i=parseInt(t)}},{key:\"length\",get:function(){return this.Components.Elements.length}},{key:\"options\",get:function(){return this._o},set:function(t){var n=this.State.is(R);n||this.emit(\"update\"),this._o=a(this._o,t),n||this.emit(\"updated\",this._o)}},{key:\"classes\",get:function(){return this._o.classes}},{key:\"i18n\",get:function(){return this._o.i18n}}])&&V(e.prototype,i),s&&V(e,s),t}(),Y=function(t){var n=z(t.root,\"data-splide\");if(n)try{t.options=JSON.parse(n)}catch(t){H(t.message)}return{mount:function(){t.State.is(R)&&(t.index=t.options.start)}}},J=\"rtl\",K=\"ttb\",Q=\"update.slide\",Z=function(t,n){var e=t.root,i=t.classes,s=[];if(!e.id){window.splide=window.splide||{};var a=window.splide.uid||0;window.splide.uid=++a,e.id=\"splide\"+l(a)}var u={mount:function(){var n=this;this.init(),t.on(\"refresh\",(function(){n.destroy(),n.init()})).on(\"updated\",(function(){S(e,c()),k(e,c())}))},destroy:function(){s.forEach((function(t){t.destroy()})),s=[],S(e,c())},init:function(){var t=this;!function(){u.slider=g(e,i.slider),u.track=p(e,\".\"+i.track),u.list=g(u.track,i.list),j(u.track&&u.list,\"Track or list was not found.\"),u.slides=v(u.list,i.slide);var t=d(i.arrows);u.arrows={prev:p(t,\".\"+i.prev),next:p(t,\".\"+i.next)};var n=d(i.autoplay);u.bar=p(d(i.progress),\".\"+i.bar),u.play=p(n,\".\"+i.play),u.pause=p(n,\".\"+i.pause),u.track.id=u.track.id||e.id+\"-track\",u.list.id=u.list.id||e.id+\"-list\"}(),k(e,c()),this.slides.forEach((function(n,e){t.register(n,e,-1)}))},register:function(n,e,i){var o=function(t,n,e,i){var o=t.options.updateOnMove,s=\"ready.slide updated.slide resized.slide moved.slide\"+(o?\" move.slide\":\"\"),a={slide:i,index:n,realIndex:e,container:g(i,t.classes.container),isClone:e>-1,mount:function(){var r=this;this.isClone||(i.id=t.root.id+\"-slide\"+l(n+1)),t.on(s,(function(){return r.update()})).on(Q,c).on(\"click\",(function(){return t.emit(\"click\",r)}),i),o&&t.on(\"move.slide\",(function(t){t===e&&u(!0,!1)})),E(i,{display:\"\"}),this.styles=z(i,\"style\")||\"\"},destroy:function(){t.off(s).off(Q).off(\"click\",i),S(i,r(D)),c(),I(this.container,\"style\")},update:function(){u(this.isActive(),!1),u(this.isVisible(),!0)},isActive:function(){return t.index===n},isVisible:function(){var n=this.isActive();if(t.is(O)||n)return n;var e=Math.ceil,o=M(t.Components.Elements.track),r=M(i);return t.options.direction===K?o.top<=r.top&&r.bottom<=e(o.bottom):o.left<=r.left&&r.right<=e(o.right)},isWithin:function(e,i){var o=Math.abs(e-n);return t.is(T)||this.isClone||(o=Math.min(o,t.length-o)),o<i}};function u(n,e){var o=e?\"visible\":\"active\",r=D[o];n?(k(i,r),t.emit(\"\"+o,a)):P(i,r)&&(S(i,r),t.emit(e?\"hidden\":\"inactive\",a))}function c(){C(i,\"style\",a.styles)}return a}(t,e,i,n);o.mount(),s.push(o)},getSlide:function(t){return s.filter((function(n){return n.index===t}))[0]},getSlides:function(t){return t?s:s.filter((function(t){return!t.isClone}))},getSlidesByPage:function(e){var i=n.Controller.toIndex(e),o=t.options,r=!1!==o.focus?1:o.perPage;return s.filter((function(t){var n=t.index;return i<=n&&n<i+r}))},add:function(t,n,e){if(\"string\"==typeof t&&(t=y(t)),t instanceof Element){var i=this.slides[n];E(t,{display:\"none\"}),i?(x(t,i),this.slides.splice(n,0,t)):(w(this.list,t),this.slides.push(t)),function(t,n){var e=t.querySelectorAll(\"img\"),i=e.length;if(i){var r=0;o(e,(function(t){t.onload=t.onerror=function(){++r===i&&n()}}))}else n()}(t,(function(){e&&e(t)}))}},remove:function(t){b(this.slides.splice(t,1)[0])},each:function(t){s.forEach(t)},get length(){return this.slides.length},get total(){return s.length}};function c(){var n=i.root,e=t.options;return[n+\"--\"+e.type,n+\"--\"+e.direction,e.drag?n+\"--draggable\":\"\",e.isNavigation?n+\"--nav\":\"\",D.active]}function d(t){return g(e,t)||g(u.slider,t)}return u},$=Math.floor,tt=function(t,n){var e,i,o={mount:function(){e=t.options,i=t.is(A),t.on(\"move\",(function(n){t.index=n})).on(\"updated refresh\",(function(n){e=n||e,t.index=c(t.index,0,o.edgeIndex)}))},go:function(t,e){var i=this.trim(this.parse(t));n.Track.go(i,this.rewind(i),e)},parse:function(n){var i=t.index,r=String(n).match(/([+\\-<>]+)(\\d+)?/),s=r?r[1]:\"\",a=r?parseInt(r[2]):0;switch(s){case\"+\":i+=a||1;break;case\"-\":i-=a||1;break;case\">\":case\"<\":i=function(t,n,i){if(t>-1)return o.toIndex(t);var r=e.perMove,s=i?-1:1;if(r)return n+r*s;return o.toIndex(o.toPage(n)+s)}(a,i,\"<\"===s);break;default:i=parseInt(n)}return i},toIndex:function(n){if(r())return n;var i=t.length,o=e.perPage,s=n*o;return i-o<=(s-=(this.pageLength*o-i)*$(s/i))&&s<i&&(s=i-o),s},toPage:function(n){if(r())return n;var i=t.length,o=e.perPage;return $(i-o<=n&&n<i?(i-1)/o:n/o)},trim:function(t){return i||(t=e.rewind?this.rewind(t):c(t,0,this.edgeIndex)),t},rewind:function(t){var n=this.edgeIndex;if(i){for(;t>n;)t-=n+1;for(;t<0;)t+=n+1}else t>n?t=0:t<0&&(t=n);return t},isRtl:function(){return e.direction===J},get pageLength(){var n=t.length;return r()?n:Math.ceil(n/e.perPage)},get edgeIndex(){var n=t.length;return n?r()||e.isNavigation||i?n-1:n-e.perPage:0},get prevIndex(){var n=t.index-1;return(i||e.rewind)&&(n=this.rewind(n)),n>-1?n:-1},get nextIndex(){var n=t.index+1;return(i||e.rewind)&&(n=this.rewind(n)),t.index<n&&n<=this.edgeIndex||0===n?n:-1}};function r(){return!1!==e.focus}return o},nt=Math.abs,et=function(t,n){var e,i,o,r=t.options.direction===K,s=t.is(O),a=t.options.direction===J,u=!1,d=a?1:-1,f={sign:d,mount:function(){i=n.Elements,e=n.Layout,o=i.list},mounted:function(){var n=this;s||(this.jump(0),t.on(\"mounted resize updated\",(function(){n.jump(t.index)})))},go:function(e,i,o){var r=h(e),a=t.index;t.State.is(G)&&u||(u=e!==i,o||t.emit(\"move\",i,a,e),Math.abs(r-this.position)>=1||s?n.Transition.start(e,i,a,this.toCoord(r),(function(){l(e,i,a,o)})):e!==a&&\"move\"===t.options.trimSpace?n.Controller.go(e+e-a,o):l(e,i,a,o))},jump:function(t){this.translate(h(t))},translate:function(t){E(o,{transform:\"translate\"+(r?\"Y\":\"X\")+\"(\"+t+\"px)\"})},cancel:function(){t.is(A)?this.shift():this.translate(this.position),E(o,{transition:\"\"})},shift:function(){var n=nt(this.position),e=nt(this.toPosition(0)),i=nt(this.toPosition(t.length)),o=i-e;n<e?n+=o:n>i&&(n-=o),this.translate(d*n)},trim:function(n){return!t.options.trimSpace||t.is(A)?n:c(n,d*(e.totalSize()-e.size-e.gap),0)},toIndex:function(t){var n=this,e=0,o=1/0;return i.getSlides(!0).forEach((function(i){var r=i.index,s=nt(n.toPosition(r)-t);s<o&&(o=s,e=r)})),e},toCoord:function(t){return{x:r?0:t,y:r?t:0}},toPosition:function(t){var n=e.totalSize(t)-e.slideSize(t)-e.gap;return d*(n+this.offset(t))},offset:function(n){var i=t.options.focus,o=e.slideSize(n);return\"center\"===i?-(e.size-o)/2:-(parseInt(i)||0)*(o+e.gap)},get position(){var t=r?\"top\":a?\"right\":\"left\";return M(o)[t]-(M(i.track)[t]-e.padding[t]*d)}};function l(n,e,i,r){E(o,{transition:\"\"}),u=!1,s||f.jump(e),r||t.emit(\"moved\",e,i,n)}function h(t){return f.trim(f.toPosition(t))}return f},it=function(t,n){var e=[],i=0,o=n.Elements,r={mount:function(){var n=this;t.is(A)&&(s(),t.on(\"refresh:before\",(function(){n.destroy()})).on(\"refresh\",s).on(\"resize\",(function(){i!==a()&&(n.destroy(),t.refresh())})))},destroy:function(){b(e),e=[]},get clones(){return e},get length(){return e.length}};function s(){r.destroy(),function(t){var n=o.length,i=o.register;if(n){for(var r=o.slides;r.length<t;)r=r.concat(r);r.slice(0,t).forEach((function(t,r){var s=u(t);w(o.list,s),e.push(s),i(s,r+n,r%n)})),r.slice(-t).forEach((function(o,s){var a=u(o);x(a,r[0]),e.push(a),i(a,s-t,(n+s-t%n)%n)}))}}(i=a())}function a(){var n=t.options;if(n.clones)return n.clones;var e=n.autoWidth||n.autoHeight?o.length:n.perPage,i=n.direction===K?\"Height\":\"Width\",r=h(t.root,n[\"fixed\"+i]);return r&&(e=Math.ceil(o.track[\"client\"+i]/r)),e*(n.drag?n.flickMaxPages+1:1)}function u(n){var e=n.cloneNode(!0);return k(e,t.classes.clone),I(e,\"id\"),e}return r};function ot(t,n){var e;return function(){e||(e=setTimeout((function(){t(),e=null}),n))}}var rt=function(t,n){var e,o,r=n.Elements,s=t.options.direction===K,a=(e={mount:function(){t.on(\"resize load\",ot((function(){t.emit(\"resize\")}),t.options.throttle),window).on(\"resize\",c).on(\"updated refresh\",u),u(),this.totalSize=s?this.totalHeight:this.totalWidth,this.slideSize=s?this.slideHeight:this.slideWidth},destroy:function(){I([r.list,r.track],\"style\")},get size(){return s?this.height:this.width}},o=s?function(t,n){var e,i,o=n.Elements,r=t.root;return{margin:\"marginBottom\",init:function(){this.resize()},resize:function(){i=t.options,e=o.track,this.gap=h(r,i.gap);var n=i.padding,s=h(r,n.top||n),a=h(r,n.bottom||n);this.padding={top:s,bottom:a},E(e,{paddingTop:f(s),paddingBottom:f(a)})},totalHeight:function(n){void 0===n&&(n=t.length-1);var e=o.getSlide(n);return e?M(e.slide).bottom-M(o.list).top+this.gap:0},slideWidth:function(){return h(r,i.fixedWidth||this.width)},slideHeight:function(t){if(i.autoHeight){var n=o.getSlide(t);return n?n.slide.offsetHeight:0}var e=i.fixedHeight||(this.height+this.gap)/i.perPage-this.gap;return h(r,e)},get width(){return e.clientWidth},get height(){var t=i.height||this.width*i.heightRatio;return j(t,'\"height\" or \"heightRatio\" is missing.'),h(r,t)-this.padding.top-this.padding.bottom}}}(t,n):function(t,n){var e,i=n.Elements,o=t.root,r=t.options;return{margin:\"margin\"+(r.direction===J?\"Left\":\"Right\"),height:0,init:function(){this.resize()},resize:function(){r=t.options,e=i.track,this.gap=h(o,r.gap);var n=r.padding,s=h(o,n.left||n),a=h(o,n.right||n);this.padding={left:s,right:a},E(e,{paddingLeft:f(s),paddingRight:f(a)})},totalWidth:function(n){void 0===n&&(n=t.length-1);var e=i.getSlide(n),o=0;if(e){var s=M(e.slide),a=M(i.list);o=r.direction===J?a.right-s.left:s.right-a.left,o+=this.gap}return o},slideWidth:function(t){if(r.autoWidth){var n=i.getSlide(t);return n?n.slide.offsetWidth:0}var e=r.fixedWidth||(this.width+this.gap)/r.perPage-this.gap;return h(o,e)},slideHeight:function(){var t=r.height||r.fixedHeight||this.width*r.heightRatio;return h(o,t)},get width(){return e.clientWidth-this.padding.left-this.padding.right}}}(t,n),i(o).forEach((function(t){e[t]||Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))})),e);function u(){a.init(),E(t.root,{maxWidth:f(t.options.width)}),r.each((function(t){t.slide.style[a.margin]=f(a.gap)})),c()}function c(){var n=t.options;a.resize(),E(r.track,{height:f(a.height)});var e=n.autoHeight?null:f(a.slideHeight());r.each((function(t){E(t.container,{height:e}),E(t.slide,{width:n.autoWidth?null:f(a.slideWidth(t.index)),height:t.container?null:e})})),t.emit(\"resized\")}return a},st=Math.abs,at=function(t,n){var e,i,r,s,a=n.Track,u=n.Controller,d=t.options.direction===K,f=d?\"y\":\"x\",l={disabled:!1,mount:function(){var e=this,i=n.Elements,r=i.track;t.on(\"touchstart mousedown\",h,r).on(\"touchmove mousemove\",g,r,{passive:!1}).on(\"touchend touchcancel mouseleave mouseup dragend\",v,r).on(\"mounted refresh\",(function(){o(i.list.querySelectorAll(\"img, a\"),(function(n){t.off(\"dragstart\",n).on(\"dragstart\",(function(t){t.preventDefault()}),n,{passive:!1})}))})).on(\"mounted updated\",(function(){e.disabled=!t.options.drag}))}};function h(t){l.disabled||s||p(t)}function p(t){e=a.toCoord(a.position),i=m(t,{}),r=i}function g(n){if(i)if(r=m(n,i),s){if(n.cancelable&&n.preventDefault(),!t.is(O)){var o=e[f]+r.offset[f];a.translate(function(n){if(t.is(T)){var e=a.sign,i=e*a.trim(a.toPosition(0)),o=e*a.trim(a.toPosition(u.edgeIndex));(n*=e)<i?n=i-7*Math.log(i-n):n>o&&(n=o+7*Math.log(n-o)),n*=e}return n}(o))}}else(function(n){var e=n.offset;if(t.State.is(G)&&t.options.waitForTransition)return!1;var i=180*Math.atan(st(e.y)/st(e.x))/Math.PI;d&&(i=90-i);return i<t.options.dragAngleThreshold})(r)&&(t.emit(\"drag\",i),s=!0,a.cancel(),p(n))}function v(){i=null,s&&(t.emit(\"dragged\",r),function(e){var i=e.velocity[f],o=st(i);if(o>0){var r=t.options,s=t.index,d=i<0?-1:1,l=s;if(!t.is(O)){var h=a.position;o>r.flickVelocityThreshold&&st(e.offset[f])<r.swipeDistanceThreshold&&(h+=d*Math.min(o*r.flickPower,n.Layout.size*(r.flickMaxPages||1))),l=a.toIndex(h)}l===s&&o>.1&&(l=s+d*a.sign),t.is(T)&&(l=c(l,0,u.edgeIndex)),u.go(l,r.isNavigation)}}(r),s=!1)}function m(t,n){var e=t.timeStamp,i=t.touches,o=i?i[0]:t,r=o.clientX,s=o.clientY,a=n.to||{},u=a.x,c=void 0===u?r:u,d=a.y,f={x:r-c,y:s-(void 0===d?s:d)},l=e-(n.time||0);return{to:{x:r,y:s},offset:f,time:e,velocity:{x:f.x/l,y:f.y/l}}}return l},ut=function(t,n){var e=!1;function i(t){e&&(t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation())}return{required:t.options.drag,mount:function(){t.on(\"click\",i,n.Elements.track,{capture:!0}).on(\"drag\",(function(){e=!0})).on(\"dragged\",(function(){setTimeout((function(){e=!1}))}))}}},ct=1,dt=2,ft=3,lt=function(t,n,e){var i,o,r,s=t.classes,a=t.root,u=n.Elements;function c(){var r=n.Controller,s=r.prevIndex,a=r.nextIndex,u=t.length>t.options.perPage||t.is(A);i.disabled=s<0||!u,o.disabled=a<0||!u,t.emit(e+\":updated\",i,o,s,a)}function d(n){return y('<button class=\"'+s.arrow+\" \"+(n?s.prev:s.next)+'\" type=\"button\"><svg xmlns=\"http://www.w3.org/2000/svg\"\\tviewBox=\"0 0 40 40\"\\twidth=\"40\"\\theight=\"40\"><path d=\"'+(t.options.arrowPath||\"m15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z\")+'\" />')}return{required:t.options.arrows,mount:function(){i=u.arrows.prev,o=u.arrows.next,i&&o||!t.options.arrows||(i=d(!0),o=d(!1),r=!0,function(){var n=m(\"div\",{class:s.arrows});w(n,i),w(n,o);var e=u.slider,r=\"slider\"===t.options.arrows&&e?e:a;x(n,r.firstElementChild)}()),i&&o&&t.on(\"click\",(function(){t.go(\"<\")}),i).on(\"click\",(function(){t.go(\">\")}),o).on(\"mounted move updated refresh\",c),this.arrows={prev:i,next:o}},mounted:function(){t.emit(e+\":mounted\",i,o)},destroy:function(){I([i,o],\"disabled\"),r&&b(i.parentElement)}}},ht=\"move.page\",pt=\"updated.page refresh.page\",gt=function(t,n,e){var i={},o=n.Elements,r={mount:function(){var n=t.options.pagination;if(n){i=function(){var n=t.options,e=t.classes,i=m(\"ul\",{class:e.pagination}),r=o.getSlides(!1).filter((function(t){return!1!==n.focus||t.index%n.perPage==0})).map((function(n,r){var s=m(\"li\",{}),a=m(\"button\",{class:e.page,type:\"button\"});return w(s,a),w(i,s),t.on(\"click\",(function(){t.go(\">\"+r)}),a),{li:s,button:a,page:r,Slides:o.getSlidesByPage(r)}}));return{list:i,items:r}}();var e=o.slider;w(\"slider\"===n&&e?e:t.root,i.list),t.on(ht,s)}t.off(pt).on(pt,(function(){r.destroy(),t.options.pagination&&(r.mount(),r.mounted())}))},mounted:function(){if(t.options.pagination){var n=t.index;t.emit(e+\":mounted\",i,this.getItem(n)),s(n,-1)}},destroy:function(){b(i.list),i.items&&i.items.forEach((function(n){t.off(\"click\",n.button)})),t.off(ht),i={}},getItem:function(t){return i.items[n.Controller.toPage(t)]},get data(){return i}};function s(n,o){var s=r.getItem(o),a=r.getItem(n),u=D.active;s&&S(s.button,u),a&&k(a.button,u),t.emit(e+\":updated\",i,s,a)}return r},vt=\"data-splide-lazy\",mt=\"data-splide-lazy-srcset\",yt=\"aria-current\",bt=\"aria-controls\",wt=\"aria-label\",xt=\"aria-hidden\",Et=\"tabindex\",_t={ltr:{ArrowLeft:\"<\",ArrowRight:\">\",Left:\"<\",Right:\">\"},rtl:{ArrowLeft:\">\",ArrowRight:\"<\",Left:\">\",Right:\"<\"},ttb:{ArrowUp:\"<\",ArrowDown:\">\",Up:\"<\",Down:\">\"}},kt=function(t,n){var e=t.i18n,i=n.Elements,o=[xt,Et,bt,wt,yt,\"role\"];function r(n,e){C(n,xt,!e),t.options.slideFocus&&C(n,Et,e?0:-1)}function s(t,n){var e=i.track.id;C(t,bt,e),C(n,bt,e)}function a(n,i,o,r){var s=t.index,a=o>-1&&s<o?e.last:e.prev,u=r>-1&&s>r?e.first:e.next;C(n,wt,a),C(i,wt,u)}function u(n,i){i&&C(i.button,yt,!0),n.items.forEach((function(n){var i=t.options,o=d(!1===i.focus&&i.perPage>1?e.pageX:e.slideX,n.page+1),r=n.button,s=n.Slides.map((function(t){return t.slide.id}));C(r,bt,s.join(\" \")),C(r,wt,o)}))}function c(t,n,e){n&&I(n.button,yt),e&&C(e.button,yt,!0)}function f(t){i.each((function(n){var i=n.slide,o=n.realIndex;h(i)||C(i,\"role\",\"button\");var r=o>-1?o:n.index,s=d(e.slideX,r+1),a=t.Components.Elements.getSlide(r);C(i,wt,s),a&&C(i,bt,a.slide.id)}))}function l(t,n){var e=t.slide;n?C(e,yt,!0):I(e,yt)}function h(t){return\"BUTTON\"===t.tagName}return{required:t.options.accessibility,mount:function(){t.on(\"visible\",(function(t){r(t.slide,!0)})).on(\"hidden\",(function(t){r(t.slide,!1)})).on(\"arrows:mounted\",s).on(\"arrows:updated\",a).on(\"pagination:mounted\",u).on(\"pagination:updated\",c).on(\"refresh\",(function(){I(n.Clones.clones,o)})),t.options.isNavigation&&t.on(\"navigation:mounted navigation:updated\",f).on(\"active\",(function(t){l(t,!0)})).on(\"inactive\",(function(t){l(t,!1)})),[\"play\",\"pause\"].forEach((function(t){var n=i[t];n&&(h(n)||C(n,\"role\",\"button\"),C(n,bt,i.track.id),C(n,wt,e[t]))}))},destroy:function(){var t=n.Arrows,e=t?t.arrows:{};I(i.slides.concat([e.prev,e.next,i.play,i.pause]),o)}}},St=\"move.sync\",Pt=\"mouseup touchend\",Ct=[\" \",\"Enter\",\"Spacebar\"],zt={Options:Y,Breakpoints:function(t){var n,e,i=t.options.breakpoints,o=ot(s,50),r=[];function s(){var o,s=(o=r.filter((function(t){return t.mql.matches}))[0])?o.point:-1;if(s!==e){e=s;var a=t.State,u=i[s]||n,c=u.destroy;c?(t.options=n,t.destroy(\"completely\"===c)):(a.is(X)&&t.mount(),t.options=u)}}return{required:i&&matchMedia,mount:function(){r=Object.keys(i).sort((function(t,n){return+t-+n})).map((function(t){return{point:t,mql:matchMedia(\"(max-width:\"+t+\"px)\")}})),this.destroy(!0),addEventListener(\"resize\",o),n=t.options,s()},destroy:function(t){t&&removeEventListener(\"resize\",o)}}},Controller:tt,Elements:Z,Track:et,Clones:it,Layout:rt,Drag:at,Click:ut,Autoplay:function(t,n,e){var i,o=[],r=n.Elements,s={required:t.options.autoplay,mount:function(){var n=t.options;r.slides.length>n.perPage&&(i=function(t,n,e){var i,o,r,s=window.requestAnimationFrame,a=!0,u=function u(c){a||(i||(i=c,r&&r<1&&(i-=r*n)),r=(o=c-i)/n,o>=n&&(i=0,r=1,t()),e&&e(r),s(u))};return{pause:function(){a=!0,i=0},play:function(t){i=0,t&&(r=0),a&&(a=!1,s(u))}}}((function(){t.go(\">\")}),n.interval,(function(n){t.emit(e+\":playing\",n),r.bar&&E(r.bar,{width:100*n+\"%\"})})),function(){var n=t.options,e=t.sibling,i=[t.root,e?e.root:null];n.pauseOnHover&&(a(i,\"mouseleave\",ct,!0),a(i,\"mouseenter\",ct,!1));n.pauseOnFocus&&(a(i,\"focusout\",dt,!0),a(i,\"focusin\",dt,!1));r.play&&t.on(\"click\",(function(){s.play(dt),s.play(ft)}),r.play);r.pause&&a([r.pause],\"click\",ft,!1);t.on(\"move refresh\",(function(){s.play()})).on(\"destroy\",(function(){s.pause()}))}(),this.play())},play:function(n){void 0===n&&(n=0),(o=o.filter((function(t){return t!==n}))).length||(t.emit(e+\":play\"),i.play(t.options.resetProgress))},pause:function(n){void 0===n&&(n=0),i.pause(),-1===o.indexOf(n)&&o.push(n),1===o.length&&t.emit(e+\":pause\")}};function a(n,e,i,o){n.forEach((function(n){t.on(e,(function(){s[o?\"play\":\"pause\"](i)}),n)}))}return s},Cover:function(t,n){function e(t){n.Elements.each((function(n){var e=g(n.slide,\"IMG\")||g(n.container,\"IMG\");e&&e.src&&i(e,t)}))}function i(t,n){E(t.parentElement,{background:n?\"\":'center/cover no-repeat url(\"'+t.src+'\")'}),E(t,{display:n?\"\":\"none\"})}return{required:t.options.cover,mount:function(){t.on(\"lazyload:loaded\",(function(t){i(t,!1)})),t.on(\"mounted updated refresh\",(function(){return e(!1)}))},destroy:function(){e(!0)}}},Arrows:lt,Pagination:gt,LazyLoad:function(t,n,e){var i,r,s=t.options,a=\"sequential\"===s.lazyLoad;function u(){r=[],i=0}function c(n){n=isNaN(n)?t.index:n,(r=r.filter((function(t){return!t.Slide.isWithin(n,s.perPage*(s.preloadPages+1))||(d(t.img,t.Slide),!1)})))[0]||t.off(\"moved.\"+e)}function d(n,e){k(e.slide,D.loading);var i=m(\"span\",{class:t.classes.spinner});w(n.parentElement,i),n.onload=function(){l(n,i,e,!1)},n.onerror=function(){l(n,i,e,!0)},C(n,\"srcset\",z(n,mt)||\"\"),C(n,\"src\",z(n,vt)||\"\")}function f(){if(i<r.length){var t=r[i];d(t.img,t.Slide)}i++}function l(n,i,o,r){S(o.slide,D.loading),r||(b(i),E(n,{display:\"\"}),t.emit(e+\":loaded\",n).emit(\"resize\")),a&&f()}return{required:s.lazyLoad,mount:function(){t.on(\"mounted refresh\",(function(){u(),n.Elements.each((function(t){o(t.slide.querySelectorAll(\"[data-splide-lazy], [\"+mt+\"]\"),(function(n){n.src||n.srcset||(r.push({img:n,Slide:t}),E(n,{display:\"none\"}))}))})),a&&f()})),a||t.on(\"mounted refresh moved.\"+e,c)},destroy:u}},Keyboard:function(t){var n;return{mount:function(){t.on(\"mounted updated\",(function(){var e=t.options,i=t.root,o=_t[e.direction],r=e.keyboard;n&&(t.off(\"keydown\",n),I(i,Et)),r&&(\"focused\"===r?(n=i,C(i,Et,0)):n=document,t.on(\"keydown\",(function(n){o[n.key]&&t.go(o[n.key])}),n))}))}}},Sync:function(t){var n=t.sibling,e=n&&n.options.isNavigation;function i(){t.on(St,(function(t,e,i){n.off(St).go(n.is(A)?i:t,!1),o()}))}function o(){n.on(St,(function(n,e,o){t.off(St).go(t.is(A)?o:n,!1),i()}))}function r(){n.Components.Elements.each((function(n){var e=n.slide,i=n.index;t.off(Pt,e).on(Pt,(function(t){t.button&&0!==t.button||s(i)}),e),t.off(\"keyup\",e).on(\"keyup\",(function(t){Ct.indexOf(t.key)>-1&&(t.preventDefault(),s(i))}),e,{passive:!1})}))}function s(e){t.State.is(F)&&n.go(e)}return{required:!!n,mount:function(){i(),o(),e&&(r(),t.on(\"refresh\",(function(){setTimeout((function(){r(),n.emit(\"navigation:updated\",t)}))})))},mounted:function(){e&&n.emit(\"navigation:mounted\",t)}}},A11y:kt};var It=function(t){var n,e;function i(n,e){return t.call(this,n,e,zt)||this}return e=t,(n=i).prototype=Object.create(e.prototype),n.prototype.constructor=n,n.__proto__=e,i}(U);window.Splide=It}();", "import '@splidejs/splide/dist/js/splide.min.js'\n\nwindow.addEventListener(\"DOMContentLoaded\", loadSplide);\nwindow.addEventListener(\"turbolinks:load\", loadSplide);\n\nfunction loadSplide() {\n  const options = {\n    type: \"loop\",\n    pagination: false,\n    padding: {\n      right: \"35rem\",\n      left: \"35rem\",\n    },\n    gap: \"5rem\",\n    breakpoints: {\n      1500: {\n        gap: \"4rem\",\n        padding: {\n          right: \"20rem\",\n          left: \"20rem\",\n        },\n      },\n      1000: {\n        gap: \"3rem\",\n        padding: {\n          right: \"14rem\",\n          left: \"14rem\",\n        },\n      },\n      700: {\n        gap: \"2rem\",\n        padding: {\n          right: \"9rem\",\n          left: \"9rem\",\n        },\n      },\n      500: {\n        gap: \"2rem\",\n        padding: {\n          right: \"6rem\",\n          left: \"6rem\",\n        },\n      },\n    },\n  };\n\n  const className = \".js-splide-mount\";\n  const splides = document.querySelectorAll(className);\n\n  for(const splideElement of splides) {\n    new Splide(splideElement, options).mount();\n  }\n}\n", "window.addEventListener(\"DOMContentLoaded\", loadModals);\nwindow.addEventListener(\"turbolinks:load\", loadModals);\n\nfunction loadModals() {\n  const buttons = document.querySelectorAll(\"[data-toggle]\");\n\n  for(const button of buttons) {\n    const modal_id = button.getAttribute(\"data-toggle\");\n    const modal = document.getElementById(modal_id);\n\n    button.addEventListener(\"click\", function (event) {\n      modal.classList.add(\"oog-video-modal--open\");\n      modal.style = \"\"; // Remove initial display: none to prevent loading the video\n\n      modal.addEventListener(\"click\", function (event) {\n        modal.classList.remove(\"oog-video-modal--open\");\n\n        const iframe = modal.querySelector(\"iframe\");\n\n        if (iframe) {\n          const src = iframe.src;\n\n          iframe.src = \"\";\n          iframe.src = src;\n        }\n      });\n    });\n  }\n};\n", "/*\nStimulus 3.2.1\nCopyright \u00A9 2022 Basecamp, LLC\n */\nclass EventListener {\n    constructor(eventTarget, eventName, eventOptions) {\n        this.eventTarget = eventTarget;\n        this.eventName = eventName;\n        this.eventOptions = eventOptions;\n        this.unorderedBindings = new Set();\n    }\n    connect() {\n        this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n    }\n    disconnect() {\n        this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n    }\n    bindingConnected(binding) {\n        this.unorderedBindings.add(binding);\n    }\n    bindingDisconnected(binding) {\n        this.unorderedBindings.delete(binding);\n    }\n    handleEvent(event) {\n        const extendedEvent = extendEvent(event);\n        for (const binding of this.bindings) {\n            if (extendedEvent.immediatePropagationStopped) {\n                break;\n            }\n            else {\n                binding.handleEvent(extendedEvent);\n            }\n        }\n    }\n    hasBindings() {\n        return this.unorderedBindings.size > 0;\n    }\n    get bindings() {\n        return Array.from(this.unorderedBindings).sort((left, right) => {\n            const leftIndex = left.index, rightIndex = right.index;\n            return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n        });\n    }\n}\nfunction extendEvent(event) {\n    if (\"immediatePropagationStopped\" in event) {\n        return event;\n    }\n    else {\n        const { stopImmediatePropagation } = event;\n        return Object.assign(event, {\n            immediatePropagationStopped: false,\n            stopImmediatePropagation() {\n                this.immediatePropagationStopped = true;\n                stopImmediatePropagation.call(this);\n            },\n        });\n    }\n}\n\nclass Dispatcher {\n    constructor(application) {\n        this.application = application;\n        this.eventListenerMaps = new Map();\n        this.started = false;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.eventListeners.forEach((eventListener) => eventListener.connect());\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n        }\n    }\n    get eventListeners() {\n        return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n    }\n    bindingConnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n    }\n    bindingDisconnected(binding, clearEventListeners = false) {\n        this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n        if (clearEventListeners)\n            this.clearEventListenersForBinding(binding);\n    }\n    handleError(error, message, detail = {}) {\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    clearEventListenersForBinding(binding) {\n        const eventListener = this.fetchEventListenerForBinding(binding);\n        if (!eventListener.hasBindings()) {\n            eventListener.disconnect();\n            this.removeMappedEventListenerFor(binding);\n        }\n    }\n    removeMappedEventListenerFor(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        eventListenerMap.delete(cacheKey);\n        if (eventListenerMap.size == 0)\n            this.eventListenerMaps.delete(eventTarget);\n    }\n    fetchEventListenerForBinding(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        return this.fetchEventListener(eventTarget, eventName, eventOptions);\n    }\n    fetchEventListener(eventTarget, eventName, eventOptions) {\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        let eventListener = eventListenerMap.get(cacheKey);\n        if (!eventListener) {\n            eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n            eventListenerMap.set(cacheKey, eventListener);\n        }\n        return eventListener;\n    }\n    createEventListener(eventTarget, eventName, eventOptions) {\n        const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n        if (this.started) {\n            eventListener.connect();\n        }\n        return eventListener;\n    }\n    fetchEventListenerMapForEventTarget(eventTarget) {\n        let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n        if (!eventListenerMap) {\n            eventListenerMap = new Map();\n            this.eventListenerMaps.set(eventTarget, eventListenerMap);\n        }\n        return eventListenerMap;\n    }\n    cacheKey(eventName, eventOptions) {\n        const parts = [eventName];\n        Object.keys(eventOptions)\n            .sort()\n            .forEach((key) => {\n            parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n        });\n        return parts.join(\":\");\n    }\n}\n\nconst defaultActionDescriptorFilters = {\n    stop({ event, value }) {\n        if (value)\n            event.stopPropagation();\n        return true;\n    },\n    prevent({ event, value }) {\n        if (value)\n            event.preventDefault();\n        return true;\n    },\n    self({ event, value, element }) {\n        if (value) {\n            return element === event.target;\n        }\n        else {\n            return true;\n        }\n    },\n};\nconst descriptorPattern = /^(?:(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n    const source = descriptorString.trim();\n    const matches = source.match(descriptorPattern) || [];\n    let eventName = matches[1];\n    let keyFilter = matches[2];\n    if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n        eventName += `.${keyFilter}`;\n        keyFilter = \"\";\n    }\n    return {\n        eventTarget: parseEventTarget(matches[3]),\n        eventName,\n        eventOptions: matches[6] ? parseEventOptions(matches[6]) : {},\n        identifier: matches[4],\n        methodName: matches[5],\n        keyFilter,\n    };\n}\nfunction parseEventTarget(eventTargetName) {\n    if (eventTargetName == \"window\") {\n        return window;\n    }\n    else if (eventTargetName == \"document\") {\n        return document;\n    }\n}\nfunction parseEventOptions(eventOptions) {\n    return eventOptions\n        .split(\":\")\n        .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n    if (eventTarget == window) {\n        return \"window\";\n    }\n    else if (eventTarget == document) {\n        return \"document\";\n    }\n}\n\nfunction camelize(value) {\n    return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n    return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n    return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n    return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n    return value.match(/[^\\s]+/g) || [];\n}\n\nclass Action {\n    constructor(element, index, descriptor, schema) {\n        this.element = element;\n        this.index = index;\n        this.eventTarget = descriptor.eventTarget || element;\n        this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n        this.eventOptions = descriptor.eventOptions || {};\n        this.identifier = descriptor.identifier || error(\"missing identifier\");\n        this.methodName = descriptor.methodName || error(\"missing method name\");\n        this.keyFilter = descriptor.keyFilter || \"\";\n        this.schema = schema;\n    }\n    static forToken(token, schema) {\n        return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n    }\n    toString() {\n        const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n        const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n        return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n    }\n    isFilterTarget(event) {\n        if (!this.keyFilter) {\n            return false;\n        }\n        const filteres = this.keyFilter.split(\"+\");\n        const modifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\n        const [meta, ctrl, alt, shift] = modifiers.map((modifier) => filteres.includes(modifier));\n        if (event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift) {\n            return true;\n        }\n        const standardFilter = filteres.filter((key) => !modifiers.includes(key))[0];\n        if (!standardFilter) {\n            return false;\n        }\n        if (!Object.prototype.hasOwnProperty.call(this.keyMappings, standardFilter)) {\n            error(`contains unknown key filter: ${this.keyFilter}`);\n        }\n        return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n    }\n    get params() {\n        const params = {};\n        const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n        for (const { name, value } of Array.from(this.element.attributes)) {\n            const match = name.match(pattern);\n            const key = match && match[1];\n            if (key) {\n                params[camelize(key)] = typecast(value);\n            }\n        }\n        return params;\n    }\n    get eventTargetName() {\n        return stringifyEventTarget(this.eventTarget);\n    }\n    get keyMappings() {\n        return this.schema.keyMappings;\n    }\n}\nconst defaultEventNames = {\n    a: () => \"click\",\n    button: () => \"click\",\n    form: () => \"submit\",\n    details: () => \"toggle\",\n    input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n    select: () => \"change\",\n    textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n    const tagName = element.tagName.toLowerCase();\n    if (tagName in defaultEventNames) {\n        return defaultEventNames[tagName](element);\n    }\n}\nfunction error(message) {\n    throw new Error(message);\n}\nfunction typecast(value) {\n    try {\n        return JSON.parse(value);\n    }\n    catch (o_O) {\n        return value;\n    }\n}\n\nclass Binding {\n    constructor(context, action) {\n        this.context = context;\n        this.action = action;\n    }\n    get index() {\n        return this.action.index;\n    }\n    get eventTarget() {\n        return this.action.eventTarget;\n    }\n    get eventOptions() {\n        return this.action.eventOptions;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    handleEvent(event) {\n        if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(event)) {\n            this.invokeWithEvent(event);\n        }\n    }\n    get eventName() {\n        return this.action.eventName;\n    }\n    get method() {\n        const method = this.controller[this.methodName];\n        if (typeof method == \"function\") {\n            return method;\n        }\n        throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n    }\n    applyEventModifiers(event) {\n        const { element } = this.action;\n        const { actionDescriptorFilters } = this.context.application;\n        let passes = true;\n        for (const [name, value] of Object.entries(this.eventOptions)) {\n            if (name in actionDescriptorFilters) {\n                const filter = actionDescriptorFilters[name];\n                passes = passes && filter({ name, value, event, element });\n            }\n            else {\n                continue;\n            }\n        }\n        return passes;\n    }\n    invokeWithEvent(event) {\n        const { target, currentTarget } = event;\n        try {\n            const { params } = this.action;\n            const actionEvent = Object.assign(event, { params });\n            this.method.call(this.controller, actionEvent);\n            this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n        }\n        catch (error) {\n            const { identifier, controller, element, index } = this;\n            const detail = { identifier, controller, element, index, event };\n            this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n        }\n    }\n    willBeInvokedByEvent(event) {\n        const eventTarget = event.target;\n        if (event instanceof KeyboardEvent && this.action.isFilterTarget(event)) {\n            return false;\n        }\n        if (this.element === eventTarget) {\n            return true;\n        }\n        else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n            return this.scope.containsElement(eventTarget);\n        }\n        else {\n            return this.scope.containsElement(this.action.element);\n        }\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    get methodName() {\n        return this.action.methodName;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nclass ElementObserver {\n    constructor(element, delegate) {\n        this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n        this.element = element;\n        this.started = false;\n        this.delegate = delegate;\n        this.elements = new Set();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.refresh();\n        }\n    }\n    pause(callback) {\n        if (this.started) {\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n        callback();\n        if (!this.started) {\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            const matches = new Set(this.matchElementsInTree());\n            for (const element of Array.from(this.elements)) {\n                if (!matches.has(element)) {\n                    this.removeElement(element);\n                }\n            }\n            for (const element of Array.from(matches)) {\n                this.addElement(element);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        if (mutation.type == \"attributes\") {\n            this.processAttributeChange(mutation.target, mutation.attributeName);\n        }\n        else if (mutation.type == \"childList\") {\n            this.processRemovedNodes(mutation.removedNodes);\n            this.processAddedNodes(mutation.addedNodes);\n        }\n    }\n    processAttributeChange(node, attributeName) {\n        const element = node;\n        if (this.elements.has(element)) {\n            if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n                this.delegate.elementAttributeChanged(element, attributeName);\n            }\n            else {\n                this.removeElement(element);\n            }\n        }\n        else if (this.matchElement(element)) {\n            this.addElement(element);\n        }\n    }\n    processRemovedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element) {\n                this.processTree(element, this.removeElement);\n            }\n        }\n    }\n    processAddedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element && this.elementIsActive(element)) {\n                this.processTree(element, this.addElement);\n            }\n        }\n    }\n    matchElement(element) {\n        return this.delegate.matchElement(element);\n    }\n    matchElementsInTree(tree = this.element) {\n        return this.delegate.matchElementsInTree(tree);\n    }\n    processTree(tree, processor) {\n        for (const element of this.matchElementsInTree(tree)) {\n            processor.call(this, element);\n        }\n    }\n    elementFromNode(node) {\n        if (node.nodeType == Node.ELEMENT_NODE) {\n            return node;\n        }\n    }\n    elementIsActive(element) {\n        if (element.isConnected != this.element.isConnected) {\n            return false;\n        }\n        else {\n            return this.element.contains(element);\n        }\n    }\n    addElement(element) {\n        if (!this.elements.has(element)) {\n            if (this.elementIsActive(element)) {\n                this.elements.add(element);\n                if (this.delegate.elementMatched) {\n                    this.delegate.elementMatched(element);\n                }\n            }\n        }\n    }\n    removeElement(element) {\n        if (this.elements.has(element)) {\n            this.elements.delete(element);\n            if (this.delegate.elementUnmatched) {\n                this.delegate.elementUnmatched(element);\n            }\n        }\n    }\n}\n\nclass AttributeObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeName = attributeName;\n        this.delegate = delegate;\n        this.elementObserver = new ElementObserver(element, this);\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    get selector() {\n        return `[${this.attributeName}]`;\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    matchElement(element) {\n        return element.hasAttribute(this.attributeName);\n    }\n    matchElementsInTree(tree) {\n        const match = this.matchElement(tree) ? [tree] : [];\n        const matches = Array.from(tree.querySelectorAll(this.selector));\n        return match.concat(matches);\n    }\n    elementMatched(element) {\n        if (this.delegate.elementMatchedAttribute) {\n            this.delegate.elementMatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementUnmatched(element) {\n        if (this.delegate.elementUnmatchedAttribute) {\n            this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementAttributeChanged(element, attributeName) {\n        if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n            this.delegate.elementAttributeValueChanged(element, attributeName);\n        }\n    }\n}\n\nfunction add(map, key, value) {\n    fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n    fetch(map, key).delete(value);\n    prune(map, key);\n}\nfunction fetch(map, key) {\n    let values = map.get(key);\n    if (!values) {\n        values = new Set();\n        map.set(key, values);\n    }\n    return values;\n}\nfunction prune(map, key) {\n    const values = map.get(key);\n    if (values != null && values.size == 0) {\n        map.delete(key);\n    }\n}\n\nclass Multimap {\n    constructor() {\n        this.valuesByKey = new Map();\n    }\n    get keys() {\n        return Array.from(this.valuesByKey.keys());\n    }\n    get values() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n    }\n    get size() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((size, set) => size + set.size, 0);\n    }\n    add(key, value) {\n        add(this.valuesByKey, key, value);\n    }\n    delete(key, value) {\n        del(this.valuesByKey, key, value);\n    }\n    has(key, value) {\n        const values = this.valuesByKey.get(key);\n        return values != null && values.has(value);\n    }\n    hasKey(key) {\n        return this.valuesByKey.has(key);\n    }\n    hasValue(value) {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.some((set) => set.has(value));\n    }\n    getValuesForKey(key) {\n        const values = this.valuesByKey.get(key);\n        return values ? Array.from(values) : [];\n    }\n    getKeysForValue(value) {\n        return Array.from(this.valuesByKey)\n            .filter(([_key, values]) => values.has(value))\n            .map(([key, _values]) => key);\n    }\n}\n\nclass IndexedMultimap extends Multimap {\n    constructor() {\n        super();\n        this.keysByValue = new Map();\n    }\n    get values() {\n        return Array.from(this.keysByValue.keys());\n    }\n    add(key, value) {\n        super.add(key, value);\n        add(this.keysByValue, value, key);\n    }\n    delete(key, value) {\n        super.delete(key, value);\n        del(this.keysByValue, value, key);\n    }\n    hasValue(value) {\n        return this.keysByValue.has(value);\n    }\n    getKeysForValue(value) {\n        const set = this.keysByValue.get(value);\n        return set ? Array.from(set) : [];\n    }\n}\n\nclass SelectorObserver {\n    constructor(element, selector, delegate, details = {}) {\n        this.selector = selector;\n        this.details = details;\n        this.elementObserver = new ElementObserver(element, this);\n        this.delegate = delegate;\n        this.matchesByElement = new Multimap();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    matchElement(element) {\n        const matches = element.matches(this.selector);\n        if (this.delegate.selectorMatchElement) {\n            return matches && this.delegate.selectorMatchElement(element, this.details);\n        }\n        return matches;\n    }\n    matchElementsInTree(tree) {\n        const match = this.matchElement(tree) ? [tree] : [];\n        const matches = Array.from(tree.querySelectorAll(this.selector)).filter((match) => this.matchElement(match));\n        return match.concat(matches);\n    }\n    elementMatched(element) {\n        this.selectorMatched(element);\n    }\n    elementUnmatched(element) {\n        this.selectorUnmatched(element);\n    }\n    elementAttributeChanged(element, _attributeName) {\n        const matches = this.matchElement(element);\n        const matchedBefore = this.matchesByElement.has(this.selector, element);\n        if (!matches && matchedBefore) {\n            this.selectorUnmatched(element);\n        }\n    }\n    selectorMatched(element) {\n        if (this.delegate.selectorMatched) {\n            this.delegate.selectorMatched(element, this.selector, this.details);\n            this.matchesByElement.add(this.selector, element);\n        }\n    }\n    selectorUnmatched(element) {\n        this.delegate.selectorUnmatched(element, this.selector, this.details);\n        this.matchesByElement.delete(this.selector, element);\n    }\n}\n\nclass StringMapObserver {\n    constructor(element, delegate) {\n        this.element = element;\n        this.delegate = delegate;\n        this.started = false;\n        this.stringMap = new Map();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n            this.refresh();\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            for (const attributeName of this.knownAttributeNames) {\n                this.refreshAttribute(attributeName, null);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        const attributeName = mutation.attributeName;\n        if (attributeName) {\n            this.refreshAttribute(attributeName, mutation.oldValue);\n        }\n    }\n    refreshAttribute(attributeName, oldValue) {\n        const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n        if (key != null) {\n            if (!this.stringMap.has(attributeName)) {\n                this.stringMapKeyAdded(key, attributeName);\n            }\n            const value = this.element.getAttribute(attributeName);\n            if (this.stringMap.get(attributeName) != value) {\n                this.stringMapValueChanged(value, key, oldValue);\n            }\n            if (value == null) {\n                const oldValue = this.stringMap.get(attributeName);\n                this.stringMap.delete(attributeName);\n                if (oldValue)\n                    this.stringMapKeyRemoved(key, attributeName, oldValue);\n            }\n            else {\n                this.stringMap.set(attributeName, value);\n            }\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        if (this.delegate.stringMapKeyAdded) {\n            this.delegate.stringMapKeyAdded(key, attributeName);\n        }\n    }\n    stringMapValueChanged(value, key, oldValue) {\n        if (this.delegate.stringMapValueChanged) {\n            this.delegate.stringMapValueChanged(value, key, oldValue);\n        }\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        if (this.delegate.stringMapKeyRemoved) {\n            this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n        }\n    }\n    get knownAttributeNames() {\n        return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n    }\n    get currentAttributeNames() {\n        return Array.from(this.element.attributes).map((attribute) => attribute.name);\n    }\n    get recordedAttributeNames() {\n        return Array.from(this.stringMap.keys());\n    }\n}\n\nclass TokenListObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeObserver = new AttributeObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.tokensByElement = new Multimap();\n    }\n    get started() {\n        return this.attributeObserver.started;\n    }\n    start() {\n        this.attributeObserver.start();\n    }\n    pause(callback) {\n        this.attributeObserver.pause(callback);\n    }\n    stop() {\n        this.attributeObserver.stop();\n    }\n    refresh() {\n        this.attributeObserver.refresh();\n    }\n    get element() {\n        return this.attributeObserver.element;\n    }\n    get attributeName() {\n        return this.attributeObserver.attributeName;\n    }\n    elementMatchedAttribute(element) {\n        this.tokensMatched(this.readTokensForElement(element));\n    }\n    elementAttributeValueChanged(element) {\n        const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n        this.tokensUnmatched(unmatchedTokens);\n        this.tokensMatched(matchedTokens);\n    }\n    elementUnmatchedAttribute(element) {\n        this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n    }\n    tokensMatched(tokens) {\n        tokens.forEach((token) => this.tokenMatched(token));\n    }\n    tokensUnmatched(tokens) {\n        tokens.forEach((token) => this.tokenUnmatched(token));\n    }\n    tokenMatched(token) {\n        this.delegate.tokenMatched(token);\n        this.tokensByElement.add(token.element, token);\n    }\n    tokenUnmatched(token) {\n        this.delegate.tokenUnmatched(token);\n        this.tokensByElement.delete(token.element, token);\n    }\n    refreshTokensForElement(element) {\n        const previousTokens = this.tokensByElement.getValuesForKey(element);\n        const currentTokens = this.readTokensForElement(element);\n        const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n        if (firstDifferingIndex == -1) {\n            return [[], []];\n        }\n        else {\n            return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n        }\n    }\n    readTokensForElement(element) {\n        const attributeName = this.attributeName;\n        const tokenString = element.getAttribute(attributeName) || \"\";\n        return parseTokenString(tokenString, element, attributeName);\n    }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n    return tokenString\n        .trim()\n        .split(/\\s+/)\n        .filter((content) => content.length)\n        .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n    const length = Math.max(left.length, right.length);\n    return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n    return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n    constructor(element, attributeName, delegate) {\n        this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.parseResultsByToken = new WeakMap();\n        this.valuesByTokenByElement = new WeakMap();\n    }\n    get started() {\n        return this.tokenListObserver.started;\n    }\n    start() {\n        this.tokenListObserver.start();\n    }\n    stop() {\n        this.tokenListObserver.stop();\n    }\n    refresh() {\n        this.tokenListObserver.refresh();\n    }\n    get element() {\n        return this.tokenListObserver.element;\n    }\n    get attributeName() {\n        return this.tokenListObserver.attributeName;\n    }\n    tokenMatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).set(token, value);\n            this.delegate.elementMatchedValue(element, value);\n        }\n    }\n    tokenUnmatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).delete(token);\n            this.delegate.elementUnmatchedValue(element, value);\n        }\n    }\n    fetchParseResultForToken(token) {\n        let parseResult = this.parseResultsByToken.get(token);\n        if (!parseResult) {\n            parseResult = this.parseToken(token);\n            this.parseResultsByToken.set(token, parseResult);\n        }\n        return parseResult;\n    }\n    fetchValuesByTokenForElement(element) {\n        let valuesByToken = this.valuesByTokenByElement.get(element);\n        if (!valuesByToken) {\n            valuesByToken = new Map();\n            this.valuesByTokenByElement.set(element, valuesByToken);\n        }\n        return valuesByToken;\n    }\n    parseToken(token) {\n        try {\n            const value = this.delegate.parseValueForToken(token);\n            return { value };\n        }\n        catch (error) {\n            return { error };\n        }\n    }\n}\n\nclass BindingObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.bindingsByAction = new Map();\n    }\n    start() {\n        if (!this.valueListObserver) {\n            this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n            this.valueListObserver.start();\n        }\n    }\n    stop() {\n        if (this.valueListObserver) {\n            this.valueListObserver.stop();\n            delete this.valueListObserver;\n            this.disconnectAllActions();\n        }\n    }\n    get element() {\n        return this.context.element;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get actionAttribute() {\n        return this.schema.actionAttribute;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get bindings() {\n        return Array.from(this.bindingsByAction.values());\n    }\n    connectAction(action) {\n        const binding = new Binding(this.context, action);\n        this.bindingsByAction.set(action, binding);\n        this.delegate.bindingConnected(binding);\n    }\n    disconnectAction(action) {\n        const binding = this.bindingsByAction.get(action);\n        if (binding) {\n            this.bindingsByAction.delete(action);\n            this.delegate.bindingDisconnected(binding);\n        }\n    }\n    disconnectAllActions() {\n        this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n        this.bindingsByAction.clear();\n    }\n    parseValueForToken(token) {\n        const action = Action.forToken(token, this.schema);\n        if (action.identifier == this.identifier) {\n            return action;\n        }\n    }\n    elementMatchedValue(element, action) {\n        this.connectAction(action);\n    }\n    elementUnmatchedValue(element, action) {\n        this.disconnectAction(action);\n    }\n}\n\nclass ValueObserver {\n    constructor(context, receiver) {\n        this.context = context;\n        this.receiver = receiver;\n        this.stringMapObserver = new StringMapObserver(this.element, this);\n        this.valueDescriptorMap = this.controller.valueDescriptorMap;\n    }\n    start() {\n        this.stringMapObserver.start();\n        this.invokeChangedCallbacksForDefaultValues();\n    }\n    stop() {\n        this.stringMapObserver.stop();\n    }\n    get element() {\n        return this.context.element;\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    getStringMapKeyForAttribute(attributeName) {\n        if (attributeName in this.valueDescriptorMap) {\n            return this.valueDescriptorMap[attributeName].name;\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        const descriptor = this.valueDescriptorMap[attributeName];\n        if (!this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n        }\n    }\n    stringMapValueChanged(value, name, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[name];\n        if (value === null)\n            return;\n        if (oldValue === null) {\n            oldValue = descriptor.writer(descriptor.defaultValue);\n        }\n        this.invokeChangedCallback(name, value, oldValue);\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[key];\n        if (this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n        }\n        else {\n            this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n        }\n    }\n    invokeChangedCallbacksForDefaultValues() {\n        for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n            if (defaultValue != undefined && !this.controller.data.has(key)) {\n                this.invokeChangedCallback(name, writer(defaultValue), undefined);\n            }\n        }\n    }\n    invokeChangedCallback(name, rawValue, rawOldValue) {\n        const changedMethodName = `${name}Changed`;\n        const changedMethod = this.receiver[changedMethodName];\n        if (typeof changedMethod == \"function\") {\n            const descriptor = this.valueDescriptorNameMap[name];\n            try {\n                const value = descriptor.reader(rawValue);\n                let oldValue = rawOldValue;\n                if (rawOldValue) {\n                    oldValue = descriptor.reader(rawOldValue);\n                }\n                changedMethod.call(this.receiver, value, oldValue);\n            }\n            catch (error) {\n                if (error instanceof TypeError) {\n                    error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n                }\n                throw error;\n            }\n        }\n    }\n    get valueDescriptors() {\n        const { valueDescriptorMap } = this;\n        return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n    }\n    get valueDescriptorNameMap() {\n        const descriptors = {};\n        Object.keys(this.valueDescriptorMap).forEach((key) => {\n            const descriptor = this.valueDescriptorMap[key];\n            descriptors[descriptor.name] = descriptor;\n        });\n        return descriptors;\n    }\n    hasValue(attributeName) {\n        const descriptor = this.valueDescriptorNameMap[attributeName];\n        const hasMethodName = `has${capitalize(descriptor.name)}`;\n        return this.receiver[hasMethodName];\n    }\n}\n\nclass TargetObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.targetsByName = new Multimap();\n    }\n    start() {\n        if (!this.tokenListObserver) {\n            this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n            this.tokenListObserver.start();\n        }\n    }\n    stop() {\n        if (this.tokenListObserver) {\n            this.disconnectAllTargets();\n            this.tokenListObserver.stop();\n            delete this.tokenListObserver;\n        }\n    }\n    tokenMatched({ element, content: name }) {\n        if (this.scope.containsElement(element)) {\n            this.connectTarget(element, name);\n        }\n    }\n    tokenUnmatched({ element, content: name }) {\n        this.disconnectTarget(element, name);\n    }\n    connectTarget(element, name) {\n        var _a;\n        if (!this.targetsByName.has(name, element)) {\n            this.targetsByName.add(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n        }\n    }\n    disconnectTarget(element, name) {\n        var _a;\n        if (this.targetsByName.has(name, element)) {\n            this.targetsByName.delete(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n        }\n    }\n    disconnectAllTargets() {\n        for (const name of this.targetsByName.keys) {\n            for (const element of this.targetsByName.getValuesForKey(name)) {\n                this.disconnectTarget(element, name);\n            }\n        }\n    }\n    get attributeName() {\n        return `data-${this.context.identifier}-target`;\n    }\n    get element() {\n        return this.context.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return Array.from(ancestors.reduce((values, constructor) => {\n        getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n        return values;\n    }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return ancestors.reduce((pairs, constructor) => {\n        pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n        return pairs;\n    }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n    const ancestors = [];\n    while (constructor) {\n        ancestors.push(constructor);\n        constructor = Object.getPrototypeOf(constructor);\n    }\n    return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.outletsByName = new Multimap();\n        this.outletElementsByName = new Multimap();\n        this.selectorObserverMap = new Map();\n    }\n    start() {\n        if (this.selectorObserverMap.size === 0) {\n            this.outletDefinitions.forEach((outletName) => {\n                const selector = this.selector(outletName);\n                const details = { outletName };\n                if (selector) {\n                    this.selectorObserverMap.set(outletName, new SelectorObserver(document.body, selector, this, details));\n                }\n            });\n            this.selectorObserverMap.forEach((observer) => observer.start());\n        }\n        this.dependentContexts.forEach((context) => context.refresh());\n    }\n    stop() {\n        if (this.selectorObserverMap.size > 0) {\n            this.disconnectAllOutlets();\n            this.selectorObserverMap.forEach((observer) => observer.stop());\n            this.selectorObserverMap.clear();\n        }\n    }\n    refresh() {\n        this.selectorObserverMap.forEach((observer) => observer.refresh());\n    }\n    selectorMatched(element, _selector, { outletName }) {\n        const outlet = this.getOutlet(element, outletName);\n        if (outlet) {\n            this.connectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorUnmatched(element, _selector, { outletName }) {\n        const outlet = this.getOutletFromMap(element, outletName);\n        if (outlet) {\n            this.disconnectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorMatchElement(element, { outletName }) {\n        return (this.hasOutlet(element, outletName) &&\n            element.matches(`[${this.context.application.schema.controllerAttribute}~=${outletName}]`));\n    }\n    connectOutlet(outlet, element, outletName) {\n        var _a;\n        if (!this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.add(outletName, outlet);\n            this.outletElementsByName.add(outletName, element);\n            (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n        }\n    }\n    disconnectOutlet(outlet, element, outletName) {\n        var _a;\n        if (this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.delete(outletName, outlet);\n            this.outletElementsByName.delete(outletName, element);\n            (_a = this.selectorObserverMap\n                .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n        }\n    }\n    disconnectAllOutlets() {\n        for (const outletName of this.outletElementsByName.keys) {\n            for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n                for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n                    this.disconnectOutlet(outlet, element, outletName);\n                }\n            }\n        }\n    }\n    selector(outletName) {\n        return this.scope.outlets.getSelectorForOutletName(outletName);\n    }\n    get outletDependencies() {\n        const dependencies = new Multimap();\n        this.router.modules.forEach((module) => {\n            const constructor = module.definition.controllerConstructor;\n            const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n            outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n        });\n        return dependencies;\n    }\n    get outletDefinitions() {\n        return this.outletDependencies.getKeysForValue(this.identifier);\n    }\n    get dependentControllerIdentifiers() {\n        return this.outletDependencies.getValuesForKey(this.identifier);\n    }\n    get dependentContexts() {\n        const identifiers = this.dependentControllerIdentifiers;\n        return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n    }\n    hasOutlet(element, outletName) {\n        return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n    }\n    getOutlet(element, outletName) {\n        return this.application.getControllerForElementAndIdentifier(element, outletName);\n    }\n    getOutletFromMap(element, outletName) {\n        return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get router() {\n        return this.application.router;\n    }\n}\n\nclass Context {\n    constructor(module, scope) {\n        this.logDebugActivity = (functionName, detail = {}) => {\n            const { identifier, controller, element } = this;\n            detail = Object.assign({ identifier, controller, element }, detail);\n            this.application.logDebugActivity(this.identifier, functionName, detail);\n        };\n        this.module = module;\n        this.scope = scope;\n        this.controller = new module.controllerConstructor(this);\n        this.bindingObserver = new BindingObserver(this, this.dispatcher);\n        this.valueObserver = new ValueObserver(this, this.controller);\n        this.targetObserver = new TargetObserver(this, this);\n        this.outletObserver = new OutletObserver(this, this);\n        try {\n            this.controller.initialize();\n            this.logDebugActivity(\"initialize\");\n        }\n        catch (error) {\n            this.handleError(error, \"initializing controller\");\n        }\n    }\n    connect() {\n        this.bindingObserver.start();\n        this.valueObserver.start();\n        this.targetObserver.start();\n        this.outletObserver.start();\n        try {\n            this.controller.connect();\n            this.logDebugActivity(\"connect\");\n        }\n        catch (error) {\n            this.handleError(error, \"connecting controller\");\n        }\n    }\n    refresh() {\n        this.outletObserver.refresh();\n    }\n    disconnect() {\n        try {\n            this.controller.disconnect();\n            this.logDebugActivity(\"disconnect\");\n        }\n        catch (error) {\n            this.handleError(error, \"disconnecting controller\");\n        }\n        this.outletObserver.stop();\n        this.targetObserver.stop();\n        this.valueObserver.stop();\n        this.bindingObserver.stop();\n    }\n    get application() {\n        return this.module.application;\n    }\n    get identifier() {\n        return this.module.identifier;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get dispatcher() {\n        return this.application.dispatcher;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get parentElement() {\n        return this.element.parentElement;\n    }\n    handleError(error, message, detail = {}) {\n        const { identifier, controller, element } = this;\n        detail = Object.assign({ identifier, controller, element }, detail);\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    targetConnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetConnected`, element);\n    }\n    targetDisconnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n    }\n    outletConnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n    }\n    outletDisconnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n    }\n    invokeControllerMethod(methodName, ...args) {\n        const controller = this.controller;\n        if (typeof controller[methodName] == \"function\") {\n            controller[methodName](...args);\n        }\n    }\n}\n\nfunction bless(constructor) {\n    return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n    const shadowConstructor = extend(constructor);\n    const shadowProperties = getShadowProperties(constructor.prototype, properties);\n    Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n    return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n    const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n    return blessings.reduce((blessedProperties, blessing) => {\n        const properties = blessing(constructor);\n        for (const key in properties) {\n            const descriptor = blessedProperties[key] || {};\n            blessedProperties[key] = Object.assign(descriptor, properties[key]);\n        }\n        return blessedProperties;\n    }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n    return getOwnKeys(properties).reduce((shadowProperties, key) => {\n        const descriptor = getShadowedDescriptor(prototype, properties, key);\n        if (descriptor) {\n            Object.assign(shadowProperties, { [key]: descriptor });\n        }\n        return shadowProperties;\n    }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n    const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n    const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n    if (!shadowedByValue) {\n        const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n        if (shadowingDescriptor) {\n            descriptor.get = shadowingDescriptor.get || descriptor.get;\n            descriptor.set = shadowingDescriptor.set || descriptor.set;\n        }\n        return descriptor;\n    }\n}\nconst getOwnKeys = (() => {\n    if (typeof Object.getOwnPropertySymbols == \"function\") {\n        return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n    }\n    else {\n        return Object.getOwnPropertyNames;\n    }\n})();\nconst extend = (() => {\n    function extendWithReflect(constructor) {\n        function extended() {\n            return Reflect.construct(constructor, arguments, new.target);\n        }\n        extended.prototype = Object.create(constructor.prototype, {\n            constructor: { value: extended },\n        });\n        Reflect.setPrototypeOf(extended, constructor);\n        return extended;\n    }\n    function testReflectExtension() {\n        const a = function () {\n            this.a.call(this);\n        };\n        const b = extendWithReflect(a);\n        b.prototype.a = function () { };\n        return new b();\n    }\n    try {\n        testReflectExtension();\n        return extendWithReflect;\n    }\n    catch (error) {\n        return (constructor) => class extended extends constructor {\n        };\n    }\n})();\n\nfunction blessDefinition(definition) {\n    return {\n        identifier: definition.identifier,\n        controllerConstructor: bless(definition.controllerConstructor),\n    };\n}\n\nclass Module {\n    constructor(application, definition) {\n        this.application = application;\n        this.definition = blessDefinition(definition);\n        this.contextsByScope = new WeakMap();\n        this.connectedContexts = new Set();\n    }\n    get identifier() {\n        return this.definition.identifier;\n    }\n    get controllerConstructor() {\n        return this.definition.controllerConstructor;\n    }\n    get contexts() {\n        return Array.from(this.connectedContexts);\n    }\n    connectContextForScope(scope) {\n        const context = this.fetchContextForScope(scope);\n        this.connectedContexts.add(context);\n        context.connect();\n    }\n    disconnectContextForScope(scope) {\n        const context = this.contextsByScope.get(scope);\n        if (context) {\n            this.connectedContexts.delete(context);\n            context.disconnect();\n        }\n    }\n    fetchContextForScope(scope) {\n        let context = this.contextsByScope.get(scope);\n        if (!context) {\n            context = new Context(this, scope);\n            this.contextsByScope.set(scope, context);\n        }\n        return context;\n    }\n}\n\nclass ClassMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    has(name) {\n        return this.data.has(this.getDataKey(name));\n    }\n    get(name) {\n        return this.getAll(name)[0];\n    }\n    getAll(name) {\n        const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n        return tokenize(tokenString);\n    }\n    getAttributeName(name) {\n        return this.data.getAttributeNameForKey(this.getDataKey(name));\n    }\n    getDataKey(name) {\n        return `${name}-class`;\n    }\n    get data() {\n        return this.scope.data;\n    }\n}\n\nclass DataMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.getAttribute(name);\n    }\n    set(key, value) {\n        const name = this.getAttributeNameForKey(key);\n        this.element.setAttribute(name, value);\n        return this.get(key);\n    }\n    has(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.hasAttribute(name);\n    }\n    delete(key) {\n        if (this.has(key)) {\n            const name = this.getAttributeNameForKey(key);\n            this.element.removeAttribute(name);\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    getAttributeNameForKey(key) {\n        return `data-${this.identifier}-${dasherize(key)}`;\n    }\n}\n\nclass Guide {\n    constructor(logger) {\n        this.warnedKeysByObject = new WeakMap();\n        this.logger = logger;\n    }\n    warn(object, key, message) {\n        let warnedKeys = this.warnedKeysByObject.get(object);\n        if (!warnedKeys) {\n            warnedKeys = new Set();\n            this.warnedKeysByObject.set(object, warnedKeys);\n        }\n        if (!warnedKeys.has(key)) {\n            warnedKeys.add(key);\n            this.logger.warn(message, object);\n        }\n    }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n    return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(targetName) {\n        return this.find(targetName) != null;\n    }\n    find(...targetNames) {\n        return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n    }\n    findAll(...targetNames) {\n        return targetNames.reduce((targets, targetName) => [\n            ...targets,\n            ...this.findAllTargets(targetName),\n            ...this.findAllLegacyTargets(targetName),\n        ], []);\n    }\n    findTarget(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findElement(selector);\n    }\n    findAllTargets(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector);\n    }\n    getSelectorForTargetName(targetName) {\n        const attributeName = this.schema.targetAttributeForScope(this.identifier);\n        return attributeValueContainsToken(attributeName, targetName);\n    }\n    findLegacyTarget(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.deprecate(this.scope.findElement(selector), targetName);\n    }\n    findAllLegacyTargets(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n    }\n    getLegacySelectorForTargetName(targetName) {\n        const targetDescriptor = `${this.identifier}.${targetName}`;\n        return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n    }\n    deprecate(element, targetName) {\n        if (element) {\n            const { identifier } = this;\n            const attributeName = this.schema.targetAttribute;\n            const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n            this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n                `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n        }\n        return element;\n    }\n    get guide() {\n        return this.scope.guide;\n    }\n}\n\nclass OutletSet {\n    constructor(scope, controllerElement) {\n        this.scope = scope;\n        this.controllerElement = controllerElement;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(outletName) {\n        return this.find(outletName) != null;\n    }\n    find(...outletNames) {\n        return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n    }\n    findAll(...outletNames) {\n        return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n    }\n    getSelectorForOutletName(outletName) {\n        const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n        return this.controllerElement.getAttribute(attributeName);\n    }\n    findOutlet(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        if (selector)\n            return this.findElement(selector, outletName);\n    }\n    findAllOutlets(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        return selector ? this.findAllElements(selector, outletName) : [];\n    }\n    findElement(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n    }\n    findAllElements(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName));\n    }\n    matchesElement(element, selector, outletName) {\n        const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n        return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n    }\n}\n\nclass Scope {\n    constructor(schema, element, identifier, logger) {\n        this.targets = new TargetSet(this);\n        this.classes = new ClassMap(this);\n        this.data = new DataMap(this);\n        this.containsElement = (element) => {\n            return element.closest(this.controllerSelector) === this.element;\n        };\n        this.schema = schema;\n        this.element = element;\n        this.identifier = identifier;\n        this.guide = new Guide(logger);\n        this.outlets = new OutletSet(this.documentScope, element);\n    }\n    findElement(selector) {\n        return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n    }\n    findAllElements(selector) {\n        return [\n            ...(this.element.matches(selector) ? [this.element] : []),\n            ...this.queryElements(selector).filter(this.containsElement),\n        ];\n    }\n    queryElements(selector) {\n        return Array.from(this.element.querySelectorAll(selector));\n    }\n    get controllerSelector() {\n        return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n    }\n    get isDocumentScope() {\n        return this.element === document.documentElement;\n    }\n    get documentScope() {\n        return this.isDocumentScope\n            ? this\n            : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n    }\n}\n\nclass ScopeObserver {\n    constructor(element, schema, delegate) {\n        this.element = element;\n        this.schema = schema;\n        this.delegate = delegate;\n        this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n        this.scopesByIdentifierByElement = new WeakMap();\n        this.scopeReferenceCounts = new WeakMap();\n    }\n    start() {\n        this.valueListObserver.start();\n    }\n    stop() {\n        this.valueListObserver.stop();\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    parseValueForToken(token) {\n        const { element, content: identifier } = token;\n        const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n        let scope = scopesByIdentifier.get(identifier);\n        if (!scope) {\n            scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n            scopesByIdentifier.set(identifier, scope);\n        }\n        return scope;\n    }\n    elementMatchedValue(element, value) {\n        const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n        this.scopeReferenceCounts.set(value, referenceCount);\n        if (referenceCount == 1) {\n            this.delegate.scopeConnected(value);\n        }\n    }\n    elementUnmatchedValue(element, value) {\n        const referenceCount = this.scopeReferenceCounts.get(value);\n        if (referenceCount) {\n            this.scopeReferenceCounts.set(value, referenceCount - 1);\n            if (referenceCount == 1) {\n                this.delegate.scopeDisconnected(value);\n            }\n        }\n    }\n    fetchScopesByIdentifierForElement(element) {\n        let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n        if (!scopesByIdentifier) {\n            scopesByIdentifier = new Map();\n            this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n        }\n        return scopesByIdentifier;\n    }\n}\n\nclass Router {\n    constructor(application) {\n        this.application = application;\n        this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n        this.scopesByIdentifier = new Multimap();\n        this.modulesByIdentifier = new Map();\n    }\n    get element() {\n        return this.application.element;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get logger() {\n        return this.application.logger;\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    get modules() {\n        return Array.from(this.modulesByIdentifier.values());\n    }\n    get contexts() {\n        return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n    }\n    start() {\n        this.scopeObserver.start();\n    }\n    stop() {\n        this.scopeObserver.stop();\n    }\n    loadDefinition(definition) {\n        this.unloadIdentifier(definition.identifier);\n        const module = new Module(this.application, definition);\n        this.connectModule(module);\n        const afterLoad = definition.controllerConstructor.afterLoad;\n        if (afterLoad) {\n            afterLoad(definition.identifier, this.application);\n        }\n    }\n    unloadIdentifier(identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            this.disconnectModule(module);\n        }\n    }\n    getContextForElementAndIdentifier(element, identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            return module.contexts.find((context) => context.element == element);\n        }\n    }\n    handleError(error, message, detail) {\n        this.application.handleError(error, message, detail);\n    }\n    createScopeForElementAndIdentifier(element, identifier) {\n        return new Scope(this.schema, element, identifier, this.logger);\n    }\n    scopeConnected(scope) {\n        this.scopesByIdentifier.add(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.connectContextForScope(scope);\n        }\n    }\n    scopeDisconnected(scope) {\n        this.scopesByIdentifier.delete(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.disconnectContextForScope(scope);\n        }\n    }\n    connectModule(module) {\n        this.modulesByIdentifier.set(module.identifier, module);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.connectContextForScope(scope));\n    }\n    disconnectModule(module) {\n        this.modulesByIdentifier.delete(module.identifier);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.disconnectContextForScope(scope));\n    }\n}\n\nconst defaultSchema = {\n    controllerAttribute: \"data-controller\",\n    actionAttribute: \"data-action\",\n    targetAttribute: \"data-target\",\n    targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n    outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n    keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n    return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n    constructor(element = document.documentElement, schema = defaultSchema) {\n        this.logger = console;\n        this.debug = false;\n        this.logDebugActivity = (identifier, functionName, detail = {}) => {\n            if (this.debug) {\n                this.logFormattedMessage(identifier, functionName, detail);\n            }\n        };\n        this.element = element;\n        this.schema = schema;\n        this.dispatcher = new Dispatcher(this);\n        this.router = new Router(this);\n        this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n    }\n    static start(element, schema) {\n        const application = new this(element, schema);\n        application.start();\n        return application;\n    }\n    async start() {\n        await domReady();\n        this.logDebugActivity(\"application\", \"starting\");\n        this.dispatcher.start();\n        this.router.start();\n        this.logDebugActivity(\"application\", \"start\");\n    }\n    stop() {\n        this.logDebugActivity(\"application\", \"stopping\");\n        this.dispatcher.stop();\n        this.router.stop();\n        this.logDebugActivity(\"application\", \"stop\");\n    }\n    register(identifier, controllerConstructor) {\n        this.load({ identifier, controllerConstructor });\n    }\n    registerActionOption(name, filter) {\n        this.actionDescriptorFilters[name] = filter;\n    }\n    load(head, ...rest) {\n        const definitions = Array.isArray(head) ? head : [head, ...rest];\n        definitions.forEach((definition) => {\n            if (definition.controllerConstructor.shouldLoad) {\n                this.router.loadDefinition(definition);\n            }\n        });\n    }\n    unload(head, ...rest) {\n        const identifiers = Array.isArray(head) ? head : [head, ...rest];\n        identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n    }\n    get controllers() {\n        return this.router.contexts.map((context) => context.controller);\n    }\n    getControllerForElementAndIdentifier(element, identifier) {\n        const context = this.router.getContextForElementAndIdentifier(element, identifier);\n        return context ? context.controller : null;\n    }\n    handleError(error, message, detail) {\n        var _a;\n        this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n        (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n    }\n    logFormattedMessage(identifier, functionName, detail = {}) {\n        detail = Object.assign({ application: this }, detail);\n        this.logger.groupCollapsed(`${identifier} #${functionName}`);\n        this.logger.log(\"details:\", Object.assign({}, detail));\n        this.logger.groupEnd();\n    }\n}\nfunction domReady() {\n    return new Promise((resolve) => {\n        if (document.readyState == \"loading\") {\n            document.addEventListener(\"DOMContentLoaded\", () => resolve());\n        }\n        else {\n            resolve();\n        }\n    });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n    const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n    return classes.reduce((properties, classDefinition) => {\n        return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n    }, {});\n}\nfunction propertiesForClassDefinition(key) {\n    return {\n        [`${key}Class`]: {\n            get() {\n                const { classes } = this;\n                if (classes.has(key)) {\n                    return classes.get(key);\n                }\n                else {\n                    const attribute = classes.getAttributeName(key);\n                    throw new Error(`Missing attribute \"${attribute}\"`);\n                }\n            },\n        },\n        [`${key}Classes`]: {\n            get() {\n                return this.classes.getAll(key);\n            },\n        },\n        [`has${capitalize(key)}Class`]: {\n            get() {\n                return this.classes.has(key);\n            },\n        },\n    };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n    const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n    return outlets.reduce((properties, outletDefinition) => {\n        return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n    }, {});\n}\nfunction propertiesForOutletDefinition(name) {\n    const camelizedName = namespaceCamelize(name);\n    return {\n        [`${camelizedName}Outlet`]: {\n            get() {\n                const outlet = this.outlets.find(name);\n                if (outlet) {\n                    const outletController = this.application.getControllerForElementAndIdentifier(outlet, name);\n                    if (outletController) {\n                        return outletController;\n                    }\n                    else {\n                        throw new Error(`Missing \"data-controller=${name}\" attribute on outlet element for \"${this.identifier}\" controller`);\n                    }\n                }\n                throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n            },\n        },\n        [`${camelizedName}Outlets`]: {\n            get() {\n                const outlets = this.outlets.findAll(name);\n                if (outlets.length > 0) {\n                    return outlets\n                        .map((outlet) => {\n                        const controller = this.application.getControllerForElementAndIdentifier(outlet, name);\n                        if (controller) {\n                            return controller;\n                        }\n                        else {\n                            console.warn(`The provided outlet element is missing the outlet controller \"${name}\" for \"${this.identifier}\"`, outlet);\n                        }\n                    })\n                        .filter((controller) => controller);\n                }\n                return [];\n            },\n        },\n        [`${camelizedName}OutletElement`]: {\n            get() {\n                const outlet = this.outlets.find(name);\n                if (outlet) {\n                    return outlet;\n                }\n                else {\n                    throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n                }\n            },\n        },\n        [`${camelizedName}OutletElements`]: {\n            get() {\n                return this.outlets.findAll(name);\n            },\n        },\n        [`has${capitalize(camelizedName)}Outlet`]: {\n            get() {\n                return this.outlets.has(name);\n            },\n        },\n    };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n    const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n    return targets.reduce((properties, targetDefinition) => {\n        return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n    }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n    return {\n        [`${name}Target`]: {\n            get() {\n                const target = this.targets.find(name);\n                if (target) {\n                    return target;\n                }\n                else {\n                    throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n                }\n            },\n        },\n        [`${name}Targets`]: {\n            get() {\n                return this.targets.findAll(name);\n            },\n        },\n        [`has${capitalize(name)}Target`]: {\n            get() {\n                return this.targets.has(name);\n            },\n        },\n    };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n    const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n    const propertyDescriptorMap = {\n        valueDescriptorMap: {\n            get() {\n                return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n                    const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n                    const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n                    return Object.assign(result, { [attributeName]: valueDescriptor });\n                }, {});\n            },\n        },\n    };\n    return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n        return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n    }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n    const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n    const { key, name, reader: read, writer: write } = definition;\n    return {\n        [name]: {\n            get() {\n                const value = this.data.get(key);\n                if (value !== null) {\n                    return read(value);\n                }\n                else {\n                    return definition.defaultValue;\n                }\n            },\n            set(value) {\n                if (value === undefined) {\n                    this.data.delete(key);\n                }\n                else {\n                    this.data.set(key, write(value));\n                }\n            },\n        },\n        [`has${capitalize(name)}`]: {\n            get() {\n                return this.data.has(key) || definition.hasCustomDefaultValue;\n            },\n        },\n    };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n    return valueDescriptorForTokenAndTypeDefinition({\n        controller,\n        token,\n        typeDefinition,\n    });\n}\nfunction parseValueTypeConstant(constant) {\n    switch (constant) {\n        case Array:\n            return \"array\";\n        case Boolean:\n            return \"boolean\";\n        case Number:\n            return \"number\";\n        case Object:\n            return \"object\";\n        case String:\n            return \"string\";\n    }\n}\nfunction parseValueTypeDefault(defaultValue) {\n    switch (typeof defaultValue) {\n        case \"boolean\":\n            return \"boolean\";\n        case \"number\":\n            return \"number\";\n        case \"string\":\n            return \"string\";\n    }\n    if (Array.isArray(defaultValue))\n        return \"array\";\n    if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n        return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n    const typeFromObject = parseValueTypeConstant(payload.typeObject.type);\n    if (!typeFromObject)\n        return;\n    const defaultValueType = parseValueTypeDefault(payload.typeObject.default);\n    if (typeFromObject !== defaultValueType) {\n        const propertyPath = payload.controller ? `${payload.controller}.${payload.token}` : payload.token;\n        throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${payload.typeObject.default}\" is of type \"${defaultValueType}\".`);\n    }\n    return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n    const typeFromObject = parseValueTypeObject({\n        controller: payload.controller,\n        token: payload.token,\n        typeObject: payload.typeDefinition,\n    });\n    const typeFromDefaultValue = parseValueTypeDefault(payload.typeDefinition);\n    const typeFromConstant = parseValueTypeConstant(payload.typeDefinition);\n    const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n    if (type)\n        return type;\n    const propertyPath = payload.controller ? `${payload.controller}.${payload.typeDefinition}` : payload.token;\n    throw new Error(`Unknown value type \"${propertyPath}\" for \"${payload.token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n    const constant = parseValueTypeConstant(typeDefinition);\n    if (constant)\n        return defaultValuesByType[constant];\n    const defaultValue = typeDefinition.default;\n    if (defaultValue !== undefined)\n        return defaultValue;\n    return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n    const key = `${dasherize(payload.token)}-value`;\n    const type = parseValueTypeDefinition(payload);\n    return {\n        type,\n        key,\n        name: camelize(key),\n        get defaultValue() {\n            return defaultValueForDefinition(payload.typeDefinition);\n        },\n        get hasCustomDefaultValue() {\n            return parseValueTypeDefault(payload.typeDefinition) !== undefined;\n        },\n        reader: readers[type],\n        writer: writers[type] || writers.default,\n    };\n}\nconst defaultValuesByType = {\n    get array() {\n        return [];\n    },\n    boolean: false,\n    number: 0,\n    get object() {\n        return {};\n    },\n    string: \"\",\n};\nconst readers = {\n    array(value) {\n        const array = JSON.parse(value);\n        if (!Array.isArray(array)) {\n            throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n        }\n        return array;\n    },\n    boolean(value) {\n        return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n    },\n    number(value) {\n        return Number(value);\n    },\n    object(value) {\n        const object = JSON.parse(value);\n        if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n            throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n        }\n        return object;\n    },\n    string(value) {\n        return value;\n    },\n};\nconst writers = {\n    default: writeString,\n    array: writeJSON,\n    object: writeJSON,\n};\nfunction writeJSON(value) {\n    return JSON.stringify(value);\n}\nfunction writeString(value) {\n    return `${value}`;\n}\n\nclass Controller {\n    constructor(context) {\n        this.context = context;\n    }\n    static get shouldLoad() {\n        return true;\n    }\n    static afterLoad(_identifier, _application) {\n        return;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get targets() {\n        return this.scope.targets;\n    }\n    get outlets() {\n        return this.scope.outlets;\n    }\n    get classes() {\n        return this.scope.classes;\n    }\n    get data() {\n        return this.scope.data;\n    }\n    initialize() {\n    }\n    connect() {\n    }\n    disconnect() {\n    }\n    dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true } = {}) {\n        const type = prefix ? `${prefix}:${eventName}` : eventName;\n        const event = new CustomEvent(type, { detail, bubbles, cancelable });\n        target.dispatchEvent(event);\n        return event;\n    }\n}\nController.blessings = [\n    ClassPropertiesBlessing,\n    TargetPropertiesBlessing,\n    ValuePropertiesBlessing,\n    OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"submit\"]\n\n  inputed() {\n    this.submitTarget.disabled = false\n  }\n}\n", "export class FetchResponse {\n  constructor (response) {\n    this.response = response\n  }\n\n  get statusCode () {\n    return this.response.status\n  }\n\n  get redirected () {\n    return this.response.redirected\n  }\n\n  get ok () {\n    return this.response.ok\n  }\n\n  get unauthenticated () {\n    return this.statusCode === 401\n  }\n\n  get unprocessableEntity () {\n    return this.statusCode === 422\n  }\n\n  get authenticationURL () {\n    return this.response.headers.get('WWW-Authenticate')\n  }\n\n  get contentType () {\n    const contentType = this.response.headers.get('Content-Type') || ''\n\n    return contentType.replace(/;.*$/, '')\n  }\n\n  get headers () {\n    return this.response.headers\n  }\n\n  get html () {\n    if (this.contentType.match(/^(application|text)\\/(html|xhtml\\+xml)$/)) {\n      return this.text\n    }\n\n    return Promise.reject(new Error(`Expected an HTML response but got \"${this.contentType}\" instead`))\n  }\n\n  get json () {\n    if (this.contentType.match(/^application\\/.*json$/)) {\n      return this.responseJson || (this.responseJson = this.response.json())\n    }\n\n    return Promise.reject(new Error(`Expected a JSON response but got \"${this.contentType}\" instead`))\n  }\n\n  get text () {\n    return this.responseText || (this.responseText = this.response.text())\n  }\n\n  get isTurboStream () {\n    return this.contentType.match(/^text\\/vnd\\.turbo-stream\\.html/)\n  }\n\n  async renderTurboStream () {\n    if (this.isTurboStream) {\n      if (window.Turbo) {\n        await window.Turbo.renderStreamMessage(await this.text)\n      } else {\n        console.warn('You must set `window.Turbo = Turbo` to automatically process Turbo Stream events with request.js')\n      }\n    } else {\n      return Promise.reject(new Error(`Expected a Turbo Stream response but got \"${this.contentType}\" instead`))\n    }\n  }\n}\n", "export class RequestInterceptor {\n  static register (interceptor) {\n    this.interceptor = interceptor\n  }\n\n  static get () {\n    return this.interceptor\n  }\n\n  static reset () {\n    this.interceptor = undefined\n  }\n}\n", "export function getCookie (name) {\n  const cookies = document.cookie ? document.cookie.split('; ') : []\n  const prefix = `${encodeURIComponent(name)}=`\n  const cookie = cookies.find(cookie => cookie.startsWith(prefix))\n\n  if (cookie) {\n    const value = cookie.split('=').slice(1).join('=')\n\n    if (value) {\n      return decodeURIComponent(value)\n    }\n  }\n}\n\nexport function compact (object) {\n  const result = {}\n\n  for (const key in object) {\n    const value = object[key]\n    if (value !== undefined) {\n      result[key] = value\n    }\n  }\n\n  return result\n}\n\nexport function metaContent (name) {\n  const element = document.head.querySelector(`meta[name=\"${name}\"]`)\n  return element && element.content\n}\n\nexport function stringEntriesFromFormData (formData) {\n  return [...formData].reduce((entries, [name, value]) => {\n    return entries.concat(typeof value === 'string' ? [[name, value]] : [])\n  }, [])\n}\n\nexport function mergeEntries (searchParams, entries) {\n  for (const [name, value] of entries) {\n    if (value instanceof window.File) continue\n\n    if (searchParams.has(name) && !name.includes('[]')) {\n      searchParams.delete(name)\n      searchParams.set(name, value)\n    } else {\n      searchParams.append(name, value)\n    }\n  }\n}\n", "import { FetchResponse } from './fetch_response'\nimport { RequestInterceptor } from './request_interceptor'\nimport { getCookie, compact, metaContent, stringEntriesFromFormData, mergeEntries } from './lib/utils'\n\nexport class FetchRequest {\n  constructor (method, url, options = {}) {\n    this.method = method\n    this.options = options\n    this.originalUrl = url.toString()\n  }\n\n  async perform () {\n    try {\n      const requestInterceptor = RequestInterceptor.get()\n      if (requestInterceptor) {\n        await requestInterceptor(this)\n      }\n    } catch (error) {\n      console.error(error)\n    }\n\n    const response = new FetchResponse(await window.fetch(this.url, this.fetchOptions))\n\n    if (response.unauthenticated && response.authenticationURL) {\n      return Promise.reject(window.location.href = response.authenticationURL)\n    }\n\n    const responseStatusIsTurboStreamable = response.ok || response.unprocessableEntity\n\n    if (responseStatusIsTurboStreamable && response.isTurboStream) {\n      await response.renderTurboStream()\n    }\n\n    return response\n  }\n\n  addHeader (key, value) {\n    const headers = this.additionalHeaders\n    headers[key] = value\n    this.options.headers = headers\n  }\n\n  sameHostname () {\n    if (!this.originalUrl.startsWith('http:')) {\n      return true\n    }\n\n    try {\n      return new URL(this.originalUrl).hostname === window.location.hostname\n    } catch (_) {\n      return true\n    }\n  }\n\n  get fetchOptions () {\n    return {\n      method: this.method.toUpperCase(),\n      headers: this.headers,\n      body: this.formattedBody,\n      signal: this.signal,\n      credentials: this.credentials,\n      redirect: this.redirect\n    }\n  }\n\n  get headers () {\n    const baseHeaders = {\n      'X-Requested-With': 'XMLHttpRequest',\n      'Content-Type': this.contentType,\n      Accept: this.accept\n    }\n\n    if (this.sameHostname()) {\n      baseHeaders['X-CSRF-Token'] = this.csrfToken\n    }\n\n    return compact(\n      Object.assign(baseHeaders, this.additionalHeaders)\n    )\n  }\n\n  get csrfToken () {\n    return getCookie(metaContent('csrf-param')) || metaContent('csrf-token')\n  }\n\n  get contentType () {\n    if (this.options.contentType) {\n      return this.options.contentType\n    } else if (this.body == null || this.body instanceof window.FormData) {\n      return undefined\n    } else if (this.body instanceof window.File) {\n      return this.body.type\n    }\n\n    return 'application/json'\n  }\n\n  get accept () {\n    switch (this.responseKind) {\n      case 'html':\n        return 'text/html, application/xhtml+xml'\n      case 'turbo-stream':\n        return 'text/vnd.turbo-stream.html, text/html, application/xhtml+xml'\n      case 'json':\n        return 'application/json, application/vnd.api+json'\n      default:\n        return '*/*'\n    }\n  }\n\n  get body () {\n    return this.options.body\n  }\n\n  get query () {\n    const originalQuery = (this.originalUrl.split('?')[1] || '').split('#')[0]\n    const params = new URLSearchParams(originalQuery)\n\n    let requestQuery = this.options.query\n    if (requestQuery instanceof window.FormData) {\n      requestQuery = stringEntriesFromFormData(requestQuery)\n    } else if (requestQuery instanceof window.URLSearchParams) {\n      requestQuery = requestQuery.entries()\n    } else {\n      requestQuery = Object.entries(requestQuery || {})\n    }\n\n    mergeEntries(params, requestQuery)\n\n    const query = params.toString()\n    return (query.length > 0 ? `?${query}` : '')\n  }\n\n  get url () {\n    return (this.originalUrl.split('?')[0]).split('#')[0] + this.query\n  }\n\n  get responseKind () {\n    return this.options.responseKind || 'html'\n  }\n\n  get signal () {\n    return this.options.signal\n  }\n\n  get redirect () {\n    return this.options.redirect || 'follow'\n  }\n\n  get credentials () {\n    return this.options.credentials || 'same-origin'\n  }\n\n  get additionalHeaders () {\n    return this.options.headers || {}\n  }\n\n  get formattedBody () {\n    const bodyIsAString = Object.prototype.toString.call(this.body) === '[object String]'\n    const contentTypeIsJson = this.headers['Content-Type'] === 'application/json'\n\n    if (contentTypeIsJson && !bodyIsAString) {\n      return JSON.stringify(this.body)\n    }\n\n    return this.body\n  }\n}\n", "import { FetchRequest } from './fetch_request'\n\nasync function get (url, options) {\n  const request = new FetchRequest('get', url, options)\n  return request.perform()\n}\n\nasync function post (url, options) {\n  const request = new FetchRequest('post', url, options)\n  return request.perform()\n}\n\nasync function put (url, options) {\n  const request = new FetchRequest('put', url, options)\n  return request.perform()\n}\n\nasync function patch (url, options) {\n  const request = new FetchRequest('patch', url, options)\n  return request.perform()\n}\n\nasync function destroy (url, options) {\n  const request = new FetchRequest('delete', url, options)\n  return request.perform()\n}\n\nexport { get, post, put, patch, destroy }\n", "import { Controller } from \"@hotwired/stimulus\";\nimport { post, get } from \"@rails/request.js\";\n\nexport default class extends Controller {\n  static targets = [\"modal\", \"downloadButton\", \"submit\", \"textarea\"];\n\n  static values = {\n    url: String,\n    groupId: String,\n    playerId: String,\n  };\n\n  connect() {\n    this.submitTarget.addEventListener(\"click\", () => {\n      const body = {\n        group_id: this.groupIdValue,\n        player_id: this.playerIdValue,\n        text: this.textareaTarget.value,\n      };\n      post(this.urlValue, { body: JSON.stringify(body) })\n        .then((response) => response.json)\n        .then((responseBody) => {\n          this.pollBackgroundRequest(responseBody.background_request_path);\n        });\n\n      this.modalTarget.showModal();\n    });\n\n    this.modalTarget.addEventListener(\"open.zf.reveal\", () => {\n      this.downloadButtonTarget.disabled = true;\n    });\n  }\n\n  closeModal() {\n    this.modalTarget.close();\n  }\n\n  download(e) {\n    e.preventDefault();\n    window.open(this.downloadUrl, \"_blank\");\n    this.modalTarget.close();\n  }\n\n  disconnect() {\n    clearInterval(this.pollingTimeout);\n  }\n\n  pollBackgroundRequest(backgroundRequestPath) {\n    clearInterval(this.pollingTimeout);\n\n    this.pollingInterval = setInterval(() => {\n      get(backgroundRequestPath)\n        .then((response) => response.json)\n        .then((response) => {\n          if (response.background_request.complete !== \"t\") return;\n\n          const data = response.background_request.result;\n\n          this.downloadUrl = data.url;\n          this.downloadButtonTarget.disabled = false;\n          clearInterval(this.pollingInterval);\n        })\n        .catch((e) => {\n          clearInterval(this.pollingInterval);\n        });\n    }, 2000);\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  static targets = [\"button\"];\n\n  static values = {\n    path: String,\n  };\n\n  connect() {\n    this.origin = new URL(window.location).origin;\n  }\n\n  update(event) {\n    this.url = new URL(this.origin);\n    this.url.pathname = this.pathValue + event.target.value;\n    this.buttonTarget.href = this.url;\n  }\n\n  handleKey(event) {\n    const isEnter = event.key === \"Enter\";\n    const canClick = this.buttonTarget.dataset.disabled !== \"true\";\n    if (isEnter) event.preventDefault();\n    if (isEnter && canClick) this.buttonTarget.click();\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  static classes = [\"disabled\"];\n  static targets = [\"field\", \"action\"];\n\n  connect() {\n    this.update = this.update.bind(this);\n    this.fieldTargets.forEach((el) =>\n      el.addEventListener(\"input\", this.update)\n    );\n    this.update();\n  }\n\n  disconnect() {\n    this.fieldTargets.forEach((el) =>\n      el.removeEventListener(\"input\", this.update)\n    );\n  }\n\n  update() {\n    const atLeastOneEmpty = Array.from(this.fieldTargets).some(\n      (el) => el.value.trim() == \"\"\n    );\n    this.actionTarget.classList.toggle(this.disabledClass, atLeastOneEmpty);\n\n    // Set the disabled attribute also for actions that are submit buttons\n    if (this.actionTarget.type == \"submit\") {\n      const is_submission_disabled = atLeastOneEmpty != 0 ? true : false;\n      is_submission_disabled\n        ? this.actionTarget.setAttribute(\"disabled\", \"\")\n        : this.actionTarget.removeAttribute(\"disabled\", \"\");\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  static classes = [\"disabled\"];\n  static targets = [\"field\", \"action\"];\n\n  connect() {\n    this.update = this.update.bind(this);\n    this.fieldTargets.forEach((el) =>\n      el.addEventListener(\"input\", this.update)\n    );\n    this.update();\n  }\n\n  disconnect() {\n    this.fieldTargets.forEach((el) =>\n      el.removeEventListener(\"input\", this.update)\n    );\n  }\n\n  update() {\n    const atLeastOneInvalid = !Array.from(this.fieldTargets).every(\n      (el) => el.checkValidity() && el.value != \"\"\n    );\n    this.actionTarget.dataset.disabled = atLeastOneInvalid;\n    this.actionTarget.classList.toggle(this.disabledClass, atLeastOneInvalid);\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport { get, post } from \"@rails/request.js\";\n\nexport default class extends Controller {\n  connect() {\n    this.start = this.start.bind(this);\n    this.download = this.download.bind(this);\n    this.currentUrl = new URL(window.location);\n\n    const modalId = this.element.dataset.open;\n    this.modal = document.getElementById(modalId);\n    this.modalText = this.modal.querySelector(\".pdf-generation-modal_text\");\n    this.pdfGenerationUrl = this.element.dataset.generatePdfUrl;\n    this.pdfDownloadButton = this.modal.querySelector(\"button.pdf-download\");\n\n    this.element.addEventListener(\"click\", this.start);\n    this.pdfDownloadButton.addEventListener(\"click\", this.download);\n  }\n\n  disconnect() {\n    this.element.removeEventListener(\"click\", this.start);\n    this.pdfDownloadButton.removeEventListener(\"click\", this.download);\n  }\n\n  start() {\n    const pdfDownloadButton = this.modal.querySelector(\"button.pdf-download\");\n    const generatePdfUrl = this.element.dataset.generatePdfUrl;\n    const { url, formData } = this.#requestData(generatePdfUrl);\n\n    pdfDownloadButton.disabled = true;\n\n    post(url, { body: formData }).then(async (response) => {\n      let data = await response.response.json();\n\n      const pdfName = data.pdf_name;\n      const interval = setInterval(() => {\n        get(data.bg_path)\n          .then(async (response) => {\n            response = await response.response.json();\n\n            if (!response.background_request.complete) return;\n\n            data = response.background_request.result;\n            if (data.file == pdfName) {\n              pdfDownloadButton.dataset.downloadUrl = data.url;\n              this.modalText.textContent =\n                \"Your document is ready to download!\";\n              pdfDownloadButton.disabled = false;\n              clearInterval(interval);\n            }\n          })\n          .catch((err) => {\n            clearInterval(interval);\n            console.error(err);\n          });\n      }, 2000);\n    });\n  }\n\n  download(event) {\n    event.preventDefault();\n    const url = this.pdfDownloadButton.dataset.downloadUrl;\n    window.open(url, \"_blank\");\n    const closeModal = this.modal.querySelector(\"[data-close]\");\n    closeModal.click();\n  }\n\n  #requestData(originalUrl) {\n    let generatePdfUrl = new URL(\n      this.currentUrl.protocol + this.currentUrl.host + originalUrl\n    );\n\n    // convert potentially long url to form data\n    const pdfFormData = new FormData();\n\n    // toArray() is a workaround for an undocumented problem with\n    // Safari 18.3 that doesn't define forEach for the iterator\n    // returned by entries().\n    //\n    // TypeError: generatePdfUrl.searchParams.entries().forEach is not a function\n    generatePdfUrl.searchParams.entries().toArray().forEach(([key, value]) => {\n      pdfFormData.append(key, value);\n    });\n    generatePdfUrl.searchParams.delete(\"player_ids[]\");\n    generatePdfUrl.searchParams.delete(\"player_ids\");\n\n    return { url: generatePdfUrl, formData: pdfFormData };\n  }\n}\n"],
  "mappings": "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",
  "names": ["window", "isFunction", "isWindow", "document", "jQuery", "arr", "support", "tokenize", "hasOwn", "push", "slice", "indexOf", "i", "whitespace", "rtrim", "rhtml", "rquickExpr", "Sizzle", "matches", "docElem", "node", "nodeName", "dir", "isXML", "elem", "init", "add", "value", "deferred", "error", "data", "next", "expectSync", "name", "percent", "toggle", "index", "length", "location", "val", "completed", "method", "type", "jqueryUjsInit", "$", "undefined", "data", "error", "t", "e", "r", "n", "o", "i", "import_jquery", "rtl", "$", "attr", "GetYoDigits", "length", "namespace", "str", "chars", "charsLength", "i", "Math", "floor", "random", "RegExpEscape", "replace", "transitionend", "$elem", "transitions", "elem", "document", "createElement", "end", "transition", "style", "setTimeout", "triggerHandler", "onLoad", "handler", "didLoad", "readyState", "eventType", "cb", "one", "window", "ignoreMousedisappear", "ignoreLeaveWindow", "ignoreReappear", "leaveEventHandler", "eLeave", "rest", "callback", "bind", "relatedTarget", "leaveEventDebouncer", "hasFocus", "reenterEventHandler", "eReenter", "currentTarget", "has", "target", "window", "matchMedia", "styleMedia", "media", "style", "document", "createElement", "script", "getElementsByTagName", "info", "type", "id", "head", "appendChild", "parentNode", "insertBefore", "getComputedStyle", "currentStyle", "matchMedium", "text", "styleSheet", "cssText", "textContent", "width", "matches", "MediaQuery", "queries", "current", "_init", "isInitialized", "self", "$meta", "$", "length", "appendTo", "extractedStyles", "css", "namedQueries", "parseStyleToObject", "key", "hasOwnProperty", "push", "name", "value", "_getCurrentSize", "_watcher", "_reInit", "atLeast", "size", "query", "get", "only", "upTo", "nextSize", "next", "is", "parts", "trim", "split", "filter", "p", "bpSize", "bpModifier", "Error", "i", "queryIndex", "findIndex", "q", "_getQueryName", "nextQuery", "TypeError", "matched", "on", "newSize", "currentSize", "trigger", "str", "styleObject", "slice", "reduce", "ret", "param", "replace", "val", "decodeURIComponent", "Array", "isArray", "FOUNDATION_VERSION", "Foundation", "version", "_plugins", "_uuids", "plugin", "className", "functionName", "attrName", "hyphenate", "registerPlugin", "pluginName", "constructor", "toLowerCase", "uuid", "GetYoDigits", "$element", "attr", "data", "unregisterPlugin", "splice", "indexOf", "removeAttr", "removeData", "prop", "reInit", "plugins", "isJQ", "each", "_this", "fns", "plgs", "forEach", "foundation", "object", "Object", "keys", "err", "console", "error", "reflow", "elem", "$elem", "find", "addBack", "$el", "opts", "option", "opt", "map", "el", "parseValue", "er", "getFnName", "addToJquery", "method", "$noJS", "removeClass", "args", "prototype", "call", "arguments", "plugClass", "apply", "ReferenceError", "fn", "util", "throttle", "func", "delay", "timer", "context", "setTimeout", "Date", "now", "getTime", "vendors", "requestAnimationFrame", "vp", "cancelAnimationFrame", "test", "navigator", "userAgent", "lastTime", "callback", "nextTime", "Math", "max", "clearTimeout", "performance", "start", "Function", "bind", "oThis", "aArgs", "fToBind", "fNOP", "fBound", "concat", "funcNameRegex", "results", "exec", "toString", "isNaN", "parseFloat", "Box", "ImNotTouchingYou", "OverlapArea", "GetDimensions", "GetExplicitOffsets", "element", "parent", "lrOnly", "tbOnly", "ignoreBottom", "eleDims", "topOver", "bottomOver", "leftOver", "rightOver", "parDims", "height", "offset", "top", "left", "windowDims", "min", "sqrt", "rect", "getBoundingClientRect", "parRect", "winRect", "body", "winY", "pageYOffset", "winX", "pageXOffset", "parentDims", "anchor", "position", "alignment", "vOffset", "hOffset", "isOverflow", "$eleDims", "$anchorDims", "topVal", "leftVal", "onImagesLoaded", "images", "unloaded", "complete", "naturalWidth", "singleImageLoaded", "image", "Image", "events", "one", "me", "off", "src", "keyCodes", "commands", "findFocusable", "sort", "a", "b", "aTabIndex", "parseInt", "bTabIndex", "parseKey", "event", "which", "keyCode", "String", "fromCharCode", "toUpperCase", "shiftKey", "ctrlKey", "altKey", "Keyboard", "getKeyCodes", "handleKey", "component", "functions", "commandList", "cmds", "command", "warn", "zfIsKeyHandled", "ltr", "Rtl", "extend", "rtl", "returnValue", "handled", "unhandled", "register", "componentName", "trapFocus", "$focusable", "$firstFocusable", "eq", "$lastFocusable", "target", "preventDefault", "focus", "releaseFocus", "kcs", "k", "kc", "initClasses", "activeClasses", "Motion", "animateIn", "animation", "cb", "animate", "animateOut", "Move", "duration", "anim", "prog", "triggerHandler", "move", "ts", "isIn", "initClass", "activeClass", "reset", "addClass", "show", "offsetWidth", "transitionend", "finish", "hide", "transitionDuration", "Nest", "Feather", "menu", "items", "subMenuClass", "subItemClass", "hasSubClass", "applyAria", "$item", "$sub", "children", "firstItem", "Burn", "Timer", "options", "nameSpace", "remain", "isPaused", "restart", "infinite", "pause", "end", "Touch", "startPosX", "startTime", "elapsedTime", "startEvent", "isMoving", "didMoved", "onTouchEnd", "e", "removeEventListener", "onTouchMove", "tapEvent", "Event", "spotSwipe", "x", "touches", "pageX", "dx", "dir", "abs", "moveThreshold", "timeThreshold", "assign", "onTouchStart", "addEventListener", "passive", "init", "SpotSwipe", "enabled", "documentElement", "special", "swipe", "setup", "tap", "noop", "setupSpotSwipe", "setupTouchHandler", "addTouch", "handleTouch", "changedTouches", "first", "eventTypes", "touchstart", "touchmove", "touchend", "simulatedEvent", "MouseEvent", "screenX", "screenY", "clientX", "clientY", "createEvent", "initMouseEvent", "dispatchEvent", "MutationObserver", "prefixes", "triggers", "Triggers", "Listeners", "Basic", "Global", "Initializers", "openListener", "closeListener", "toggleListener", "closeableListener", "stopPropagation", "fadeOut", "toggleFocusListener", "addOpenListener", "addCloseListener", "addToggleListener", "addCloseableListener", "addToggleFocusListener", "resizeListener", "$nodes", "scrollListener", "closeMeListener", "pluginId", "namespace", "not", "addClosemeListener", "yetiBoxes", "plugNames", "listeners", "join", "debounceGlobalListener", "debounce", "listener", "addResizeListener", "addScrollListener", "addMutationEventsListener", "listeningElementsMutation", "mutationRecordsList", "$target", "attributeName", "closest", "elementObserver", "observe", "attributes", "childList", "characterData", "subtree", "attributeFilter", "addSimpleListeners", "$document", "addGlobalListeners", "__", "onLoad", "triggersInitialized", "IHearYou", "Plugin", "_setup", "getPluginName", "destroy", "_destroy", "obj", "Abide", "defaults", "isEnabled", "formnovalidate", "$inputs", "merge", "$submits", "$globalErrors", "a11yAttributes", "input", "addA11yAttributes", "addGlobalErrorA11yAttributes", "_events", "resetForm", "validateForm", "getAttribute", "submit", "validateOn", "validateInput", "liveValidate", "validateOnBlur", "isGood", "checked", "failedValidators", "$error", "siblings", "formErrorSelector", "add", "v", "$label", "$els", "labels", "findLabel", "$formError", "findFormError", "labelErrorClass", "formErrorClass", "inputErrorClass", "addA11yErrorDescribe", "$errors", "$labels", "elemId", "label", "errorId", "a11yErrorLevel", "groupName", "findRadioLabels", "$formErrors", "findCheckboxLabels", "removeRadioErrorClasses", "removeCheckboxErrorClasses", "clearRequire", "requiredCheck", "validator", "manageErrorClasses", "_validationIsDisabled", "validateRadio", "validateCheckbox", "validateText", "required", "validators", "equalTo", "goodToGo", "message", "dependentElements", "addErrorClasses", "removeErrorClasses", "acc", "checkboxGroupName", "initialized", "noError", "pattern", "inputText", "valid", "patterns", "RegExp", "$group", "minRequired", "clear", "$form", "alpha", "alpha_numeric", "integer", "number", "card", "cvv", "email", "url", "domain", "datetime", "date", "time", "dateISO", "month_day_year", "day_month_year", "color", "website", "Accordion", "_isInitializing", "$tabs", "idx", "$content", "linkId", "$initActive", "_initialAnchor", "prev", "_openSingleTab", "_checkDeepLink", "location", "hash", "$anchor", "$link", "isOwnAnchor", "hasClass", "_closeAllTabs", "deepLinkSmudge", "scrollTop", "deepLinkSmudgeOffset", "deepLinkSmudgeDelay", "deepLink", "$tabContent", "toggle", "$a", "multiExpand", "previous", "last", "up", "down", "updateHistory", "history", "pushState", "replaceState", "_openTab", "$targetItem", "$othersItems", "allowAllClosed", "_closeTab", "$activeContents", "targetContentId", "slideDown", "slideSpeed", "slideUp", "$activeTabs", "stop", "AccordionMenu", "multiOpen", "$menuLinks", "subId", "isActive", "parentLink", "clone", "prependTo", "wrap", "submenuToggle", "after", "submenuToggleText", "initPanes", "$submenu", "$elements", "$prevElement", "$nextElement", "parents", "open", "close", "closeAll", "hideAll", "$targetBranch", "parentsUntil", "$othersActiveSubmenus", "$submenus", "$allmenus", "detach", "remove", "Drilldown", "autoApplyClass", "$submenuAnchors", "$menuItems", "$currentMenu", "_prepareMenu", "_registerEvents", "_keyboardEvents", "$menu", "$back", "backButtonPosition", "append", "backButton", "prepend", "_back", "autoHeight", "$wrapper", "wrapper", "animateHeight", "_getMaxDims", "_show", "closeOnClick", "$body", "ev", "contains", "_hideAll", "_bindHandler", "_scrollTop", "_resize", "$scrollTopElement", "scrollTopElement", "scrollPos", "scrollTopOffset", "animationDuration", "animationEasing", "_hide", "calcHeight", "parentSubMenu", "autoFocus", "$expandedSubmenus", "_setHideSubMenuClasses", "index", "isLastChild", "_setShowSubMenuClasses", "blur", "maxHeight", "result", "unwrap", "POSITIONS", "VERTICAL_ALIGNMENTS", "HORIZONTAL_ALIGNMENTS", "ALIGNMENTS", "nextItem", "item", "array", "currentIdx", "Positionable", "triedPositions", "_getDefaultPosition", "_getDefaultAlignment", "originalPosition", "originalAlignment", "_alignmentsExhausted", "_realign", "_addTriedPosition", "isExhausted", "$parent", "allowOverlap", "_getVOffset", "_getHOffset", "minOverlap", "minCoordinates", "_positionsExhausted", "overlap", "allowBottomOverlap", "_reposition", "Dropdown", "$id", "$anchors", "_setCurrentAnchor", "parentClass", "$currentAnchor", "match", "horizontalPosition", "hasTouch", "ontouchstart", "_setPosition", "forceFollow", "hover", "bodyData", "whatinput", "timeout", "hoverDelay", "ignoreMousedisappear", "hoverPane", "_addBodyHandler", "DropdownMenu", "subs", "verticalClass", "rightClass", "changed", "parClass", "handleClickFn", "hasSub", "hasClicked", "clickOpen", "stopImmediatePropagation", "closeOnClickInside", "disableHoverOnTouch", "disableHover", "autoclose", "closingTime", "isTab", "nextSibling", "prevSibling", "openSub", "closeSub", "_isVertical", "_isRtl", "_removeBodyHandler", "isItself", "$sibs", "oldClass", "$parentLi", "$toClose", "somethingToClose", "$activeItem", "Equalizer", "eqId", "$watched", "hasNested", "isNested", "isOn", "onResizeMeBound", "_onResizeMe", "onPostEqualizedBound", "_onPostEqualized", "imgs", "tooSmall", "equalizeOn", "_checkMQ", "_reflow", "_pauseEvents", "equalizeOnStack", "_isStacked", "equalizeByRow", "getHeightsByRow", "applyHeightByRow", "getHeights", "applyHeight", "heights", "len", "offsetHeight", "lastElTopOffset", "groups", "group", "elOffsetTop", "j", "ln", "groupsILength", "lenJ", "Interchange", "rules", "currentPath", "_parseOptions", "_addBreakpoints", "_generateRules", "rule", "path", "types", "SPECIAL_QUERIES", "rulesList", "nodeName", "response", "html", "SmoothScroll", "_linkClickListener", "_handleLinkClick", "currentTarget", "arrival", "_inTransition", "scrollToLoc", "loc", "$loc", "round", "threshold", "Magellan", "calcPoints", "$targets", "$links", "$active", "points", "winHeight", "innerHeight", "clientHeight", "docHeight", "scrollHeight", "$tar", "pt", "targetPoint", "deepLinking", "_updateActive", "onLoadListener", "_deepLinkScroll", "newScrollPos", "isScrollingUp", "activeIdx", "visibleLinks", "$oldActive", "activeHash", "isNewActive", "isNewHash", "pathname", "search", "OffCanvas", "contentClasses", "base", "reveal", "$lastTrigger", "$triggers", "nested", "$sticky", "isInCanvas", "contentId", "transition", "contentOverlay", "overlay", "overlayPosition", "setAttribute", "$overlay", "insertAfter", "revealOnRegExp", "RegExpEscape", "revealClass", "revealOnClass", "isRevealed", "revealOn", "_setMQChecker", "transitionTime", "contentScroll", "inCanvasFor", "inCanvasOn", "_checkInCanvas", "_removeContentClasses", "_handleKeyboard", "hasReveal", "_", "absoluteTopVal", "stickyData", "_addContentClasses", "lastY", "pageY", "delta", "_canScroll", "allowUp", "allowDown", "forceTo", "scrollTo", "_stopScrolling", "_recordScrollable", "_preventDefaultAtEdges", "_scrollboxTouchMoved", "canvasFocus", "_fixStickyElements", "_unfixStickyElements", "Orbit", "_reset", "containerClass", "$slides", "slideClass", "$images", "initActive", "useMUI", "_prepareForOrbit", "bullets", "_loadBullets", "autoPlay", "geoSync", "accessible", "$bullets", "boxOfBullets", "timerDelay", "changeSlide", "_setWrapperHeight", "temp", "counter", "pauseOnHover", "navButtons", "$controls", "nextClass", "prevClass", "$slide", "_updateBullets", "isLTR", "chosenSlide", "$curSlide", "$firstSlide", "$lastSlide", "dirIn", "dirOut", "$newSlide", "infiniteWrap", "$oldBullet", "$othersBullets", "$newBullet", "activeStateDescriptor", "spans", "spanCountInOthersBullets", "toArray", "every", "count", "animInFromRight", "animOutToRight", "animInFromLeft", "animOutToLeft", "MenuPlugins", "dropdown", "cssClass", "drilldown", "accordion", "ResponsiveMenu", "currentMq", "currentPlugin", "rulesTree", "ruleSize", "rulePlugin", "isEmptyObject", "_checkMediaQueries", "matchedMq", "ResponsiveToggle", "targetID", "$targetMenu", "$toggler", "animationIn", "animationOut", "_update", "_updateMqHandler", "toggleMenu", "hideFor", "Reveal", "cached", "mq", "fullScreen", "_makeOverlay", "additionalOverlayClasses", "outerWidth", "outerHeight", "margin", "_updatePosition", "_handleState", "$activeAnchor", "activeElement", "multipleOpened", "_disableScroll", "afterAnimation", "_addGlobalClasses", "focusableElements", "showDelay", "_addGlobalListeners", "updateScrollbarClass", "toggleClass", "closeOnEsc", "finishUp", "hideDelay", "_removeGlobalClasses", "_enableScroll", "resetOnClose", "urlWithoutHash", "title", "Slider", "inputs", "handles", "$handle", "$input", "$fill", "vertical", "disabled", "disabledClass", "binding", "_setInitAttr", "doubleSided", "$handle2", "$input2", "setHandles", "_setHandlePos", "pctOfBar", "percent", "positionValueFunction", "_logTransform", "_powTransform", "toFixed", "baseLog", "nonLinearBase", "pow", "$hndl", "isDbl", "h2Val", "step", "h1Val", "vert", "hOrW", "lOrT", "handleDim", "elemDim", "_pctOfBar", "pxToMove", "movement", "decimal", "_setValues", "isLeftHndl", "dim", "handlePct", "floor", "handlePos", "initialStart", "moveTime", "changedDelay", "initVal", "initialEnd", "direction", "eventOffset", "barDim", "windowScroll", "scrollLeft", "elemOffset", "eventFromBar", "barXY", "offsetPct", "_value", "_adjustValue", "firstHndlPos", "absPosition", "secndHndlPos", "div", "previousVal", "nextVal", "_eventsForHandle", "curHandle", "handleChangeEvent", "_handleEvent", "clickSelect", "draggable", "_$handle", "oldValue", "newValue", "decrease", "increase", "decreaseFast", "increaseFast", "invertVertical", "frac", "num", "clickPos", "log", "Sticky", "$container", "wasWrapped", "container", "stickyClass", "scrollCount", "checkEvery", "isStuck", "containerHeight", "elemHeight", "_parsePoints", "_setSizes", "scroll", "_calc", "_removeSticky", "topPoint", "reverse", "topAnchor", "btm", "btmAnchor", "pts", "breaks", "place", "canStick", "_eventsHandler", "_pauseListeners", "checkSizes", "bottomPoint", "_setSticky", "stickTo", "mrgn", "notStuckTo", "isTop", "stickToTop", "anchorPt", "anchorHeight", "topOrBottom", "bottom", "stickyOn", "newElemWidth", "comp", "pdngl", "pdngr", "dynamicHeight", "newContainerHeight", "_setBreakPoints", "mTop", "emCalc", "marginTop", "mBtm", "marginBottom", "em", "fontSize", "Tabs", "$tabTitles", "linkClass", "linkActiveClass", "matchHeight", "_setHeight", "anchorNoHash", "selectTab", "_collapse", "_addKeyHandler", "_addClickHandler", "_setHeightMqHandler", "_handleTabChange", "wrapOnKeys", "historyHandled", "activeCollapse", "$oldTab", "$tabLink", "$targetContent", "_collapseTab", "panelActiveClass", "$targetAnchor", "$activeTab", "idStr", "hashIdStr", "has", "panelClass", "panel", "Toggler", "toggler", "$trigger", "controls", "containsId", "_updateARIA", "undefined", "Tooltip", "isClick", "tipText", "template", "_buildTemplate", "allowHtml", "triggerClass", "elementClassName", "SVGElement", "baseVal", "tooltipWidth", "tooltipHeight", "templateClasses", "tooltipClass", "$template", "showOn", "fadeIn", "fadeInDuration", "fadeOutDuration", "isFocus", "disableForTouch", "touchCloseText", "tabs", "ResponsiveAccordionTabs", "storezfData", "currentRule", "_getAllOptions", "allOptions", "dummyPlugin", "tmpPlugin", "keyKey", "objObj", "_changedZfMediaQueryHandler", "_handleMarkup", "toSet", "fromString", "$panels", "tabsTitle", "tabsPanel", "$liHeads", "$liHeadsA", "display", "visibility", "$tabsContent", "$placeholder", "tempValue", "CoreUtils", "matchMedia", "isEventSupported", "is", "feature", "test", "version", "import_jquery", "$", "n", "e", "i", "t", "o", "r", "s", "a", "u", "c", "d", "f", "$", "h", "l", "g", "v", "p", "m", "event", "error", "match", "oldValue", "error", "constructor", "functionName", "element", "cookie", "error", "get", "get", "get", "response", "jqueryUjsInit", "$", "Turbolinks"]
}
